loading…
Search for a command to run...
loading…
Analyzes genealogy trees to detect errors, duplicates, and timeline inconsistencies while identifying missing source citations. It generates detailed audit repo
Analyzes genealogy trees to detect errors, duplicates, and timeline inconsistencies while identifying missing source citations. It generates detailed audit reports and prioritized research leads to help users maintain accurate and well-documented family histories.
Family tree analysis and error detection for Claude Code via MCP
Analyze genealogy trees for errors, duplicates, timeline issues, and missing sources through Claude's Model Context Protocol.
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tree-analyzer": {
"command": "python",
"args": ["-m", "tree_analyzer_mcp.server"],
"cwd": "/path/to/tree-analyzer-mcp-standalone"
}
}
}
docker run -v /path/to/data:/app/data tree-analyzer-mcp
git clone https://github.com/ibarrajo/tree-analyzer-mcp
cd tree-analyzer-mcp
pip install -e .
| Tool | Description |
|---|---|
detect_name_duplicates |
Find potential duplicate persons using fuzzy name matching |
validate_timeline |
Check for impossible dates, age issues, parent-child age gaps |
check_relationships |
Detect circular ancestry and structural tree problems |
analyze_source_coverage |
Find persons and events missing source citations |
generate_person_profile |
Create detailed Markdown profile for a person |
generate_audit_report |
Comprehensive tree audit with all issues and statistics |
generate_research_leads |
Prioritized next-steps for genealogy research |
compare_persons |
Deep comparison of two persons to identify duplicates |
Ask Claude Code:
Find potential duplicate persons in my family tree
Claude will use:
detect_name_duplicates(
surname_filter="Smith", # Optional: focus on specific surname
similarity_threshold=0.8
)
Ask Claude Code:
Check my family tree for timeline errors and impossible dates
Claude will use:
validate_timeline(
person_id=None, # None = check entire tree
max_parent_age=60,
min_parent_age=14
)
Ask Claude Code:
Create a comprehensive audit report for my 8-generation tree starting with person GK1Y-97Y
Claude will use:
generate_audit_report(
root_person_id="GK1Y-97Y",
generations=8,
sections=["all"]
)
Ask Claude Code:
Which ancestors are missing source citations?
Claude will use:
analyze_source_coverage(
root_person_id="GK1Y-97Y",
min_sources_per_person=1
)
# Clone repository
git clone https://github.com/ibarrajo/tree-analyzer-mcp
cd tree-analyzer-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=src --cov-report=html
# Lint code
ruff check src
black --check src
mypy src
# Format code
black src
ruff check --fix src
Claude Code
↓
MCP Protocol (stdio)
↓
tree-analyzer-mcp (Python)
↓
┌──────────────────┬──────────────────┐
│ familysearch-mcp │ research-sources │
│ cache.sqlite │ -cache.sqlite │
└──────────────────┴──────────────────┘
↓
Analysis & Reports
Optimized for Spanish/Latin American naming conventions:
detect_name_duplicatesFind potential duplicate persons using fuzzy matching.
Parameters:
surname_filter (optional): Focus on specific surnamesimilarity_threshold (optional): Minimum similarity score (0.0-1.0, default 0.75)Returns: Markdown report with name clusters and similarity scores
validate_timelineCheck for impossible dates and age issues.
Parameters:
person_id (optional): Check specific person (None = entire tree)max_parent_age (optional): Maximum age for having children (default 60)min_parent_age (optional): Minimum age for having children (default 14)max_lifespan (optional): Maximum human lifespan (default 120)Returns: Markdown report with timeline errors and recommendations
check_relationshipsDetect structural tree problems.
Parameters:
person_id (optional): Starting person (None = check all)check_types (optional): Types of checks ["circular", "orphans", "marriages"]Returns: Markdown report with relationship issues
analyze_source_coverageFind persons and events missing sources.
Parameters:
root_person_id (required): Starting person for analysisgenerations (optional): Number of generations to analyze (default 8)min_sources_per_person (optional): Minimum sources required (default 1)Returns: Markdown report prioritized by generation proximity
generate_person_profileCreate detailed profile for one person.
Parameters:
person_id (required): FamilySearch person IDReturns: Markdown profile with all facts, relationships, sources
generate_audit_reportComprehensive tree audit report.
Parameters:
root_person_id (required): Starting persongenerations (optional): Depth to analyze (default 8)sections (optional): Sections to include (default ["all"])Returns: Full Markdown audit with statistics, issues, recommendations
generate_research_leadsPrioritized research suggestions.
Parameters:
root_person_id (required): Starting personfocus_area (optional): "missing_sources", "timeline_errors", "duplicates"Returns: Markdown report with actionable next steps
compare_personsDeep comparison of two persons.
Parameters:
person_id_a (required): First person IDperson_id_b (required): Second person IDReturns: Markdown comparison table with similarity score
All reports are Markdown format with:
https://www.familysearch.org/tree/person/details/{PID})Example report sections:
See CONTRIBUTING.md for development guidelines.
MIT License - see LICENSE file for details.
Built as part of the FamilySearch genealogy research system. Part of a suite of MCP servers:
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"tree-analyzer-mcp-server": {
"command": "npx",
"args": []
}
}
}PRs, issues, code search, CI status
Database, auth and storage
Reference / test server with prompts, resources, and tools.
Secure file operations with configurable access controls.