@eacpartners/genealogy-mcp
v1.4.1
Published
Local genealogy MCP server. Your GEDCOM and BegatAll files stay on this computer.
Maintainers
Readme
@eacpartners/genealogy-mcp
Local Model Context Protocol server for GEDCOM and BegatAll genealogy files.
The server runs on your computer over standard input and output. Your files are not uploaded. There is no analytics and no network call from the server. Living people are included in answers unless you hide them. export_session still leaves them out unless you opt out.
Requirements
- Node.js 18 or newer (for this launcher)
The package includes a native server for Windows x64, Linux x64, macOS Intel, and macOS Apple silicon. Genealogy files stay on this computer. The .NET runtime is not required.
The launcher runs aot/<rid>/Genealogy.Mcp (.exe on Windows) when that file is present. The native SQLite library is beside it.
The .NET 8 runtime is only a fallback when that file is missing. The launcher then starts dotnet from GENEALOGY_MCP_DOTNET (an absolute path to the executable), from DOTNET_ROOT, or from the standard install folder for this operating system. It does not use the first dotnet on PATH. If the native file and the runtime are both missing, the launcher says the package should include aot/<rid>/ and prints where it looked for dotnet.
Set GENEALOGY_MCP_AOT_EXE to an absolute path to use a different native executable. If that variable is set and the file is missing, the launcher stops. It does not search PATH.
Run
npx -y @eacpartners/genealogy-mcpIncluded builds: Windows x64, Linux x64, macOS Intel, and macOS Apple silicon.
Living people
Read tools include living people unless you hide them. Set GENEALOGY_MCP_HIDE_LIVING=1 (true, yes, and on also hide them) or the shorter GENEALOGY_HIDE_LIVING. You can also pass hideLiving true to load_file, or add hideLiving to the config file:
- Windows:
%LOCALAPPDATA%\genealogy-mcp\config.json - macOS and Linux:
~/.config/genealogy-mcp/config.json
{ "hideLiving": true }The load_file parameter wins, then a recognized environment value, then the config file. When nothing is set, living people are shown. GENEALOGY_MCP_SHOW_LIVING and config showLiving still work. When show and hide are both set at the same level, hide wins. A recognized environment value still wins over the config file.
export_session leaves living people out of the new file even when read tools show them. Pass includeLiving true, or set GENEALOGY_MCP_SHOW_LIVING=1, or set showLiving to true, to keep them. A hide control still leaves them out.
list_media and get_media read media from the loaded package. Links stay inside that package. Thumbnails are limited to 512 KiB, full images to 5 MiB, and package files to 10 MiB.
See the privacy page in the source repository for the full rules.
Parsed-tree cache
An unchanged file is reused from a parsed copy on this computer:
- Windows:
%LOCALAPPDATA%\genealogy-mcp\cache - macOS and Linux:
~/.cache/genealogy-mcp
The copy matches the file you loaded, including people who are hidden in answers. It stays on this computer. A signature on that copy is checked with a key stored beside the config file. Living people are filtered when a tool runs, so this setting still applies. The copy is ignored when the file path, size, last-write time, content hash, signature, or cache format does not match. On macOS and Linux the cache, session copies, backups, confirmation file, and key file are created owner-only.
Edits
Edits are stored in a private folder on this computer (%LOCALAPPDATA%\genealogy-mcp\sessions on Windows, ~/.cache/genealogy-mcp/sessions on macOS and Linux). They do not change the original file.
export_session writes a new file and leaves living people out unless you pass includeLiving true or turn on the older show control. A hide control still leaves them out. Notes that no remaining record cites are left out. A note that remains has a living person's known name forms replaced with [name removed]. That match does not catch nicknames or paraphrases. Files of 1 MiB or smaller can be returned in the tool result. Larger files are a resource link, and the local path is always included.
Replacing the original file is off unless allowCommitToOriginal is true in the config file, or GENEALOGY_MCP_ALLOW_COMMIT is 1. The environment variable wins. A commit then asks three times. If the app can ask you, it asks in the app and the tool result has no confirmation code. Otherwise you read a code from the server console or from pending-approval.txt in the data folder (%LOCALAPPDATA%\genealogy-mcp on Windows, ~/.local/share/genealogy-mcp on macOS and Linux) and paste it as confirmationCode. The code is not in the tool result. A successful commit writes a managed backup in the backups folder under that same data folder, then replaces the original. Restore uses a backup id only, asks once, and writes only the recorded original path. Older backups saved beside the original file are not accepted. The full rules are in the source repository privacy page.
License
Copyright (c) 2026 Edward Alexander, Inc. (EAC Partners). All rights reserved.
Proprietary free-to-use software. See LICENSE. Product page: https://eacpartners.com/genealogy-mcp
