Search / io.github.Scormave/gramps-web-mcp
Gramps Web MCP
L0· runs locallyMCP server for structured access to Gramps Web genealogy data
v2.6.0 · active · repository · descriptor JSON · versions
Search / io.github.Scormave/gramps-web-mcp
L0· runs locallyMCP server for structured access to Gramps Web genealogy data
v2.6.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"gramps-web-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GRAMPS_API_URL",
"-e",
"GRAMPS_PASSWORD",
"-e",
"GRAMPS_REFRESH_TOKEN",
"-e",
"GRAMPS_TREE_ID",
"-e",
"GRAMPS_READ_ONLY",
"-e",
"GRAMPS_MUTATION_SERIALIZE",
"-e",
"GRAMPS_MUTATION_MIN_INTERVAL_MS",
"-e",
"GRAMPS_LOG_LEVEL",
"-e",
"GRAMPS_MEDIA_RESOURCES_ENABLED",
"-e",
"GRAMPS_MEDIA_MAX_BYTES",
"-e",
"GRAMPS_MEDIA_ALLOW_PRIVATE",
"-e",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"ghcr.io/scormave/gramps-web-mcp:2.6.0"
],
"env": {
"GRAMPS_API_URL": "${GRAMPS_API_URL}",
"GRAMPS_PASSWORD": "${GRAMPS_PASSWORD}",
"GRAMPS_REFRESH_TOKEN": "${GRAMPS_REFRESH_TOKEN}",
"GRAMPS_TREE_ID": "${GRAMPS_TREE_ID}",
"GRAMPS_READ_ONLY": "false",
"GRAMPS_MUTATION_SERIALIZE": "true",
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0",
"GRAMPS_LOG_LEVEL": "Information",
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false",
"GRAMPS_MEDIA_MAX_BYTES": "5242880",
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
}
}
}
}claude mcp add gramps-web-mcp -e "GRAMPS_API_URL=${GRAMPS_API_URL}" -e "GRAMPS_PASSWORD=${GRAMPS_PASSWORD}" -e "GRAMPS_REFRESH_TOKEN=${GRAMPS_REFRESH_TOKEN}" -e "GRAMPS_TREE_ID=${GRAMPS_TREE_ID}" -e "GRAMPS_READ_ONLY=false" -e "GRAMPS_MUTATION_SERIALIZE=true" -e "GRAMPS_MUTATION_MIN_INTERVAL_MS=0" -e "GRAMPS_LOG_LEVEL=Information" -e "GRAMPS_MEDIA_RESOURCES_ENABLED=false" -e "GRAMPS_MEDIA_MAX_BYTES=5242880" -e "GRAMPS_MEDIA_ALLOW_PRIVATE=false" -e "GRAMPS_MEDIA_UPLOAD_MAX_BYTES=52428800" -- docker run -i --rm -e GRAMPS_API_URL -e GRAMPS_PASSWORD -e GRAMPS_REFRESH_TOKEN -e GRAMPS_TREE_ID -e GRAMPS_READ_ONLY -e GRAMPS_MUTATION_SERIALIZE -e GRAMPS_MUTATION_MIN_INTERVAL_MS -e GRAMPS_LOG_LEVEL -e GRAMPS_MEDIA_RESOURCES_ENABLED -e GRAMPS_MEDIA_MAX_BYTES -e GRAMPS_MEDIA_ALLOW_PRIVATE -e GRAMPS_MEDIA_UPLOAD_MAX_BYTES ghcr.io/scormave/gramps-web-mcp:2.6.0[mcp_servers.gramps-web-mcp]
command = "docker"
args = ["run", "-i", "--rm", "-e", "GRAMPS_API_URL", "-e", "GRAMPS_PASSWORD", "-e", "GRAMPS_REFRESH_TOKEN", "-e", "GRAMPS_TREE_ID", "-e", "GRAMPS_READ_ONLY", "-e", "GRAMPS_MUTATION_SERIALIZE", "-e", "GRAMPS_MUTATION_MIN_INTERVAL_MS", "-e", "GRAMPS_LOG_LEVEL", "-e", "GRAMPS_MEDIA_RESOURCES_ENABLED", "-e", "GRAMPS_MEDIA_MAX_BYTES", "-e", "GRAMPS_MEDIA_ALLOW_PRIVATE", "-e", "GRAMPS_MEDIA_UPLOAD_MAX_BYTES", "ghcr.io/scormave/gramps-web-mcp:2.6.0"]
env = { "GRAMPS_API_URL" = "${GRAMPS_API_URL}", "GRAMPS_PASSWORD" = "${GRAMPS_PASSWORD}", "GRAMPS_REFRESH_TOKEN" = "${GRAMPS_REFRESH_TOKEN}", "GRAMPS_TREE_ID" = "${GRAMPS_TREE_ID}", "GRAMPS_READ_ONLY" = "false", "GRAMPS_MUTATION_SERIALIZE" = "true", "GRAMPS_MUTATION_MIN_INTERVAL_MS" = "0", "GRAMPS_LOG_LEVEL" = "Information", "GRAMPS_MEDIA_RESOURCES_ENABLED" = "false", "GRAMPS_MEDIA_MAX_BYTES" = "5242880", "GRAMPS_MEDIA_ALLOW_PRIVATE" = "false", "GRAMPS_MEDIA_UPLOAD_MAX_BYTES" = "52428800" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gramps-web-mcp": {
"type": "local",
"command": [
"docker",
"run",
"-i",
"--rm",
"-e",
"GRAMPS_API_URL",
"-e",
"GRAMPS_PASSWORD",
"-e",
"GRAMPS_REFRESH_TOKEN",
"-e",
"GRAMPS_TREE_ID",
"-e",
"GRAMPS_READ_ONLY",
"-e",
"GRAMPS_MUTATION_SERIALIZE",
"-e",
"GRAMPS_MUTATION_MIN_INTERVAL_MS",
"-e",
"GRAMPS_LOG_LEVEL",
"-e",
"GRAMPS_MEDIA_RESOURCES_ENABLED",
"-e",
"GRAMPS_MEDIA_MAX_BYTES",
"-e",
"GRAMPS_MEDIA_ALLOW_PRIVATE",
"-e",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"ghcr.io/scormave/gramps-web-mcp:2.6.0"
],
"enabled": true,
"environment": {
"GRAMPS_API_URL": "{env:GRAMPS_API_URL}",
"GRAMPS_PASSWORD": "{env:GRAMPS_PASSWORD}",
"GRAMPS_REFRESH_TOKEN": "{env:GRAMPS_REFRESH_TOKEN}",
"GRAMPS_TREE_ID": "{env:GRAMPS_TREE_ID}",
"GRAMPS_READ_ONLY": "false",
"GRAMPS_MUTATION_SERIALIZE": "true",
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0",
"GRAMPS_LOG_LEVEL": "Information",
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false",
"GRAMPS_MEDIA_MAX_BYTES": "5242880",
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
}
}
}
}{
"mcpServers": {
"gramps-web-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GRAMPS_API_URL",
"-e",
"GRAMPS_PASSWORD",
"-e",
"GRAMPS_REFRESH_TOKEN",
"-e",
"GRAMPS_TREE_ID",
"-e",
"GRAMPS_READ_ONLY",
"-e",
"GRAMPS_MUTATION_SERIALIZE",
"-e",
"GRAMPS_MUTATION_MIN_INTERVAL_MS",
"-e",
"GRAMPS_LOG_LEVEL",
"-e",
"GRAMPS_MEDIA_RESOURCES_ENABLED",
"-e",
"GRAMPS_MEDIA_MAX_BYTES",
"-e",
"GRAMPS_MEDIA_ALLOW_PRIVATE",
"-e",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"ghcr.io/scormave/gramps-web-mcp:2.6.0"
],
"env": {
"GRAMPS_API_URL": "${GRAMPS_API_URL}",
"GRAMPS_PASSWORD": "${GRAMPS_PASSWORD}",
"GRAMPS_REFRESH_TOKEN": "${GRAMPS_REFRESH_TOKEN}",
"GRAMPS_TREE_ID": "${GRAMPS_TREE_ID}",
"GRAMPS_READ_ONLY": "false",
"GRAMPS_MUTATION_SERIALIZE": "true",
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0",
"GRAMPS_LOG_LEVEL": "Information",
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false",
"GRAMPS_MEDIA_MAX_BYTES": "5242880",
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=gramps-web-mcp&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCItZSIsIkdSQU1QU19BUElfVVJMIiwiLWUiLCJHUkFNUFNfUEFTU1dPUkQiLCItZSIsIkdSQU1QU19SRUZSRVNIX1RPS0VOIiwiLWUiLCJHUkFNUFNfVFJFRV9JRCIsIi1lIiwiR1JBTVBTX1JFQURfT05MWSIsIi1lIiwiR1JBTVBTX01VVEFUSU9OX1NFUklBTElaRSIsIi1lIiwiR1JBTVBTX01VVEFUSU9OX01JTl9JTlRFUlZBTF9NUyIsIi1lIiwiR1JBTVBTX0xPR19MRVZFTCIsIi1lIiwiR1JBTVBTX01FRElBX1JFU09VUkNFU19FTkFCTEVEIiwiLWUiLCJHUkFNUFNfTUVESUFfTUFYX0JZVEVTIiwiLWUiLCJHUkFNUFNfTUVESUFfQUxMT1dfUFJJVkFURSIsIi1lIiwiR1JBTVBTX01FRElBX1VQTE9BRF9NQVhfQllURVMiLCJnaGNyLmlvL3Njb3JtYXZlL2dyYW1wcy13ZWItbWNwOjIuNi4wIl0sImVudiI6eyJHUkFNUFNfQVBJX1VSTCI6IiR7R1JBTVBTX0FQSV9VUkx9IiwiR1JBTVBTX1BBU1NXT1JEIjoiJHtHUkFNUFNfUEFTU1dPUkR9IiwiR1JBTVBTX1JFRlJFU0hfVE9LRU4iOiIke0dSQU1QU19SRUZSRVNIX1RPS0VOfSIsIkdSQU1QU19UUkVFX0lEIjoiJHtHUkFNUFNfVFJFRV9JRH0iLCJHUkFNUFNfUkVBRF9PTkxZIjoiZmFsc2UiLCJHUkFNUFNfTVVUQVRJT05fU0VSSUFMSVpFIjoidHJ1ZSIsIkdSQU1QU19NVVRBVElPTl9NSU5fSU5URVJWQUxfTVMiOiIwIiwiR1JBTVBTX0xPR19MRVZFTCI6IkluZm9ybWF0aW9uIiwiR1JBTVBTX01FRElBX1JFU09VUkNFU19FTkFCTEVEIjoiZmFsc2UiLCJHUkFNUFNfTUVESUFfTUFYX0JZVEVTIjoiNTI0Mjg4MCIsIkdSQU1QU19NRURJQV9BTExPV19QUklWQVRFIjoiZmFsc2UiLCJHUkFNUFNfTUVESUFfVVBMT0FEX01BWF9CWVRFUyI6IjUyNDI4ODAwIn19"
}{
"servers": {
"gramps-web-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GRAMPS_API_URL",
"-e",
"GRAMPS_PASSWORD",
"-e",
"GRAMPS_REFRESH_TOKEN",
"-e",
"GRAMPS_TREE_ID",
"-e",
"GRAMPS_READ_ONLY",
"-e",
"GRAMPS_MUTATION_SERIALIZE",
"-e",
"GRAMPS_MUTATION_MIN_INTERVAL_MS",
"-e",
"GRAMPS_LOG_LEVEL",
"-e",
"GRAMPS_MEDIA_RESOURCES_ENABLED",
"-e",
"GRAMPS_MEDIA_MAX_BYTES",
"-e",
"GRAMPS_MEDIA_ALLOW_PRIVATE",
"-e",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"ghcr.io/scormave/gramps-web-mcp:2.6.0"
],
"env": {
"GRAMPS_API_URL": "${GRAMPS_API_URL}",
"GRAMPS_PASSWORD": "${GRAMPS_PASSWORD}",
"GRAMPS_REFRESH_TOKEN": "${GRAMPS_REFRESH_TOKEN}",
"GRAMPS_TREE_ID": "${GRAMPS_TREE_ID}",
"GRAMPS_READ_ONLY": "false",
"GRAMPS_MUTATION_SERIALIZE": "true",
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0",
"GRAMPS_LOG_LEVEL": "Information",
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false",
"GRAMPS_MEDIA_MAX_BYTES": "5242880",
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
}
}
}
}{
"mcpServers": {
"gramps-web-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GRAMPS_API_URL",
"-e",
"GRAMPS_PASSWORD",
"-e",
"GRAMPS_REFRESH_TOKEN",
"-e",
"GRAMPS_TREE_ID",
"-e",
"GRAMPS_READ_ONLY",
"-e",
"GRAMPS_MUTATION_SERIALIZE",
"-e",
"GRAMPS_MUTATION_MIN_INTERVAL_MS",
"-e",
"GRAMPS_LOG_LEVEL",
"-e",
"GRAMPS_MEDIA_RESOURCES_ENABLED",
"-e",
"GRAMPS_MEDIA_MAX_BYTES",
"-e",
"GRAMPS_MEDIA_ALLOW_PRIVATE",
"-e",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"ghcr.io/scormave/gramps-web-mcp:2.6.0"
],
"env": {
"GRAMPS_API_URL": "${GRAMPS_API_URL}",
"GRAMPS_PASSWORD": "${GRAMPS_PASSWORD}",
"GRAMPS_REFRESH_TOKEN": "${GRAMPS_REFRESH_TOKEN}",
"GRAMPS_TREE_ID": "${GRAMPS_TREE_ID}",
"GRAMPS_READ_ONLY": "false",
"GRAMPS_MUTATION_SERIALIZE": "true",
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0",
"GRAMPS_LOG_LEVEL": "Information",
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false",
"GRAMPS_MEDIA_MAX_BYTES": "5242880",
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false",
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
}
}
}
}extensions:
"gramps-web-mcp":
enabled: true
name: "gramps-web-mcp"
type: stdio
cmd: "docker"
args:
- "run"
- "-i"
- "--rm"
- "-e"
- "GRAMPS_API_URL"
- "-e"
- "GRAMPS_PASSWORD"
- "-e"
- "GRAMPS_REFRESH_TOKEN"
- "-e"
- "GRAMPS_TREE_ID"
- "-e"
- "GRAMPS_READ_ONLY"
- "-e"
- "GRAMPS_MUTATION_SERIALIZE"
- "-e"
- "GRAMPS_MUTATION_MIN_INTERVAL_MS"
- "-e"
- "GRAMPS_LOG_LEVEL"
- "-e"
- "GRAMPS_MEDIA_RESOURCES_ENABLED"
- "-e"
- "GRAMPS_MEDIA_MAX_BYTES"
- "-e"
- "GRAMPS_MEDIA_ALLOW_PRIVATE"
- "-e"
- "GRAMPS_MEDIA_UPLOAD_MAX_BYTES"
- "ghcr.io/scormave/gramps-web-mcp:2.6.0"
envs:
"GRAMPS_API_URL": "${GRAMPS_API_URL}"
"GRAMPS_PASSWORD": "${GRAMPS_PASSWORD}"
"GRAMPS_REFRESH_TOKEN": "${GRAMPS_REFRESH_TOKEN}"
"GRAMPS_TREE_ID": "${GRAMPS_TREE_ID}"
"GRAMPS_READ_ONLY": "false"
"GRAMPS_MUTATION_SERIALIZE": "true"
"GRAMPS_MUTATION_MIN_INTERVAL_MS": "0"
"GRAMPS_LOG_LEVEL": "Information"
"GRAMPS_MEDIA_RESOURCES_ENABLED": "false"
"GRAMPS_MEDIA_MAX_BYTES": "5242880"
"GRAMPS_MEDIA_ALLOW_PRIVATE": "false"
"GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "52428800"
timeout: 300
Placeholders to fill from your own secret store: ${GRAMPS_PASSWORD}, ${GRAMPS_REFRESH_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured +updated-4d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/scormave/gramps-web-mcp:2.6.0 | oci | unpinned | docker | GRAMPS_PASSWORD, GRAMPS_REFRESH_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.Scormave/gramps-web-mcp",
"title": "Gramps Web MCP",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "2.6.0",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/scormave/gramps-web-mcp:2.6.0",
"runtimeHint": "docker",
"registryType": "oci",
"environmentVariables": [
{
"name": "MCP_TRANSPORT",
"value": "stdio",
"description": "Pinned to stdio for registry-installed containers that the client spawns itself. The image's own default is http (Streamable HTTP on port 8080) for networked Docker deployments; see the README for that setup."
},
{
"name": "GRAMPS_API_URL",
"isRequired": true,
"description": "Base URL of your Gramps Web instance"
},
{
"name": "GRAMPS_USERNAME",
"description": "Gramps Web API username; required with GRAMPS_PASSWORD unless GRAMPS_REFRESH_TOKEN is set"
},
{
"name": "GRAMPS_PASSWORD",
"isSecret": true,
"description": "Gramps Web API password; required with GRAMPS_USERNAME unless GRAMPS_REFRESH_TOKEN is set"
},
{
"name": "GRAMPS_REFRESH_TOKEN",
"isSecret": true,
"description": "Refresh token for instances with password login disabled; replaces GRAMPS_USERNAME and GRAMPS_PASSWORD"
},
{
"name": "GRAMPS_TREE_ID",
"isRequired": true,
"description": "Gramps Web tree UUID"
},
{
"name": "GRAMPS_READ_ONLY",
"default": "false",
"description": "Set to true to block create, update, and delete tools"
},
{
"name": "GRAMPS_MUTATION_SERIALIZE",
"default": "true",
"description": "Serialize create/update/delete HTTP calls in-process (set false to allow parallel writes)"
},
{
"name": "GRAMPS_MUTATION_MIN_INTERVAL_MS",
"default": "0",
"description": "Minimum milliseconds between mutation HTTP calls. Use 250 or 500 on SQLite if you see database is locked"
},
{
"name": "GRAMPS_LOG_LEVEL",
"default": "Information",
"description": "Server log level: Trace, Debug, Information, Warning, Error, Critical, or None. Debug and Trace also log request and response bodies, which contain genealogy data"
},
{
"name": "GRAMPS_MEDIA_RESOURCES_ENABLED",
"default": "false",
"description": "Set to true to expose read_media and the media resources for thumbnails and full files, and to allow uploads from GRAMPS_MEDIA_UPLOAD_DIRS"
},
{
"name": "GRAMPS_MEDIA_MAX_BYTES",
"default": "5242880",
"description": "Maximum bytes returned by read_media or a media resource"
},
{
"name": "GRAMPS_MEDIA_ALLOW_PRIVATE",
"default": "false",
"description": "Set to true to return bytes for media records marked private"
},
{
"name": "GRAMPS_MEDIA_UPLOAD_DIRS",
"description": "Absolute folders, separated by : (; on Windows), that create_media and update_media may upload photos, scans and PDFs from while GRAMPS_MEDIA_RESOURCES_ENABLED is true. Unset turns uploading off and hides create_media"
},
{
"name": "GRAMPS_MEDIA_UPLOAD_MAX_BYTES",
"default": "52428800",
"description": "Largest file create_media or update_media uploads"
}
]
}
],
"repository": {
"url": "https://github.com/Scormave/gramps-web-mcp",
"source": "github"
},
"description": "MCP server for structured access to Gramps Web genealogy data"
}