Gramps + Claude: self‑hosted генеалогия с ИИ‑помощником. Claude.. Claude. gramps.. Claude. gramps. mcp.. Claude. gramps. mcp. Open source.. Claude. gramps. mcp. Open source. rust.. Claude. gramps. mcp. Open source. rust. генеалогические исследования.. Claude. gramps. mcp. Open source. rust. генеалогические исследования. генеалогия.. Claude. gramps. mcp. Open source. rust. генеалогические исследования. генеалогия. искусственный интеллект.. Claude. gramps. mcp. Open source. rust. генеалогические исследования. генеалогия. искусственный интеллект. фамильное древо.

Как я организовал своё генеалогическое исследование с ИИ‑помощником и контролем над данными.

Проект: gramps‑web‑mcp‑rs


Время self‑hosted решений

Если вы только начинаете строить генеалогическое дерево, то, скорее всего, после записей на листочках пойдете в один из крупных сервисов: MyHeritage, Ancestry, FamilySearch, Geni. И это вправду удобно: не надо ничего ставить и настраивать, приятный веб‑интерфейс, автоматический поиск совпадений, подсказки, можно поделиться результатом по ссылке.

Но проблема в том, что ваше дерево живёт на чужих серверах. Компании отказываются работать с россиянами, меняют условия, есть проблемы с оплатой, могут удалить аккаунт — и вы можете потерять годы работы. Это не абстрактный риск, в 2025 году MyHeritage удалил аккаунты пользователей из России, было очень обидно. Ancestry заблокирован, оплата затруднена. FamilySearch работает и бесплатный — но данные по‑прежнему у них, все риски сохраняются.

Основная ценность — не аккаунт в каком‑то сервисе, а переносимые данные в открытом формате, которые лежат у вас. Имея эти данные, можно импортировать свое дерево на любой из вышеперечисленных сервисов и использовать все их преимущества.

Что считать ценностью: GEDCOM + медиа

Есть стандарт, который понимают все серьёзные генеалогические программы: GEDCOM (GEnealogical Data COMmunication) — универсальный формат для хранения и обмена данными. Это текстовый файл, который хранит всё дерево — люди и связи, даты, места, источники. Он был придуман мормонами ещё в 1984, а сейчас стал стандартом в генеалогии.

Но одного GEDCOM мало, ведь он хранит только текстовые данные. Настоящий архив — это GEDCOM плюс медиа: фотографии, сканы документов, выписки из метрических книг. GEDCOM хранит ссылки на файлы, а файлы живут рядом или в другом месте. Вместе это — полноценная база, которая не зависит от одного конкретного сервиса и переезжает между программами без потерь.

Gramps: что это и как устроена модель данных

Разобравшись с тем, что для нас представляет ценность, можно перейти к инструменту. И пожалуй, единственный вариант — экосистема 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 подхватывает изменения. Работает и в обратную сторону.

Подключение ИИ: от копипасты к MCP

Сам по себе этот стек уже самодостаточен — можно вести дерево, хранить медиа, работать локально и через веб, есть красивое визуальное представление. Но если добавить ИИ‑агента, открываются новые возможности.

ИИ‑агенты сами по себе неплохо справляются с генеалогией: ищут по архивам, переводят документы с других языков, читают рукописный текст в метрических книгах. Но появляется рутина — то и дело копировать данные между агентом и Gramps. Чтобы не копировать руками с сайта в чат, можно подключить автоматизацию через MCP.

MCP (Model Context Protocol) — открытый стандарт, который описывает взаимодействие ИИ‑агента с внешними сервисами, в нашем случае это Gramps Web. MCP‑сервер — это простая обертка над вызовами Gramps Web API. Агент сам решает, что вызвать в ходе диалога: найти человека, прочитать его события, посмотреть источники, перейти к связанным персонам.

Что агент реально делает

Помощь в освоении программы. Gramps — программа с очень высоким порогом входа и обильной документацией. Агент помогает разобраться прямо в контексте вашего дерева: почему это место задублировалось, как правильно оформить цитату на метрическую книгу, что значит этот флаг. И это не абстрактная справка, а ответ про конкретную запись именно у вас. Можно скинуть агенту ссылку на источник — и он поможет правильно все оформить.

Генерация идей. Агент смотрит на персону, видит что известно, и предлагает направления: какие архивы, базы, документы могут существовать для человека с такими датами и местами. Особенно полезно, когда исследование зашло в тупик.

