peterdewit/mcp-genealogy-memory
If you are the rightful owner of mcp-genealogy-memory and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Genealogy Memory MCP Server is a production-ready, self-contained genealogy research memory server designed to operate as an MCP tool for LLM agents.
Genealogy Memory MCP Server
A production-ready, self-contained genealogy research memory server designed to operate as an MCP tool for LLM agents. This service stores structured genealogical data such as persons, events, addresses, relationships, sources, and attachments, while providing a clean tool API for automated research agents.
This README covers:
- Overview
- Features
- Requirements
- Directory structure
- Installation
- Deployment
- Resetting the database
- Backup and restore
- Tools reference (summary)
- Let's Encrypt TLS (Traefik)
- Troubleshooting
- License
Overview
The Genealogy Memory MCP Server exposes tool endpoints an AI agent can call to:
- Add and search persons
- Record events, addresses, professions, relationships
- Store metadata on archival sources
- Log web crawls
- Save attachments
- Track duplicates and verification status
Backend: PostgreSQL 16 Server: Python FastAPI + MCP
Features
- Full genealogy data model
- Modular MCP tool definitions
- Safe UUID-based primary keys
- Crawl log for avoiding repeated scraping
- Attachments metadata + optional downloader
- Relationship mapping and duplicate marking
- Ready for containerized deployment
Requirements
- Docker
- Docker Compose (v2 recommended)
- Python 3.11+ if running outside containers
Optional production components:
- Traefik (reverse proxy)
- Let's Encrypt TLS
- Offsite backups
Directory Structure
genealogy-memory-mcp/
├── Dockerfile
├── server.py
├── schema.sql
├── requirements.txt
├── reset_genealogy_memory.sh
├── docker-compose.production.yml
├── docker-compose.override.yml
└── .env.example
Installation
1. Clone repository
git clone https://github.com/yourname/genealogy-memory-mcp.git
cd genealogy-memory-mcp
2. Copy environment file
cp .env.example .env
Adjust credentials if needed.
3. Build the container
docker build -t genealogy-memory-mcp .
Deployment
Use:
docker compose -f docker-compose.yml --env-file .env up -d
Production includes:
- Restart policies (
restart: always) - Healthchecks for both services
- Named volume for stable database storage
Environment Variables
Set these in .env:
DB_HOST=genealogy-memory-db
DB_PORT=5432
DB_NAME=genealogy
DB_USER=genealogy
DB_PASSWORD=your_secure_password
Resetting the Database
Use the reset tool:
./reset_genealogy_memory.sh
This will:
- Stop containers
- Remove containers
- Destroy
db-datadirectory (orDATA_DIRoverride) - Recreate PostgreSQL
- Apply
schema.sql
Override paths:
DATA_DIR=/custom/dir SCHEMA_FILE=./schema.sql ./reset_genealogy_memory.sh
This erases all genealogy data.
Backup & Restore
Backup PostgreSQL
docker exec genealogy-memory-db pg_dump -U genealogy genealogy > backup.sql
Restore
cat backup.sql | docker exec -i genealogy-memory-db psql -U genealogy -d genealogy
Tools Reference (Summary)
Below is a concise summary of the MCP tools exposed by this server. Each tool is available to any MCP-compatible client or agent.
Person Tools
- add_person – Create a new person record.
- get_person – Retrieve a person by UUID.
- find_persons_simple – Search by partial name.
- set_person_verified – Mark a person as verified/unverified.
- set_person_status – Update research status and notes.
Source Tools
- add_source – Add metadata for archival or external records.
Event Tools
- add_event – Add life events (birth, marriage, death, etc.).
- list_person_events – List events for a person.
Profession Tools
- add_profession – Add a job or occupation.
- list_person_professions – List all jobs for a person.
Address Tools
- add_address – Add address or residence information.
- list_person_addresses – List addresses for a person.
Attachment Tools
- add_attachment – Add metadata for attached files.
- add_attachment_metadata – Register downloadable attachments.
- fetch_attachments_for_person – Download attachments flagged for fetching.
Comment Tools
- add_comment – Add a free-text comment.
- list_person_comments – List comments for a person.
Relationship Tools
- add_relationship – Create relationships (parent, spouse, sibling, etc.).
- get_person_relationships – Get relationships for a person.
- set_possible_duplicate_of – Mark a record as a possible duplicate.
Crawl Tools
- log_crawl – Log crawled URL metadata.
- get_unprocessed_crawls – List crawl entries needing processing.
- mark_crawl_processed – Mark a crawl record as processed.
Let's Encrypt TLS (Traefik)
To run the MCP server behind HTTPS using Traefik/Let's Encrypt:
Requirements
- A domain name (example:
genealogy.yourdomain.com) - DNS pointing to your server's public IP
- Traefik running as reverse proxy
- Ports 80 and 443 open
Example Traefik labels
Add to the MCP service in production compose:
labels:
- "traefik.enable=true"
- "traefik.http.routers.genealogy.rule=Host(`genealogy.yourdomain.com`)"
- "traefik.http.routers.genealogy.entrypoints=websecure"
- "traefik.http.routers.genealogy.tls.certresolver=letsencrypt"
- "traefik.http.services.genealogy.loadbalancer.server.port=8020"
This exposes:
https://genealogy.yourdomain.com
with automatic TLS from Let's Encrypt.
Traefik must be set up separately with:
- ACME storage (
acme.json) - Let's Encrypt resolver
- Web & websecure entrypoints
Troubleshooting
Postgres not ready
If API shows connection failures, ensure:
docker exec genealogy-memory-db pg_isready -U genealogy -d genealogy
MCP not reachable
Check logs:
docker logs genealogy-memory
Container crashes on start
Likely a schema mismatch:
docker exec -it genealogy-memory-db psql -U genealogy -d genealogy -c "\dt"
Confirm tables exist.
License
MIT