# FamilySearch [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/ianderso/familysearch-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/familysearch

## Description
Genealogical research on FamilySearch: historical places, indexed records, page images, the tree.

## Tools
Capabilities this server exposes over MCP:

- **search_places** — Resolve a place name to its full jurisdictional form and coordinates.
- **search_places_at_date** — Resolve a place *as it was* in a given year. A record naming a county that no longer exists is normal; filing it under the modern one is an invisible error.
- **get_place** — Read one place: jurisdictional chain, type, coordinates, and the dates that jurisdiction existed.
- **get_place_jurisdictions** — Walk the containment chain upward — what turns "Kaskaskia" into "Kaskaskia, Randolph, Illinois, United States".
- **get_place_children** — The places directly inside a jurisdiction — the downward walk.
- **search_records** — Search historical records by name, life events, parents, spouse, record type or collection. Every criterion filters, and the result says which FamilySearch applied exactly, relaxed or ignored. Returns one hit per record, with the others named on it.
- **get_record** — Read one indexed record in full: every person on it and the labelled fields behind each.
- **get_record_image** — Find the document image a record came from, or the film number when no image was published.
- **get_records_on_image** — Every record indexed from one image. A census page carries forty people.
- **fulltext_search** — Search the handwriting-recognised text of page images, mostly deeds, wills, probate and court files, for a name or phrase anywhere on the page. A machine reading: open the image and cite that.
- **search_collections** — Find a record collection by the words of its title, with its coverage, and how big and how old the cached catalogue is.
- **get_collection** — Read one collection: what it covers and how much of it there is.
- **get_collection_fields** — Decode a collection's indexed field codes (`PR_FTHR_NAME` → "Father's Name").
- **browse_waypoints** — Browse a collection's places, volumes and images, to reach pages the index never covered.
- **get_catalog_entry** — Read a FamilySearch Catalog entry: title, authors, places, notes, and each film or DGS with its description, image count and whether you can view it. `contains` narrows an entry of thousands to the volume or case you want; `film_number` finds the entry, and the volume, from a bare DGS or microfilm…
- **get_image_links** — Resolve an image ark to fetchable URLs: full page, deep zoom, thumbnails, neighbouring pages, and with a token the film and image number a citation needs. Without a token only the navigation comes back.
- **get_film_image** — Reach a page by film and image number when a citation gives those instead of an ark. Checking the page exists needs no token.
- **download_image** — Download a page image to a new local file so it can be read.
- **get_person** — Read a shared-tree person: names, sex, facts.
- **get_person_relatives** — Parents, spouses, children and siblings in one call.
- **get_person_sources** — What the tree attaches as sources, and which facts each supports. The fastest route out of the tree.
- **get_ancestry** — Pedigree walk back, up to 8 generations, numbered by Ahnentafel.
- **get_descendancy** — Pedigree walk forward, up to 4 generations.
- **get_person_memories** — Attached photographs, documents and stories.
- **get_person_changes** — The change log: who edited this profile, when, and why.
- **get_matches** — FamilySearch's own duplicate and record-match candidates.
- **compare_person** — Compare your own record of a deceased person with their profile: what agrees, what the profile lacks, what differs, and one proposed change per packet for you to make by hand.
- **auth_status** — Report what is configured, what is missing, and whether FamilySearch still accepts the token.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "familysearch": {
    "command": "uvx",
    "args": ["familysearch-mcp"],
    "env": {
      "FS_ACCESS_TOKEN": "",
      "FS_ENV_FILE": "",
      "FS_CLIENT_ID": "",
      "FS_ENVIRONMENT": "",
      "FS_TIMEOUT": ""
    }
  }
}
```

**Requires environment variables:** `FS_ACCESS_TOKEN`, `FS_ENV_FILE`, `FS_CLIENT_ID`, `FS_ENVIRONMENT`, `FS_TIMEOUT` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What the FamilySearch MCP server does

The FamilySearch MCP server supports research across several layers of genealogical material. Place tools resolve names, coordinates, jurisdictional relationships, and the historical dates during which jurisdictions existed. Date-aware place lookup is useful when an old record refers to a county or other jurisdiction that has since changed.

Record tools search indexed historical records using names, life events, relatives, record types, and collections. Results identify how search criteria were handled, and record-reading tools expose the indexed fields for every person on a result. The server can then locate the source image, list all records indexed from that image, or search machine-recognized text in page images.

Collection tools describe coverage and indexed fields, browse places and volumes, and inspect catalog entries with film or DGS details. Image tools resolve image identifiers, locate pages from film and image numbers, and save a fetched page to a local file. Shared-tree tools read people, relatives, sources, pedigrees, memories, edits, and FamilySearch match suggestions.

## How it works

The server communicates with MCP clients over stdio. You normally add its launch command to the client configuration rather than starting a persistent process yourself. It exposes read operations against FamilySearch; `download_image` additionally writes the retrieved page image to a local file.

Some capabilities work without credentials. Place lookup, collection catalog searches, collection details, field decoding, and film browsing are available anonymously. Searches for records, indexed record details, most image access, and shared-tree operations use a FamilySearch access token. `auth_status` reports the current configuration and whether the token remains accepted.

Treat shared-tree results as research leads rather than evidence. Profiles are community edited and may combine people with similar names. A practical workflow is to inspect the profile's attached sources, find the underlying indexed record, and continue to the document image where available. `compare_person` reports differences and drafts possible changes for a deceased person, but does not apply edits or merge profiles.

## Setup and configuration

Install the FamilySearch MCP server with `uvx familysearch-mcp`. The default transport is stdio. Claude Desktop can launch it with `uvx` and an optional `FS_ENV_FILE`; Claude Code can add the same command through its MCP registration command. With no token configured, the anonymous tools remain usable.

Credentials come from a FamilySearch application registered by the user. The package does not include a client ID and does not handle a FamilySearch password. Set `FS_ACCESS_TOKEN` for the bearer token, or point `FS_ENV_FILE` at an environment file. `FS_CLIENT_ID` identifies the registered application for authentication status reporting. `FS_ENVIRONMENT` selects production or the integration sandbox, and `FS_TIMEOUT` sets the HTTP timeout in seconds.

An environment file is useful when a token is refreshed because the server can reread it during a session. The default environment-file lookup starts with the nearest `.env` file and moves upward from the working directory.

## Tools and capabilities

- Resolve places generally or as they existed in a specified year.
- Walk upward to a place's jurisdictions or downward to its children.
- Search records and inspect indexed people, fields, source images, and neighboring records.
- Search recognized page text and browse collections, catalog entries, volumes, and images.
- Resolve image ARKs or film/image citations, then download a page locally.
- Read tree profiles, relationships, sources, ancestry up to eight generations, and descendancy up to four generations.
- Inspect memories, profile changes, duplicate candidates, and proposed comparison changes.

## Limitations and notes

The FamilySearch MCP server depends on FamilySearch services, including an undocumented website search service for record queries and full-text search. Those services can change or become unavailable. The record API's own index is partial, so results from the website-backed search should still be checked against the indexed record and original image.

Image navigation without a token returns navigation information only in some cases; fetching page content and citation details may require authentication. Collection and catalog data may come from a cached catalogue, whose size and age are exposed by the relevant tools.

No tool writes changes to FamilySearch. Comparison output is advisory: the researcher must review the record and make any tree change manually. The project is independent and is not made, endorsed, or supported by FamilySearch.

_Full upstream README: https://allmcps.com/mcp/familysearch/readme_