Поиск в интернете. Агент сам ищет по профильным сайтам: Findagrave, JewishGen, Память Народа, порталы региональных архивов, некрологи в оцифрованных газетах. Поиск идёт параллельно по нескольким источникам, и агент сам сопоставляет находки с тем, что уже есть в дереве. Особенно хорош Claude Desktop в режиме Cowork.

Работа с документами. Claude хорошо читает рукописный текст — и, судя по моему опыту, на удивление хорошо справляется с дореволюционными метрическими книгами. Может просмотреть сотни и тысячи страниц в поиске нужных совпадений.

Отслеживание прогресса. Можно вести задачи через агента: по кому уже есть источники, по кому нет, кто исследован глубже, кто остановлен.

Аудит дерева. Можно попросить агента прочитать все записи и проверить согласованность — найти дубли мест, события без источников, противоречия в датах, простые опечатки — по правилам оформления, которые вы сами зададите. Рутинный аудит, который вручную занял бы часы и дни, агент делает за минуты. Эти же правила — по оформлению мест, имён, цитат, организации медиа — можно один раз описать агенту, и он будет их придерживаться не только при аудите, но и в остальной работе.

Существующие MCP‑решения и почему я написал свой

Для Gramps Web уже есть несколько MCP‑серверов — сравнение доступно на странице альтернатив.

Но меня они не устроили: часть заброшена, часть не поддерживает Gramps Web напрямую, у некоторых избыточные зависимости или проблемы с безопасностью сетевого протокола.

Поэтому написал свой — gramps‑web‑mcp‑rs на Rust.

Что умеет MCP‑сервер

Я сразу делаю MCP‑сервер с прицелом на безопасность и оптимизацию по токенам и по размеру программы.

Один из вариантов работы — только чтение. Лично я предпочитаю этот вариант — оставляю правки за собой в Gramps, где я имею полный контроль.

Набор инструментов покрывает основные сценарии чтения: поиск по дереву, получение объектов, хронологии персон и семей, навигация по связям. Отдельно скажу про OQL — язык запросов с python‑подобным синтаксисом, который хорошо понимают ИИ‑агенты. Он позволяет писать сложные запросы прямо в диалоге: например, «сколько в дереве семей с четырьмя и более детьми» — и агент выполнит всего один запрос вместо того, чтобы получить все семьи и фильтровать на своей стороне, это дает существенную экономию токенов.

В режиме без ограничений на запись доступны также инструменты добавления и редактирования объектов, все что предоставляет Gramps Web API — полный список в README.

Rust даёт один исполняемый файл без внешних зависимостей — Docker‑образ компактный, всего 20 МБ.

Мой mcp‑сервер поддерживает протоколы подключения stdio и http, в том числе удалённо, с bearer token авторизацией.

MCP — это универсальный протокол и gramps‑web‑mcp‑rs может работать с любыми ИИ‑агентами, которые поддерживают этот протокол, не только с Claude.

Пример: семья Высоцких

Покажу возможности описанного подхода на примере: настроим ИИ‑агента, и он построит дерево Владимира Высоцкого по открытым источникам.

Что нужно: Docker с Docker Compose и Claude Code с базовой подпиской. Мы будем использовать Claude Code, но подойдёт любой ИИ‑агент с поддержкой MCP.

Пример основан на Quickstart из вики проекта.

Подготовим систему. В отдельной директории создадим файл 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). Для поиска через интернет лучше подходит Claude Desktop в режиме Cowork и расширение в Google Chrome. Тогда агент может сам искать через браузер, в том числе по рукописным сканам, например по оцифрованным архивам на FamilySearch.

Вот что получилось у меня: агент построил дерево, прикрепил фото и ссылки, создал места и проставил координаты.

Скрытый текст
Список персон

Список персон
Фамильное дерево

Фамильное дерево
Страница персоны

Страница персоны
Карта с событиями

Карта с событиями
График событий

График событий

Ваш результат может отличаться от моего — может быть другая модель, или та же модель может искать по‑другому, могут быть ошибки. Попробуйте разные запросы, попросите дополнить или исправить.

После завершения остановим всё и почистим:

docker compose down -v

Как подключить — другие способы

Вариант из примера выше — самый простой, один docker-compose.yml поднимает всё сразу — Gramps Web и MCP‑сервер.

Другие варианты запуска (stdio, развёртывание на удалённом сервере и подключение по HTTP, настройка Claude Desktop) — в документации проекта.

Три режима — три сценария

Конкретные возможности зависят от того, какой интерфейс 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.

Автор: alexey-n-chernyshov

Источник