FamilySearch
Genealogical research on FamilySearch: historical places, indexed records, page images, the tree.
Connector by ianderso · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying FamilySearch?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/ianderso-familysearch-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 18 read · 1 write · 0 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 19
Read from the source code; the running server may list different tools.
Read 18 · Look things up without changing anything.
auth_statusbrowse_waypointsfulltext_searchget_catalog_entryget_collectionget_collection_fieldsget_film_imageget_image_linksget_placeget_place_childrenget_place_jurisdictionsget_record
Show 6 more tools
get_record_imageget_records_on_imagesearch_collectionssearch_placessearch_places_at_datesearch_records
Write 1 · Create, change, send or run things.
download_image
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
FS_ACCESS_TOKEN
Other settings (environment variables or headers).
FS_CLIENT_IDFS_ENVIRONMENTFS_ENV_FILEFS_TIMEOUT
Network hosts it talks to 7
api-integ.familysearch.org· found in codeapi.familysearch.org· found in codefamilysearch.org· found in codegedcomx.org· found in codegithub.com· found in codeintegration.familysearch.org· found in codesg30p0.familysearch.org· found in code
Files it touches
/tmp/1880-census-p12.jpg- Your home directory (~)
- Any path the agent passes to its tools
Tools (19)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
auth_statusReport whether credentials are configured, and what is missing. With a token configured, also asks FamilySearch whether it is still accepted (`token_accepted`): `authenticated` only means one is set, and a token lasts about an hour. This server ships no client id. Production access needs your own registered FamilySearch application; see docs/AUTH.md.
browse_waypointsBrowse a collection's structure — its places, volumes and images. The way to reach a page the index never covered: collection, then county, volume or date range, then images. An image's ark opens with get_image_links. Start with a collection_id. To descend, pass a child's waypoint_id and the same collection_id: FamilySearch refuses a waypoint without its collection. A collection with nothing to browse says so. Works without a token.
download_imageDownload a document image to a local file so it can be read. This is the step that turns a citation into evidence. The image is written to disk rather than returned inline: a full page scan runs to megabytes, which is not something to push through a tool result. Only FamilySearch image URLs are fetched, because the request carries your access token. Images are copyrighted or access-restricted in some collections. Treat a downloaded file as a working copy for reading, not as something to redistribute.
fulltext_searchSearch the machine-read text of page images: deeds, wills, probate, court files. Finds a name or phrase anywhere on a page, including the witnesses, heirs and neighbours no index names. Each hit is one page image, with the passages that matched. The text is handwriting recognition, a machine reading: open the image with get_image_links, read it yourself, and cite the image, never the text. Coverage is partial, so no result proves nothing. Each hit gives the citation path: collection, record title and image ark. Requires an access token.
get_catalog_entryRead a FamilySearch Catalog entry: title, authors, places, notes, and its films. The Catalog lists the library's holdings. An entry for a county's probate files or deed books lists each film or DGS (digital image group) with a description: volume, case numbers, years. Some run to thousands, so use contains. Each item returned gives its image count and whether this account can view it; open a page with get_film_image(dgs, image). An entry describes holdings, not a record: cite the image you read. Some films are restricted or were never digitised. A DGS number is not the microfilm number. Give…
get_collectionRead one record collection: what it covers, and how much of it there is. Worth reading before trusting a nil result. The counts say how many records, people and images the collection holds, and a collection whose image count is far below its record count was indexed from film that was largely never published. Works without a token.
get_collection_fieldsDecode the field codes a collection's indexed records use. An indexed record labels its values with codes rather than words — `PR_FTHR_NAME`, `EVENT_PLACE`, `PR_NAME_SURN_ORIG`. The codes are per-collection, and this is the dictionary that turns them into "Father's Name", "Event Place" and so on. Read it before interpreting a record from a collection you have not worked with. Works without a token.
get_film_imageReach a page image by film and image number instead of by ark. Citations often name a film (DGS) and an image rather than an ark: get_record_image reports them for an indexed record, and get_catalog_entry lists a volume's DGS numbers and image counts. Checks the thumbnail first, so a wrong film or image number is a clear answer, not a URL that fails later. The thumbnail needs no token; the full page does.
get_image_linksResolve a document image to its actual, fetchable URLs. A record read does not carry image links; the image resource does, and this is it. Returns the storage node, the deep-zoom descriptor, thumbnails at several sizes, and `dist` — the full-resolution page. Also returns the neighbouring pages. A pension file or a passenger manifest runs to many images, and the entry you want is often not the one the index pointed at. With a token it gives the film (image group) and image number, which a citation to the page needs.
get_placeRead one place: its jurisdictional chain, type, coordinates and dates. The dates are the ones that matter for research. A place description records the span over which that jurisdiction existed, so you can check whether the county a record names was the county in being on the date the record was made. Works without credentials.
get_place_childrenList the places directly inside a jurisdiction. The downward walk, complementing get_place_jurisdictions' upward one. Use it to find the right sub-jurisdiction when a record names a town you cannot place, or to see what a county contained at the time. Works without a token.
get_place_jurisdictionsWalk a place's containment chain upward to the country. This is what turns "Kaskaskia" into "Kaskaskia, Randolph, Illinois, United States". The chain is returned innermost first, each level carrying its own id, type and the span over which it existed, so you can see at which level the naming changed. Works without credentials.
get_recordRead one indexed record in full. A search returns a persona: one person's summary of what a record said. This returns the record, which is more: every person named on it, and the indexed fields behind each of them, labelled with the box on the original form each value was read from. The fields are where a search summary loses things -- the informant, the witness, the enumerator's spelling, the age that contradicts the birth year. Each fact gives its value, date and place as FamilySearch reads them, and under original what the indexer transcribed ("M" for "Married"). A date or place with no …
get_record_imageFind the document image an indexed record was taken from. The persona is somebody's reading of the record. The image is the record. Indexers mis-read hands, skip columns, normalise spellings and guess at ages, so anything that matters should be checked against the film. Returns whatever the record offers as a route to the image: image and waypoint links, and the digital film (DGS) and image numbers indexed against it. Many records carry no image link at all, in which case this says so rather than inventing one -- a great deal of the archive was indexed from microfilm that has never been publ…
get_records_on_imageList every record indexed from one image. The reverse of get_record_image. A passenger manifest page carries thirty people and a census page forty; finding one of them tells you where the others are. Use it to pick up a household, or to check whether the person you want was indexed at all from a page you are already reading. Requires an access token.
Show 4 more tools
search_collectionsFind a record collection, so a search can be scoped to one. A collection is one register, census or index. Scoping search_records to its id turns a fishing expedition into a lookup, and a nil result into something that means anything. Each result carries a coverage statement: record types, place, years. Read it: a collection covering 1850 to 1900 cannot answer for 1840. Every word must match a whole word of the title; titles where one only matches inside a word ("Indian" in "Indiana") follow, marked. The first call reads the whole catalogue and caches it; catalogue says how many collections…
search_placesLook up a place in the FamilySearch gazetteer. Resolves a bare place name to its full jurisdictional form and coordinates, which is what a properly-formed place record needs. Each result carries a place id you can pass to get_place or get_place_jurisdictions. If the place name comes from a record with a date on it, prefer search_places_at_date: jurisdictions change, and the modern answer is often the wrong one. Works without credentials.
search_places_at_dateResolve a place as it existed in a particular year. Jurisdictions are not stable. Counties are created, split, renamed and abolished, so a record naming a county that no longer exists is ordinary rather than an error. Filing that record under the modern county that now covers the ground is a common mistake, and an invisible one: the place name still looks plausible, but it sends the next search to the wrong courthouse and the wrong record set. Give it the name as the record spells it and the year of the record. Each result carries the span over which that jurisdiction existed, so you can see…
search_recordsSearch historical records by name, events, relatives, type or collection. Relationship criteria find a man by his wife's or father's name when his own was misindexed. Scoping to a record type or one collection searches one register instead of the whole archive. Every criterion filters, loosely: a record lacking that field still matches, names match variants, years match within 5, places widen. With exact, each must be on the record and match. The result's filters says which criteria were applied exactly, relaxed or ignored, and how: read it before calling a nil result a negative. Pass at le…
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 90
- Last commit
- Oct 11, 2026 (22 days ago)
- Last release
- Oct 11, 2026 (22 days ago)
- Last package publish
- Oct 11, 2026 (22 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.ianderso/familysearch-mcp- Version
- 1.4.0
- Auth
- API key
- Packages
- pypi familysearch-mcp
- License
- MIT
- Repository
- github.com/ianderso/familysearch-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from ianderso
- 0.610score
Polish Archives Indexes
ianderso
Search Geneteka, the Poznań Project and BaSIA for Polish vital records; fetch archive scans.
ConnectorAFreshness: ALocal★ 1↓ 55/wkClaude Code +5 - 0.605score
Gramps Evidence
ianderso
Read/write a self-hosted Gramps Web family tree where every fact carries a citation.
ConnectorAFreshness: ALocal↓ 104/wkClaude Code +5 - 0.597score
German Archives (DDB; BW, NRW, Rhineland-Palatinate and Hesse registers)
ianderso
German archive finding aids (DDB); civil and church registers of BW, NRW, RLP and Hesse.
ConnectorAFreshness: ALocal↓ 58/wkClaude Code +5 - 0.594score
NARA Catalog
ianderso
Genealogical research in the US National Archives Catalog: records, transcriptions, page images.
ConnectorAFreshness: ALocal↓ 51/wkClaude Code +5 - 0.588score
Norway Archives
ianderso
Norway's church books, censuses and scans, National Library books, and place names.
ConnectorAFreshness: ALocal↓ 41/wkClaude Code +5 - 0.587score
UK National Archives Discovery
ianderso
Search the UK National Archives' Discovery catalogue; find Chelsea pensioners' papers in WO 97.
ConnectorAFreshness: ALocalRead-only↓ 39/wkClaude Code +5
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get FamilySearch running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
FamilySearch MCP server. Agent Mart. https://agentmart.dev/connectors/ianderso-familysearch-mcp (last updated 2026-10-24)