gramps-web-mcp
gramps-web-mcp
Servidor MCP complementario para la plataforma de genealogía de código abierto Gramps Web. Proporciona a los agentes de IA acceso estructurado y basado en herramientas a árboles genealógicos a través del Model Context Protocol.
Este proyecto no es una interfaz de usuario de genealogía independiente ni un reemplazo de Gramps Web. Ejecútelo junto a una instancia existente de Gramps Web; sus usuarios, árboles, medios, permisos e interfaz de edición genealógica permanecen en Gramps Web.
Características
57 herramientas MCP — leer, crear, actualizar y eliminar personas, familias, eventos, lugares, fuentes, citas, notas, medios, repositorios y etiquetas
Búsqueda y navegación — búsqueda de texto completo y listado paginado de objetos
Herramientas de parentesco — antepasados, descendientes, relaciones y cronologías
Flujos de trabajo compuestos — añadir persona rápidamente, añadir evento a persona, buscar por ID de Gramps
6 recursos MCP — vocabularios de tipos, guía de entrada, metadatos del árbol, configuraciones de nombres y miniaturas/archivos multimedia opcionales para agentes con capacidad de visión
Salvaguardas multimedia — límites de tamaño, listas blancas MIME y valores predeterminados de registros privados
Indicaciones MCP — flujos de trabajo guiados para investigación, adición de personas/familias e importaciones
Múltiples transportes — stdio (clientes locales), HTTP Streamable, SSE heredado
Modo de solo lectura — mantiene todas las herramientas visibles mientras bloquea las llamadas de creación, actualización y eliminación
Consulte el catálogo de herramientas para obtener la lista completa.
Related MCP server: ASPNET Core Debugging MCP Server
Requisitos previos
.NET 8 SDK (para desarrollo local)
Una instancia en ejecución de Gramps Web con acceso a la API
Docker (opcional, para implementación en contenedor)
Inicio rápido
Desarrollo local (servidor de demostración)
run-local-server.sh se conecta a la instancia pública demo.grampsweb.org utilizando las credenciales de demostración conocidas (owner / owner):
./run-local-server.shEl servidor se inicia con transporte HTTP en http://127.0.0.1:8080/mcp. No se requiere clave API al vincularse solo a loopback.
Docker
Las imágenes multiarquitectura preconstruidas (linux/amd64, linux/arm64) se publican en GitHub Container Registry. Docker selecciona la arquitectura coincidente automáticamente; amd64 cubre la mayoría de los hosts Unraid y x86, arm64 cubre Apple Silicon y SBC ARM:
docker pull ghcr.io/scormave/gramps-web-mcp:latest
docker run -p 8080:8080 \
-e GRAMPS_API_URL=https://your-gramps.example.com \
-e GRAMPS_USERNAME=your-user \
-e GRAMPS_PASSWORD=your-password \
-e GRAMPS_TREE_ID=your-tree-uuid \
-e MCP_API_KEY=your-secret-api-key \
ghcr.io/scormave/gramps-web-mcp:latestLa imagen expone un endpoint GET /health para HEALTHCHECK de Docker, estado del contenedor Unraid y otros monitores de tiempo de actividad. Devuelve HTTP 200 cuando el servidor MCP puede autenticarse contra Gramps Web, o HTTP 503 en caso contrario. La respuesta pública es mínima por defecto: { "status": "healthy" } o { "status": "unhealthy" }. Los registros de inicio incluyen una línea como Connected to Gramps Web at … una vez que la API es accesible.
La imagen utiliza por defecto HTTP Streamable (MCP_TRANSPORT=http) en el puerto 8080, que es lo que utilizan los comandos anteriores. Los clientes que inician el contenedor ellos mismos (como las instalaciones de MCP Registry) lo ejecutan a través de stdio con -e MCP_TRANSPORT=stdio y stdin abierto (docker run -i); ese es el modo declarado en server.json.
Para el modo de solo lectura, añada -e GRAMPS_READ_ONLY=true:
docker run -p 8080:8080 \
-e GRAMPS_API_URL=https://your-gramps.example.com \
-e GRAMPS_USERNAME=your-user \
-e GRAMPS_PASSWORD=your-password \
-e GRAMPS_TREE_ID=your-tree-uuid \
-e MCP_API_KEY=your-secret-api-key \
-e GRAMPS_READ_ONLY=true \
ghcr.io/scormave/gramps-web-mcp:latestInstalación en Unraid
Los usuarios de Unraid pueden instalar gramps-web-mcp desde Community Applications. La fuente de la plantilla se mantiene en Scormave/gramps-web-mcp-unraid. Para obtener ayuda específica de Unraid, consulte el hilo de soporte en los foros de Unraid.
Configuración básica:
En Unraid, abra Apps / Community Applications.
Busque
gramps-web-mcpe instale la plantilla.Establezca
GRAMPS_API_URL,GRAMPS_USERNAME,GRAMPS_PASSWORDyGRAMPS_TREE_IDpara su instancia de Gramps Web. EstablezcaMCP_API_KEYcuando el puerto MCP sea accesible desde otras máquinas de su red.Mantenga el puerto de contenedor predeterminado
8080, o asígnelo a otro puerto del host.Inicie el contenedor y verifique
/health; devuelve HTTP 200 una vez que el servicio puede autenticarse en Gramps Web, con una respuesta JSON mínima por defecto.
Para el emparejamiento más sencillo, ejecute Gramps Web y gramps-web-mcp en la misma red Docker de Unraid y establezca GRAMPS_API_URL en la URL del contenedor de Gramps Web. El endpoint MCP para los clientes es http://<unraid-host>:<mapped-port>/mcp.
Gramps Web + MCP (Docker Compose)
Para ejecutar Gramps Web y el servidor MCP en el mismo host y red Docker, utilice docker-compose.example.yml como punto de partida:
cp docker-compose.example.yml docker-compose.yml
cp .env.example .env
# Complete the Gramps Web setup wizard, then set credentials in .env
docker compose up -dGramps Web se publica en el puerto 5055; MCP está en el 8080 (/mcp y /health). Dentro de la red de compose, el contenedor MCP accede a Gramps Web en http://grampsweb:5000.
Claude Desktop (extensión MCPB)
La instalación con un solo clic para Claude Desktop está disponible como un MCP Bundle (.mcpb) desde GitHub Releases. Descargue el paquete para su plataforma:
Plataforma | Artefacto |
macOS Apple Silicon |
|
macOS Intel |
|
Windows x64 |
|
Linux x64 |
|
Linux ARM64 |
|
Descargue el archivo
.mcpbpara su sistema operativo desde la última versión.Haga doble clic en él, o arrástrelo a la ventana de Claude Desktop.
Introduzca su URL de Gramps Web, nombre de usuario, contraseña/token y UUID del árbol.
Deje el Modo de solo lectura habilitado para su primera sesión; desactívelo solo cuando desee que Claude cree o edite registros.
Complete la instalación e inicie un nuevo chat.
La extensión se ejecuta localmente a través de stdio y no requiere el SDK de .NET en su máquina.
Consulte mcpb/README.md para obtener detalles sobre el empaquetado y PRIVACY.md para la política de privacidad.
Para construir un paquete localmente:
./scripts/pack-mcpb.sh osx-arm64 # or osx-x64, win-x64, linux-x64, linux-arm64Configuración del cliente MCP (manual)
stdio (ej. Claude Desktop, Cursor):
{
"mcpServers": {
"gramps-web": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/gramps-web-mcp/GrampsWeb.Mcp/GrampsWeb.Mcp.csproj"],
"env": {
"MCP_TRANSPORT": "stdio",
"GRAMPS_API_URL": "https://your-gramps.example.com",
"GRAMPS_USERNAME": "your-user",
"GRAMPS_PASSWORD": "your-password",
"GRAMPS_TREE_ID": "your-tree-uuid"
}
}
}
}Para ejecutar un servidor stdio en modo de solo lectura, añada "GRAMPS_READ_ONLY": "true" a env.
HTTP (remoto / Docker):
Apunte su cliente MCP a http://host:8080/mcp con transporte HTTP Streamable. Cuando MCP_API_KEY esté configurada, envíela como Authorization: Bearer <key> o X-Api-Key: <key> en cada solicitud MCP.
curl -X POST http://host:8080/mcp \
-H "Authorization: Bearer $MCP_API_KEY" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}},"id":1}'Los agentes con capacidad de visión pueden leer medios opcionales a través de herramientas (GetMediaThumbnail, GetMediaFile) o a través de recursos MCP binarios como gramps://media/{handle}/thumbnail/{size} y gramps://media/{handle}/file. GetMediaFile devuelve contenido de recurso de imagen, audio o blob incrustado según el tipo MIME. El análisis de extremo a extremo depende de que el cliente MCP reenvíe el contenido de la herramienta tipificada o el contenido del recurso binario a un modelo capaz.
Configuración
Requerido (conexión a Gramps)
Variable | Descripción |
| URL base de su instancia de Gramps Web (sin barra final) |
| Nombre de usuario de la API |
| Contraseña o token de la API |
| UUID del árbol en ese servidor |
Modo de ejecución
Variable | Por defecto |
|
|
|
|
|
|
GRAMPS_READ_ONLY: establézcalo entruepara bloquear las llamadas de creación, actualización y eliminación mientras mantiene las herramientas visibles.GRAMPS_MUTATION_SERIALIZE: ejecuta las llamadas HTTP de creación/actualización/eliminación una a la vez en este proceso.GRAMPS_MUTATION_MIN_INTERVAL_MS: pausa mínima entre llamadas HTTP de mutación, incluidos los pasos dentro de las herramientas compuestas.
Notas de ejecución:
GRAMPS_READ_ONLY=falsesignifica que el servidor se inicia en modo lectura/escritura.La extensión MCPB de Claude Desktop es la excepción: su formulario de configuración predetermina el modo de solo lectura para un primer uso más seguro.
La serialización de escritura y el intervalo opcional protegen los árboles SQLite típicos de Gramps Web de las ráfagas de escritura del agente.
La puerta de escritura es solo dentro del proceso. No se coordina entre múltiples réplicas MCP, la interfaz de usuario de Gramps Web u otros clientes API.
Las implementaciones SQLite que aún ven
database is lockeden ediciones secuenciales deben establecerGRAMPS_MUTATION_MIN_INTERVAL_MS=250o500.En errores de bloqueo de SQLite o HTTP 429 ascendente, las herramientas de mutación devuelven un error MCP reintentable con una sugerencia de retroceso corta en lugar de un 500 genérico.
Establezca
GRAMPS_MUTATION_SERIALIZE=falsecuando Gramps Web utilice PostgreSQL y desee escrituras paralelas.
Acceso a archivos multimedia
Las herramientas/recursos de bytes multimedia están deshabilitados por defecto. get_media permanece disponible para metadatos sin habilitar descargas de archivos.
Variable | Descripción | Por defecto |
| Habilita herramientas/recursos multimedia binarios para miniaturas y archivos completos |
|
| Bytes máximos devueltos por cualquier recurso multimedia |
|
| Tipos MIME permitidos para bytes multimedia | ver abajo |
| Permite bytes para registros multimedia de Gramps marcados como privados |
|
Prefiera GetMediaThumbnail o gramps://media/{handle}/thumbnail/{size} para el análisis de IA. Los archivos completos pueden ser grandes y sensibles, y aún están sujetos a las mismas comprobaciones de tamaño, MIME y registros privados.
Se admiten tipos exactos y comodines type/*. La lista blanca de medios predeterminada es image/jpeg,image/png,image/webp,image/avif,application/pdf.
Transportes
Establezca GRAMPS_API_URL, GRAMPS_USERNAME, GRAMPS_PASSWORD y GRAMPS_TREE_ID como de costumbre.
Valor | Comportamiento |
(sin establecer o | JSON-RPC sobre stdin/stdout (predeterminado; clientes locales). |
| HTTP Streamable en |
| MCP SSE heredado: |
Para transporte HTTP, las respuestas se transmiten a través de SSE. Consulte la especificación de HTTP Streamable para obtener detalles del protocolo. Establezca ASPNETCORE_URLS para elegir la dirección de escucha, por ejemplo http://127.0.0.1:8080.
Opcional (transporte MCP)
Variable | Description | Default |
| URLs de escucha para HTTP/SSE | — |
| Prefijo de URL para los endpoints de MCP |
|
| Modo sin estado para Streamable HTTP |
|
| Exponer |
|
| Secreto compartido para el transporte HTTP/SSE (separado por comas para rotación; mínimo 16 caracteres) | — |
Autenticación HTTP
Cuando MCP_API_KEY está definida, todos los endpoints HTTP/SSE de MCP requieren la clave en cada solicitud. GET /health permanece anónimo para las sondas de Docker y del balanceador de carga.
Genera una clave:
openssl rand -base64 32Sin una clave, el servidor sigue iniciándose (compatible con versiones anteriores). Si la dirección de escucha no es solo de loopback, se registra una advertencia que te recomienda establecer MCP_API_KEY, usar un proxy inverso con su propia autenticación o enlazar a 127.0.0.1 para uso únicamente local.
Dentro de Docker, ASPNETCORE_URLS suele ser http://0.0.0.0:8080, por lo que la advertencia aparece incluso cuando el host publica el puerto únicamente en 127.0.0.1. Esto es lo esperado cuando el acceso externo ya está restringido.
Desarrollo
dotnet testConsulta CONTRIBUTING.md y la guía para desarrolladores.
Documentación
Documento | Descripción |
Todos los archivos de documentación | |
Referencia completa de herramientas MCP | |
Empaquetado de la extensión de escritorio | |
Manejo de datos para la extensión de escritorio | |
Prompt sugerido para clientes MCP | |
Descripción general del diseño del sistema |
Contribuciones
Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md.
Seguridad
Para notificar una vulnerabilidad, consulta SECURITY.md.
Política de privacidad
La extensión de Claude Desktop es un servidor MCP local. Solo envía datos a la instancia de Gramps Web que configures y no recopila datos de análisis ni de conversación. Consulta PRIVACY.md para conocer todos los detalles.
Licencia
Copyright (c) Scormave
Este proyecto está licenciado bajo la GNU Affero General Public License v3.0 (AGPL-3.0-or-later). Al tratarse de software de servidor de red, alojar una versión modificada requiere poner el código fuente correspondiente a disposición de los usuarios que interactúan con ella a través de una red.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server providing 62 AI-optimized tools for .NET/C# semantic code analysis, navigation, refactoring, and code generation using Microsoft Roslyn. Built for AI coding agents - provides compiler-accurate code understanding that AI cannot infer from reading source files alone.6231MIT
- AlicenseAqualityAmaintenanceMCP server that lets AI agents (Claude, Cursor) debug your .NET / ASP.NET Core app2714MIT
- AlicenseNot gradedqualityAmaintenanceProduction-ready MCP server providing RAG, hierarchical memory, and 8+ tools for AI agents via the Model Context Protocol.41Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to search, retrieve, and create genealogical records in a Gramps Web instance.293MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Scormave/gramps-web-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server