Skip to main content
Glama
fold3-com-mcp

fold3-com-mcp

by ball2jh

fold3-com-mcp

An MCP server for Fold3, Ancestry's military-records site. It covers:

  • search across service records, pension files, muster rolls, draft cards, casualty lists, census and newspapers;

  • reading files, pages, index records, census lines and memorials;

  • browsing a collection's tree;

  • full-resolution page images.

It calls the site's own services from Node. It signs in through the Ancestry session that ancestry-com-mcp already saved (Fold3's "Sign in with Ancestry"), so there is no browser or password. It is read-only.

Tools

Tool

Actions

What for

fold3_search

search, facets

Hits with their type, collection, index fields and matched values; facet counts to choose filters.

fold3_record

get

A FILE (index fields, every page's image id, access, citation), IMAGE, INDEX_RECORD, SUB_IMAGE (a census line) or MEMORIAL (facts and linked Ancestry records).

fold3_collection

list, get, browse

Find collections, read one (access level, NARA publication), and walk its browse tree (state › surname › given name › file).

fold3_download

image, file

Page images at full resolution (stitched from the viewer's tiles), inline or to disk; a whole file to a directory with a SHA-256 manifest.

fold3_session

status, login

Whether the session is signed in and what the account may open.

fold3_raw_request

get, post

Read-only requests to Fold3's services, and POST only to the search.

What the search does, and why (each point checked against live counts; see docs/endpoints.md):

  • Person dates use the person fields. birthYear, deathYear and serviceYear map to date.vital.birth, date.vital.death and date.military. Fold3's generic date filter matches collection date spans: a 1775-2019 gravesite index matches any year. That filter is offered as coverageYear and described as such.

  • name matches every name indexed in a file, witnesses included; matched shows why a hit came back.

  • [Blank] index fields are dropped. Fold3 lists every field of a collection's schema on every record.

  • /record/ URLs are resolved by their slug. Index records and census lines share ids (61017601 is both).

Access: searching and index data need no subscription. Images need an account that may view the collection. The user's account (linked to their Ancestry login) is a Fold3 non-subscriber, so PUBLIC collections (the War of 1812 pension files, among others) open and SUBSCRIBER ones say they need a subscription.

Related MCP server: X Browser MCP

Setup

Requirements: Node 26+ (runs TypeScript directly) and pnpm; no browser.

pnpm install

.mcp.json:

{ "mcpServers": { "fold3": { "command": "node", "args": ["/path/to/fold3-com-mcp/src/server.ts"],
  "env": { "ANCESTRY_SESSION_FILE": "/path/to/ancestry-com-mcp/.session.json", "FOLD3_SESSION_FILE": "/path/to/fold3-com-mcp/.session.json" } } } }
  • ANCESTRY_SESSION_FILE (default ~/Projects/ancestry-com-mcp/.session.json) is only read, never written.

  • FOLD3_SESSION_FILE (default .session.json in this checkout, mode 600, git-ignored) keeps the Fold3 cookies.

  • FOLD3_MIN_INTERVAL_MS (default 250) spaces requests.

Tests

  • pnpm test: unit tests on recorded responses (test/fixtures, re-recorded with node scripts/record-fixtures.ts, which strips tokens and the account id). No network.

  • pnpm mcp-test: live, over stdio. It calls every action and error path, checks sizes, and downloads a few pages to a temp directory. It also runs a count comparison for every search filter: a real value must narrow the total and a nonsense value must give about zero.

  • pnpm typecheck.

Caveats

  • Fold3's index is transcribed by volunteers and staff. Read the images for anything that matters, and cite the file (fold3_record get returns a citation for a FILE).

  • A search reaches only its first 10,000 hits and returns at most 50 per call.

  • A full-resolution page is 20 to 60 tiles, so it takes several seconds. fold3_download file fetches at most 40 pages per call and keeps pages already on disk.

Available Tools

6 tools
fold3_collectionFold3 collectionsA
Read-onlyIdempotent

Fold3's collections ("titles", about 1,000). Actions:

  • list: collections whose title contains all the given words (name), with record counts, e.g. name "1812 pension" or "Confederate Tennessee".

  • get: one collection (needs collectionId): full title, description, source and NARA publication/catalog numbers, access level (free or subscription), record count, browse levels.

  • browse: walk a collection's browse tree (needs collectionId; path = labels chosen so far). War of 1812 Pension Files: [] → states, ["South Carolina"] → surnames, ["South Carolina","Hunt"] → given names, ["South Carolina","Hunt","Joseph"] → the file(s) with ids. Levels list up to 5,000 entries; contains narrows a long level.

Inputs: action (required), name, path, count, +3 more.

fold3_downloadDownload Fold3 imagesA
Idempotent

Fetch Fold3 page images at up to full resolution (stitched from the viewer's tiles; the site's own download is capped at 1600 px). Actions:

  • image: one page (needs imageId, from fold3_record get or a hit's imageId). Without outPath it is returned inline for reading, scaled to maxSide (default 1600); with outPath the full resolution is written unless maxSide is given.

  • file: the pages of a multi-page file (needs fileId and outDir), written as page-01.jpg, page-02.jpg, … with a manifest.json (ids, sizes, SHA-256). Pages already on disk are kept. At most 40 pages per call (a full-resolution page takes several seconds); continue with start. Works for collections this account may view (free ones such as the War of 1812 pensions); it signs in through Ancestry by itself when needed, and says so when a collection needs a subscription.

Inputs: action (required), count, start, fileId, +4 more.

fold3_raw_requestRaw Fold3 requestA
Read-onlyIdempotent

A read-only request to Fold3's own services for data the other tools lack: GET any path under /fold31/, /fold31-search/, /fold31-image-data/, /fold31-index-record/, /fold31-memorial/, or POST a DocumentQuery to /fold31-search/doc-search. docs/endpoints.md lists the useful paths. Prefer the other tools: their results are projected to fit and their filters are checked.

Inputs: action (required), body, path.

fold3_recordRead a Fold3 recordA
Read-onlyIdempotent

Read one Fold3 document. Action get: needs id + type (as a search hit reports them) or url (a fold3.com /file/, /image/, /record/ or /memorial/ page).

  • FILE: title, collection and its access, index fields ("[Blank]" fields dropped), page count, every page's imageId, whether this account may view it, and a citation. Long files page with start/count.

  • IMAGE: the page's title, file, index fields, size and whether it is viewable.

  • INDEX_RECORD / SUB_IMAGE: the index fields; a SUB_IMAGE (a person's line on a census page) names its imageId and line.

  • MEMORIAL: facts, stories, and the Ancestry records Fold3 linked (collectionId + recordId for ancestry_record get). Images themselves come from fold3_download.

Inputs: action (required), id, url, type, +2 more.

fold3_sessionFold3 sessionA
Idempotent

The Fold3 sign-in. status: whether the saved session is signed in, the account's status (subscriber or not) and premium access. login: sign in through the Ancestry session that ancestry-com-mcp saved (Fold3's own "Sign in with Ancestry"); no browser or password, but it needs a valid Ancestry session (ancestry_session status). Downloads sign in by themselves when needed, so login is rarely called directly.

Inputs: action (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 6 tools

    Disambiguation4/5

    The six tools are mostly distinct: search, record, collection, download, session, and raw request each target a different concern. Some overlap exists between fold3_record and fold3_download (both handle images), and fold3_raw_request could duplicate the others, but the descriptions clarify boundaries.

    Naming Consistency4/5

    All tools use a consistent fold3_ prefix with a noun indicating the resource (search, record, collection, download, session, raw_request). The pattern is predictable, though fold3_raw_request is slightly less verb-like than the others.

    Tool Count5/5

    Six tools is well-scoped for a domain-specific server covering search, retrieval, browsing, downloading, session management, and a fallback raw request. Each tool has a clear purpose and the count feels appropriate.

    Completeness4/5

    The server covers the core workflow: search, inspect records, browse collections, download images, and manage session. Minor gaps exist (e.g., no explicit way to list all collections or handle saved records), but the raw request tool fills edge cases.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to search FamilySearch's Family Tree, view person details, explore ancestors and descendants, and search historical records using browser session authentication.
      7 npm
      6
      MIT
    • F
      license
      B
      quality
      C
      maintenance
      Enables browser-based Twitter/X research and account workflows through a signed-in browser, supporting search, timeline/profile reads, saved searches, snapshot exports, and prepared account actions without requiring an X developer API key.
      25
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides read-only access to the Internet Archive's Wayback Machine and catalog, enabling retrieval of archived web captures, snapshot metadata, and catalog search.
      28 PyPI
      BSD 3-Clause
    • A
      license
      A
      quality
      B
      maintenance
      Enables direct interaction with FamilySearch.org's shared Family Tree and historical records, including reading and adding people, facts, relationships, sources, notes, memories, record search, and image downloads, without needing a browser.
      3
      9
      MIT