FamilySearch MCP Server

FamilySearch MCP Server

Enables AI assistants to search FamilySearch's Family Tree, view person details, explore ancestors and descendants, and search historical records using browser session authentication.

Category
Visit Server

README

FamilySearch MCP Server

A local Model Context Protocol (MCP) server for FamilySearch. Gives AI assistants access to search the Family Tree, view person details, explore ancestors and descendants, and search historical records.

Features

  • Family Tree search — find individuals by name, dates, places, and gender
  • Person details — view a person card by ID
  • Pedigree exploration — ancestors (up to 8 generations) and descendants (up to 3)
  • Historical records — search record collections
  • Browser session auth — log in once with Brave; no FamilySearch API key required

How it works

FamilySearch does not approve direct API access for most personal projects. This server reuses your browser session cookies and calls the same internal /service/ endpoints the website uses. Your session is stored locally at ~/.familysearch-mcp/config.json.

Prerequisites

  • Node.js 18+ and npm
  • Brave browser — Playwright's bundled Chromium is blocked by FamilySearch bot detection
  • A free FamilySearch account

Installation

1. Clone and build

git clone https://github.com/JonathanReiss15/familysearch-mcp.git
cd familysearch-mcp
npm install
npm run build

2. Log in to FamilySearch

npm run login

This opens Brave with a dedicated profile. Sign in when prompted. Your session is saved to ~/.familysearch-mcp/config.json.

Tip: You can also ask your AI assistant to run the login-with-browser tool after the MCP is connected.

3. Configure your MCP client

Add the server to your client using stdio transport. Replace /path/to/familysearch-mcp with the absolute path to this repo.

Recommended config (uses cwd so you don't need absolute paths in args):

{
  "mcpServers": {
    "familysearch": {
      "command": "node",
      "args": ["build/index.js"],
      "cwd": "/path/to/familysearch-mcp"
    }
  }
}

Run npm run build whenever you pull changes.


MCP client setup

Cursor

Project-scoped — create .cursor/mcp.json in your project (or add globally in Cursor Settings → MCP):

{
  "mcpServers": {
    "familysearch": {
      "command": "node",
      "args": ["build/index.js"],
      "cwd": "/path/to/familysearch-mcp"
    }
  }
}

Restart Cursor or reload MCP servers after saving.

Claude Desktop

Edit claude_desktop_config.json:

Platform Config path
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "familysearch": {
      "command": "node",
      "args": ["build/index.js"],
      "cwd": "/path/to/familysearch-mcp"
    }
  }
}

Restart Claude Desktop after saving.

Claude Code

From the repo directory:

claude mcp add familysearch -- node build/index.js

Or with an absolute path from anywhere:

claude mcp add familysearch -- node /path/to/familysearch-mcp/build/index.js

Verify with claude mcp list.

Codex

From the repo directory (after npm run build):

codex mcp add familysearch -- node build/index.js

Or add to ~/.codex/config.toml:

[mcp_servers.familysearch]
command = "node"
args = ["build/index.js"]
cwd = "/path/to/familysearch-mcp"

Use /mcp in Codex to confirm the server is connected.

This repo also includes .codex/config.toml for project-scoped config when the directory is trusted.

VS Code

Add to your user MCP config (Command Palette → MCP: Open User Configuration) or .vscode/mcp.json in a workspace:

{
  "servers": {
    "familysearch": {
      "command": "node",
      "args": ["build/index.js"],
      "cwd": "/path/to/familysearch-mcp"
    }
  }
}

Windows

If node is not found, use the full path to your Node executable. For clients that struggle with direct node invocation, wrap with cmd:

{
  "mcpServers": {
    "familysearch": {
      "command": "cmd",
      "args": ["/c", "node", "build/index.js"],
      "cwd": "C:\\path\\to\\familysearch-mcp"
    }
  }
}

Authentication

Option 1: Browser login (recommended)

npm run login

Opens Brave (not headless Chromium) to avoid FamilySearch bot detection.

Option 2: Copy cookies manually

  1. Log in at familysearch.org
  2. In DevTools → Console, run: copy(document.cookie)
  3. Use the set-session-cookie MCP tool with the copied string

The full cookie string is required — bot protection cookies like reese84 and incap_ses_* must be included, not just fssessionid.


Tools

Tool Description
login-with-browser Open Brave, log in, and save session locally
set-session-cookie Authenticate by pasting cookies from your browser
get-current-user View your authenticated account info
search-persons Search individuals in the Family Tree
get-person Get details for a person by ID
get-ancestors View ancestors (default 4 generations, max 8)
get-descendants View descendants (default 2 generations, max 3)
search-records Search historical record collections

Example prompts

Search for persons named "John Smith" born in "New York"
Get person with personId G2KQ-JTH
Get 4 generations of ancestors for personId G2KQ-JTH
Search historical records for surname "Reiss" in "Pennsylvania"

Troubleshooting

Problem Fix
"Not authenticated" errors Run npm run login or use set-session-cookie
Session expired / 401 errors Re-run npm run login
"Request blocked by FamilySearch security (error 15)" Re-run npm run login to refresh bot-protection cookies
Brave not found Install Brave or set BRAVE_PATH to your Brave executable
MCP tools not appearing Confirm npm run build succeeded and restart your MCP client
node not found Use the full path to your Node binary in the MCP config

Security

  • Session cookies are stored locally in ~/.familysearch-mcp/config.json
  • They grant the same access as your browser session — never share this file
  • Sessions expire after inactivity; re-authenticate when tools return auth errors
  • This server runs locally over stdio; no data is sent to third parties

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured