- BrainTools - https://www.braintools.ru -
Как я организовал своё генеалогическое исследование с ИИ‑помощником и контролем над данными.
Проект: gramps‑web‑mcp‑rs [1]
Если вы только начинаете строить генеалогическое дерево, то, скорее всего, после записей на листочках пойдете в один из крупных сервисов: MyHeritage, Ancestry, FamilySearch, Geni. И это вправду удобно: не надо ничего ставить и настраивать, приятный веб‑интерфейс, автоматический поиск совпадений, подсказки, можно поделиться результатом по ссылке.
Но проблема в том, что ваше дерево живёт на чужих серверах. Компании отказываются работать с россиянами, меняют условия, есть проблемы с оплатой, могут удалить аккаунт — и вы можете потерять годы работы. Это не абстрактный риск, в 2025 году MyHeritage удалил аккаунты пользователей из России, было очень обидно. Ancestry заблокирован, оплата затруднена. FamilySearch работает и бесплатный — но данные по‑прежнему у них, все риски сохраняются.
Основная ценность — не аккаунт в каком‑то сервисе, а переносимые данные в открытом формате, которые лежат у вас. Имея эти данные, можно импортировать свое дерево на любой из вышеперечисленных сервисов и использовать все их преимущества.
Есть стандарт, который понимают все серьёзные генеалогические программы: GEDCOM (GEnealogical Data COMmunication) — универсальный формат для хранения и обмена данными. Это текстовый файл, который хранит всё дерево — люди и связи, даты, места, источники. Он был придуман мормонами ещё в 1984, а сейчас стал стандартом в генеалогии.
Но одного GEDCOM мало, ведь он хранит только текстовые данные. Настоящий архив — это GEDCOM плюс медиа: фотографии, сканы документов, выписки из метрических книг. GEDCOM хранит ссылки на файлы, а файлы живут рядом или в другом месте. Вместе это — полноценная база, которая не зависит от одного конкретного сервиса и переезжает между программами без потерь.
Разобравшись с тем, что для нас представляет ценность, можно перейти к инструменту. И пожалуй, единственный вариант — экосистема Gramps. Вернее, связка Gramps + Gramps Web.
Gramps — десктопное приложение с открытым исходным кодом (Linux/macOS/Windows). База хранится локально, экспортируется в GEDCOM, а хранение медиафайлов гибко настраивается.
Модель данных у Gramps строже, чем у большинства сервисов, потому что она напрямую следует стандарту GEDCOM — тому самому формату, который мы обсудили выше:
Персона — человек в дереве с именами, событиями и связями.
Семья (Family) — связывает двух персон и их детей. Содержит события брака, развода, совместной жизни.
Место — название строкой, координаты и иерархия принадлежности. Отдельно учитываются переименования и принадлежность в зависимости от даты: Царицын (РИ) → Сталинград (СССР) → Волгоград (РФ).
Источник (Source) — книга, реестр, архивное дело, документ, фотография. Один источник может подтверждать множество фактов: дату рождения, время армейской службы, звание и так далее
Цитата (Citation) — ссылка на источник, к каждой цитате привязан уровень доверия (Very Low → Very High) — это и есть доказательный подход: «я знаю, откуда это и насколько надёжно».
Минусы программы — высокий порог входа и не самый эргономичный интерфейс.
Gramps Web — отдельный проект, который можно использовать самостоятельно или в связке с Gramps, он разворачивается на вашем сервере. Можно развернуть на VPS с доступом через интернет или в вашей локальной сети. Имеет приятный и современный интерфейс, визуализация дерева заметно богаче, чем в десктопном приложении. Можно и редактировать записи, но возможностей гораздо меньше. У Gramps Web есть HTTP API — именно через него работает MCP‑сервер для ИИ‑агента.
Gramps Web Sync — плагин для десктопного Gramps, синхронизирует с Gramps Web. Позволяет объединить все преимущества обеих версий. Редактируете в десктопном Gramps, запускаете синхронизацию, и Gramps Web подхватывает изменения. Работает и в обратную сторону.
Сам по себе этот стек уже самодостаточен — можно вести дерево, хранить медиа, работать локально и через веб, есть красивое визуальное представление. Но если добавить ИИ‑агента, открываются новые возможности.
ИИ‑агенты сами по себе неплохо справляются с генеалогией: ищут по архивам, переводят документы с других языков, читают рукописный текст в метрических книгах. Но появляется рутина — то и дело копировать данные между агентом и Gramps. Чтобы не копировать руками с сайта в чат, можно подключить автоматизацию через MCP.
MCP (Model Context Protocol) — открытый стандарт, который описывает взаимодействие ИИ‑агента с внешними сервисами, в нашем случае это Gramps Web. MCP‑сервер — это простая обертка над вызовами Gramps Web API. Агент сам решает, что вызвать в ходе диалога: найти человека, прочитать его события, посмотреть источники, перейти к связанным персонам.
Помощь в освоении программы. Gramps — программа с очень высоким порогом входа и обильной документацией. Агент помогает разобраться прямо в контексте вашего дерева: почему это место задублировалось, как правильно оформить цитату на метрическую книгу, что значит этот флаг. И это не абстрактная справка, а ответ про конкретную запись именно у вас. Можно скинуть агенту ссылку на источник — и он поможет правильно все оформить.
Генерация идей. Агент смотрит на персону, видит что известно, и предлагает направления: какие архивы, базы, документы могут существовать для человека с такими датами и местами. Особенно полезно, когда исследование зашло в тупик.
Поиск в интернете. Агент сам ищет по профильным сайтам: Findagrave, JewishGen, Память [2] Народа, порталы региональных архивов, некрологи в оцифрованных газетах. Поиск идёт параллельно по нескольким источникам, и агент сам сопоставляет находки с тем, что уже есть в дереве. Особенно хорош Claude Desktop в режиме Cowork.
Работа с документами. Claude хорошо читает рукописный текст — и, судя по моему опыту [3], на удивление хорошо справляется с дореволюционными метрическими книгами. Может просмотреть сотни и тысячи страниц в поиске нужных совпадений.
Отслеживание прогресса. Можно вести задачи через агента: по кому уже есть источники, по кому нет, кто исследован глубже, кто остановлен.
Аудит дерева. Можно попросить агента прочитать все записи и проверить согласованность — найти дубли мест, события без источников, противоречия в датах, простые опечатки — по правилам оформления, которые вы сами зададите. Рутинный аудит, который вручную занял бы часы и дни, агент делает за минуты. Эти же правила — по оформлению мест, имён, цитат, организации медиа — можно один раз описать агенту, и он будет их придерживаться не только при аудите, но и в остальной работе.
Для Gramps Web уже есть несколько MCP‑серверов — сравнение доступно на странице альтернатив [4].
Но меня они не устроили: часть заброшена, часть не поддерживает Gramps Web напрямую, у некоторых избыточные зависимости или проблемы с безопасностью сетевого протокола.
Поэтому написал свой — gramps‑web‑mcp‑rs [1] на Rust.
Я сразу делаю MCP‑сервер с прицелом на безопасность и оптимизацию по токенам и по размеру программы.
Один из вариантов работы — только чтение. Лично я предпочитаю этот вариант — оставляю правки за собой в Gramps, где я имею полный контроль.
Набор инструментов покрывает основные сценарии чтения: поиск по дереву, получение объектов, хронологии персон и семей, навигация по связям. Отдельно скажу про OQL [5] — язык запросов с python‑подобным синтаксисом, который хорошо понимают ИИ‑агенты. Он позволяет писать сложные запросы прямо в диалоге: например, «сколько в дереве семей с четырьмя и более детьми» — и агент выполнит всего один запрос вместо того, чтобы получить все семьи и фильтровать на своей стороне, это дает существенную экономию токенов.
В режиме без ограничений на запись доступны также инструменты добавления и редактирования объектов, все что предоставляет Gramps Web API — полный список в README [1].
Rust даёт один исполняемый файл без внешних зависимостей — Docker‑образ компактный, всего 20 МБ.
Мой mcp‑сервер поддерживает протоколы подключения stdio и http, в том числе удалённо, с bearer token авторизацией.
MCP — это универсальный протокол и gramps‑web‑mcp‑rs может работать с любыми ИИ‑агентами, которые поддерживают этот протокол, не только с Claude.
Покажу возможности описанного подхода на примере: настроим ИИ‑агента, и он построит дерево Владимира Высоцкого по открытым источникам.
Что нужно: Docker [6] с Docker Compose и Claude Code [7] с базовой подпиской. Мы будем использовать Claude Code, но подойдёт любой ИИ‑агент с поддержкой MCP.
Пример основан на Quickstart [8] из вики проекта.
Подготовим систему. В отдельной директории создадим файл docker-compose.yml со следующим содержанием:
```
services:
grampsweb: &grampsweb
image: ghcr.io/gramps-project/grampsweb:latest
restart: unless-stopped
ports:
- "5000:5000"
environment:
GRAMPSWEB_TREE: main
GRAMPSWEB_CELERY_CONFIG__broker_url: redis://grampsweb_redis:6379/0
GRAMPSWEB_CELERY_CONFIG__result_backend: redis://grampsweb_redis:6379/0
GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1
GRAMPSWEB_GUNICORN_WORKERS: "1"
volumes:
- gramps_users:/app/users
- gramps_index:/app/indexdir
- gramps_thumb_cache:/app/thumbnail_cache
- gramps_cache:/app/cache
- gramps_secret:/app/secret
- gramps_db:/root/.gramps
- gramps_media:/app/media
- gramps_tmp:/tmp
depends_on:
- grampsweb_redis
healthcheck:
test:
[
"CMD",
"python3",
"-c",
"import urllib.request; urllib.request.urlopen('http://localhost:5000/')",
]
interval: 5s
timeout: 5s
retries: 20
start_period: 15s
grampsweb_celery:
<<: *grampsweb
ports: []
restart: unless-stopped
depends_on:
- grampsweb_redis
healthcheck:
disable: true
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=1
grampsweb_redis:
image: docker.io/valkey/valkey:8-alpine
restart: unless-stopped
grampsweb_init:
# Creates the initial user account on first run.
# || true makes the command idempotent — safe to run on every restart.
image: ghcr.io/gramps-project/grampsweb:latest
restart: "no"
environment:
GRAMPSWEB_TREE: main
volumes:
- gramps_users:/app/users
- gramps_secret:/app/secret
command: >
sh -c "python3 -m gramps_webapi user add gramps-mcp gramps-mcp --email gramps-mcp@localhost --role 5 || true"
depends_on:
grampsweb:
condition: service_healthy
gramps_web_mcp:
image: ghcr.io/alexey-n-chernyshov/gramps-web-mcp-rs:latest
restart: unless-stopped
environment:
GRAMPS_API_URL: http://grampsweb:5000
GRAMPS_USERNAME: gramps-mcp
GRAMPS_PASSWORD: gramps-mcp
GRAMPS_READONLY: false
MCP_TRANSPORT: http
MCP_HTTP_PORT: 3000
ports:
- "3000:3000"
depends_on:
grampsweb:
condition: service_healthy
volumes:
gramps_users:
gramps_index:
gramps_thumb_cache:
gramps_cache:
gramps_secret:
gramps_db:
gramps_media:
gramps_tmp:
В терминале поднимем Gramps Web и gramps-web-mcp:
docker compose up -d
Надо подождать, пока проект загрузится и создаст пользователя, а затем можно открыть Gramps Web в браузере по http://localhost:5000 и войти через логин/пароль: gramps-mcp / gramps-mcp.
Далее подключим MCP‑сервер к Claude Code по MCP, только для проекта в этой директории:
claude mcp add --transport http --scope project gramps-web http://localhost:3000/mcp
Запустим Claude Code и подтвердим добавление MCP.
claude
В Claude Code можно писать запрос довольно свободно, но некоторые вещи, такие как координаты и формат медиа лучше прописывать явно:
Мы строим фамильное дерево Владимира Высоцкого. Добавь записи о нем и его жене. Можешь использовать википедию и прочие открытые источники. Потом перейдем к его предкам. Поищи отца Владимира Высоцкого и его военные записи. Потом перейди к деду. Добавляй источники и цитаты. Когда будешь добавлять медиа файлы, удостоверься, что по ссылкам лежат именно файлы фото. Для мест не забудь проставить координаты.
Ждем минут 10–15, пока отработает. Можно в реальном времени наблюдать, как агент ищет и добавляет данные.
Мы работали через Claude Code — он ограничен в возможностях, например не может смотреть сайты с js‑рендерингом (pamyat‑naroda.ru [9]). Для поиска через интернет лучше подходит Claude Desktop в режиме Cowork и расширение в Google Chrome. Тогда агент может сам искать через браузер, в том числе по рукописным сканам, например по оцифрованным архивам на FamilySearch.
Вот что получилось у меня: агент построил дерево, прикрепил фото и ссылки, создал места и проставил координаты.
Ваш результат может отличаться от моего — может быть другая модель, или та же модель может искать по‑другому, могут быть ошибки [10]. Попробуйте разные запросы, попросите дополнить или исправить.
После завершения остановим всё и почистим:
docker compose down -v
Вариант из примера выше — самый простой, один docker-compose.yml поднимает всё сразу — Gramps Web и MCP‑сервер.
Другие варианты запуска (stdio, развёртывание на удалённом сервере и подключение по HTTP, настройка Claude Desktop) — в документации проекта [11].
Конкретные возможности зависят от того, какой интерфейс Claude вы используете.
Claude Desktop, чат — классический разговорный режим. Хорошо для вопросов про программу, общих вопросов по дереву, разбора конкретной записи, когда данные вы вставляете сами. Низкий порог входа.
Claude Desktop, Cowork — режим, в котором агент работает с браузером напрямую: листает страницы архивных баз, нажимает ссылки, открывает сайты, которые не поддаются простому скрапингу. Очень полезен для поиска по архивам с интерактивной навигацией или требующим авторизации. В этом режиме мне удалось пролистать десятки метрических книг на тысячи страниц и найти совпадения с моим деревом.
Claude Code — CLI‑инструмент с поддержкой MCP. Имеет прямой доступ к дереву через MCP‑сервер, может запускать скрипты, помогает с организацией медиафайлов и составлением инструкций. Режим для системной работы с деревом и файлами.
Приватность — отдельный важный вопрос. Когда агент обращается к дереву через MCP, данные, которые он читает, уходят на серверы ИИ‑провайдера для обработки. В вашем дереве могут быть приватные данные людей, которые не давали согласия на обработку своей информации. Такие данные можно скрыть от агента через настройки приватности в Gramps. Вот что можно сделать:
Пометить записи как приватные в Gramps. Живые или закрытые персоны можно пометить как приватные — Gramps Web не отдаёт их по API, агент их не видит.
Завести отдельный аккаунт для MCP. Создайте в Gramps Web отдельного пользователя с минимальными правами только чтение. Не используйте для MCP‑сервера аккаунт администратора с доступом к реальным данным.
Связка Gramps + Gramps Web + MCP даёт то, чего не хватает ни облачным сервисам, ни чистому десктопу: данные живут у вас, экспортируются в любой момент, и к ним есть прямой доступ для ИИ‑агента без ручного копирования.
Агент берёт на себя рутину, а человек — смысл: что из найденного правда, и куда двигаться дальше.
Сервер в активной разработке, буду рад issues и PR на GitHub [1].
Автор: alexey-n-chernyshov
Источник [12]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/32704
URLs in this post:
[1] gramps‑web‑mcp‑rs: https://github.com/Alexey-N-Chernyshov/gramps-web-mcp-rs
[2] Память: http://www.braintools.ru/article/4140
[3] опыту: http://www.braintools.ru/article/6952
[4] странице альтернатив: https://github.com/Alexey-N-Chernyshov/gramps-web-mcp-rs/wiki/Alternatives
[5] OQL: https://github.com/dsblank/object-ql
[6] Docker: https://docs.docker.com/get-docker/
[7] Claude Code: https://claude.ai/code
[8] Quickstart: https://github.com/Alexey-N-Chernyshov/gramps-web-mcp-rs/wiki/Quickstart
[9] pamyat‑naroda.ru: http://pamyat-naroda.ru
[10] ошибки: http://www.braintools.ru/article/4192
[11] документации проекта: https://github.com/Alexey-N-Chernyshov/gramps-web-mcp-rs/tree/main/docs
[12] Источник: https://habr.com/ru/articles/1056102/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1056102
Нажмите здесь для печати.