geni-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@geni-mcpshow my immediate family tree"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
geni-mcp
An MCP (Model Context Protocol) server that gives Claude access to Geni — the collaborative genealogy platform. Use Claude to browse, search, correct, and extend your family tree.
Features
Tool | Description |
| Start the OAuth flow — get the URL to authorize Claude |
| Complete OAuth — exchange the code for tokens |
| Get your own Geni profile |
| Look up any profile by ID |
| Correct names, dates, locations, biography |
| Add a new person to Geni |
| Get parents, siblings, spouses, children |
| Find relationship path between two profiles |
| Get a family unit (couple + children) |
| Add a parent, child, sibling, or spouse |
| Search by name with optional birth/death filters |
| Find potential duplicate profiles |
| Merge a duplicate into a base profile |
Related MCP server: Codelens-MCP
Prerequisites
A Geni account at geni.com
A registered Geni app — create one at geni.com/platform/developer/apps
Node.js 20+
Setup
1. Clone & install
git clone https://github.com/raphink/geni-mcp.git
cd geni-mcp
npm install
npm run build2. Create a Geni developer app
Create a new app
Set the Redirect URI to:
Local use:
http://localhost:3000/oauth/callbackGCP Functions:
https://YOUR_FUNCTION_URL/oauth/callback
Note your App ID (client ID) and App Secret
3. Configure environment variables
export GENI_CLIENT_ID="your_app_id"
export GENI_CLIENT_SECRET="your_app_secret"
export GENI_REDIRECT_URI="http://localhost:3000/oauth/callback"
# Optional — skip OAuth flow if you already have a token:
export GENI_ACCESS_TOKEN="your_access_token"
export GENI_REFRESH_TOKEN="your_refresh_token" # enables auto-renewalRunning locally (Claude Code / Claude Desktop)
Stdio mode (recommended for Claude Code)
Add to your Claude Code MCP config (.claude/mcp.json or ~/.claude/mcp.json):
{
"mcpServers": {
"geni": {
"command": "node",
"args": ["/path/to/geni-mcp/dist/index.js"],
"env": {
"GENI_CLIENT_ID": "your_app_id",
"GENI_CLIENT_SECRET": "your_app_secret",
"GENI_REDIRECT_URI": "http://localhost:3000/oauth/callback"
}
}
}
}Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"geni": {
"command": "node",
"args": ["/path/to/geni-mcp/dist/index.js"],
"env": {
"GENI_CLIENT_ID": "your_app_id",
"GENI_CLIENT_SECRET": "your_app_secret",
"GENI_REDIRECT_URI": "http://localhost:3000/oauth/callback"
}
}
}
}Deploying to GCP Cloud Functions
Secrets are stored in Cloud Secret Manager. Create them once:
echo -n "your_app_id" | gcloud secrets create GENI_CLIENT_ID --data-file=- --project=YOUR_PROJECT
echo -n "your_app_secret" | gcloud secrets create GENI_CLIENT_SECRET --data-file=- --project=YOUR_PROJECTGrant the function's service account access to both secrets, then deploy:
./deploy.shOr manually:
gcloud functions deploy geni-mcp \
--gen2 \
--runtime=nodejs22 \
--region=europe-west1 \
--source=. \
--entry-point=geniMcp \
--trigger-http \
--allow-unauthenticated \
--remove-env-vars="GENI_CLIENT_ID,GENI_CLIENT_SECRET" \
--set-secrets="GENI_CLIENT_ID=GENI_CLIENT_ID:latest,GENI_CLIENT_SECRET=GENI_CLIENT_SECRET:latest"The function exposes two endpoints:
POST /mcp— MCP protocol (StreamableHTTP)GET /oauth/callback— OAuth redirect handler
Using the deployed function with Claude Code
{
"mcpServers": {
"geni": {
"type": "streamable-http",
"url": "https://YOUR_FUNCTION_URL/mcp"
}
}
}Note on token persistence: Cloud Functions are stateless. The OAuth flow issues fresh tokens per session via the built-in MCP OAuth server.
GENI_CLIENT_IDandGENI_CLIENT_SECRETare loaded at runtime from Cloud Secret Manager.
First use — OAuth flow
The first time you use the server (without pre-set tokens), ask Claude:
"Authorize my Geni account"
Claude will:
Call
get_authorization_urland give you a linkYou visit the link in your browser and click "Allow"
Geni redirects to your callback URL with a
codeparameterTell Claude the code (or Claude will read it from the URL)
Claude calls
exchange_codeand you're authenticated
After authenticating, Claude can do things like:
"Find all profiles named 'Johann Schmidt' born in the 1800s in Germany"
"Show me the immediate family of profile-123456789"
"Correct the birth date for profile-123456789 to 15 March 1847 in London, England"
"Find duplicate profiles for profile-123456789 and merge them"
Project structure
src/
index.ts # Stdio MCP server (local use)
gcpFunction.ts # GCP Cloud Functions HTTP handler
tools.ts # MCP tool definitions and handlers
geni-client.ts # Geni REST API client
oauth.ts # OAuth 2.0 flow helpers
types.ts # TypeScript types for Geni API
zod-to-json.ts # Zod → JSON Schema converter
dist/ # Compiled output (after npm run build)Development
npm run dev # Run with tsx (no compile step)
npm run build # Compile TypeScript
npm run lint # Type-check onlyLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Human Lineage MCP server — search and query the public genealogical graph of all humanity
MCP server for Gramps genealogy via the Gramps Web API: CRUD, search, merge, timelines, DNA.
11Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server that lets you search your Claude Code conversation history to find past solutions, track file changes, and learn from previous work.8157 npm178MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude Desktop complete intelligence about any public GitHub repository. Research libraries, compare packages, audit dependencies, and explore codebases through natural conversation.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that reads all your Claude Code project memory files and exposes them as tools. Lets any Claude instance — in any project, or via Claude.ai — query your full project history and preferences.56 npm1MIT
- FlicenseNot gradedqualityBmaintenanceA remote MCP server that gives Claude (and ChatGPT/Gemini) persistent read/write access to your own memory: books, games, projects, notes, and freeform facts.-