Koskamo

Gramps Web MCP

An MCP server for the Gramps Web open-source genealogy platform that provides AI agents with structured, tool-based access to family trees. It supports reading and editing people, families, events, places, sources, citations, notes, media, repositories, and tags. Features include full-text search, kinship queries, careful edits with undo capabilities, and support for various MCP clients via stdio, Streamable HTTP, or SSE.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

Gramps Web MCP logo, by ScormaveCommunity listingLocal stdioSource reviewed; not executedPublished by Scormave
Vendor documentation

Checks and signals

Each line is separate evidence, not a trust score.

  • Popularity 21 GitHub stars

What you can do with it

  • Read and edit family tree data including people, events, and media
  • Perform full-text search and kinship queries like finding ancestors
  • Upload scans and photos with EXIF/GPS metadata stripped
  • Undo changes or confirm deletions before modifying the tree

Source and maintenance

Community listingRegistry 2.8.0AGPL-3.0
Last repository push
Latest release
v2.8.1
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

ghcr.io/scormave/gramps-web-mcp:2.8.0

ocidocker
ghcr.io/scormave/gramps-web-mcp:2.8.0 package definition
{
  "transport": "stdio",
  "identifier": "ghcr.io/scormave/gramps-web-mcp:2.8.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",
      "description": "Gramps Web API password; required with GRAMPS_USERNAME unless GRAMPS_REFRESH_TOKEN is set"
    },
    {
      "name": "GRAMPS_REFRESH_TOKEN",
      "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_CONFIRMATION",
      "default": "when-supported",
      "description": "Whether delete_object and undo_change ask the user to confirm through MCP elicitation: when-supported, required (refuse in clients that cannot ask), or off"
    },
    {
      "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"
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · repository · passed · metadata changed · updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "gramps-web-mcp-2-8-0": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
        "-e",
        "GRAMPS_API_URL=<YOUR_GRAMPS_API_URL>",
        "-e",
        "GRAMPS_USERNAME=<YOUR_GRAMPS_USERNAME>",
        "-e",
        "GRAMPS_PASSWORD=<YOUR_GRAMPS_PASSWORD>",
        "-e",
        "GRAMPS_REFRESH_TOKEN=<YOUR_GRAMPS_REFRESH_TOKEN>",
        "-e",
        "GRAMPS_TREE_ID=<YOUR_GRAMPS_TREE_ID>",
        "-e",
        "GRAMPS_READ_ONLY=<YOUR_GRAMPS_READ_ONLY>",
        "-e",
        "GRAMPS_MUTATION_SERIALIZE=<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "-e",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS=<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "-e",
        "GRAMPS_CONFIRMATION=<YOUR_GRAMPS_CONFIRMATION>",
        "-e",
        "GRAMPS_LOG_LEVEL=<YOUR_GRAMPS_LOG_LEVEL>",
        "-e",
        "GRAMPS_MEDIA_RESOURCES_ENABLED=<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "-e",
        "GRAMPS_MEDIA_MAX_BYTES=<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "-e",
        "GRAMPS_MEDIA_ALLOW_PRIVATE=<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_DIRS=<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES=<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>",
        "ghcr.io/scormave/gramps-web-mcp:2.8.0"
      ],
      "env": {
        "MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
        "GRAMPS_API_URL": "<YOUR_GRAMPS_API_URL>",
        "GRAMPS_USERNAME": "<YOUR_GRAMPS_USERNAME>",
        "GRAMPS_PASSWORD": "<YOUR_GRAMPS_PASSWORD>",
        "GRAMPS_REFRESH_TOKEN": "<YOUR_GRAMPS_REFRESH_TOKEN>",
        "GRAMPS_TREE_ID": "<YOUR_GRAMPS_TREE_ID>",
        "GRAMPS_READ_ONLY": "<YOUR_GRAMPS_READ_ONLY>",
        "GRAMPS_MUTATION_SERIALIZE": "<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS": "<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "GRAMPS_CONFIRMATION": "<YOUR_GRAMPS_CONFIRMATION>",
        "GRAMPS_LOG_LEVEL": "<YOUR_GRAMPS_LOG_LEVEL>",
        "GRAMPS_MEDIA_RESOURCES_ENABLED": "<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "GRAMPS_MEDIA_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "GRAMPS_MEDIA_ALLOW_PRIVATE": "<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "GRAMPS_MEDIA_UPLOAD_DIRS": "<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "gramps-web-mcp-2-8-0": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
        "-e",
        "GRAMPS_API_URL=<YOUR_GRAMPS_API_URL>",
        "-e",
        "GRAMPS_USERNAME=<YOUR_GRAMPS_USERNAME>",
        "-e",
        "GRAMPS_PASSWORD=<YOUR_GRAMPS_PASSWORD>",
        "-e",
        "GRAMPS_REFRESH_TOKEN=<YOUR_GRAMPS_REFRESH_TOKEN>",
        "-e",
        "GRAMPS_TREE_ID=<YOUR_GRAMPS_TREE_ID>",
        "-e",
        "GRAMPS_READ_ONLY=<YOUR_GRAMPS_READ_ONLY>",
        "-e",
        "GRAMPS_MUTATION_SERIALIZE=<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "-e",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS=<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "-e",
        "GRAMPS_CONFIRMATION=<YOUR_GRAMPS_CONFIRMATION>",
        "-e",
        "GRAMPS_LOG_LEVEL=<YOUR_GRAMPS_LOG_LEVEL>",
        "-e",
        "GRAMPS_MEDIA_RESOURCES_ENABLED=<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "-e",
        "GRAMPS_MEDIA_MAX_BYTES=<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "-e",
        "GRAMPS_MEDIA_ALLOW_PRIVATE=<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_DIRS=<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES=<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>",
        "ghcr.io/scormave/gramps-web-mcp:2.8.0"
      ],
      "env": {
        "MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
        "GRAMPS_API_URL": "<YOUR_GRAMPS_API_URL>",
        "GRAMPS_USERNAME": "<YOUR_GRAMPS_USERNAME>",
        "GRAMPS_PASSWORD": "<YOUR_GRAMPS_PASSWORD>",
        "GRAMPS_REFRESH_TOKEN": "<YOUR_GRAMPS_REFRESH_TOKEN>",
        "GRAMPS_TREE_ID": "<YOUR_GRAMPS_TREE_ID>",
        "GRAMPS_READ_ONLY": "<YOUR_GRAMPS_READ_ONLY>",
        "GRAMPS_MUTATION_SERIALIZE": "<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS": "<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "GRAMPS_CONFIRMATION": "<YOUR_GRAMPS_CONFIRMATION>",
        "GRAMPS_LOG_LEVEL": "<YOUR_GRAMPS_LOG_LEVEL>",
        "GRAMPS_MEDIA_RESOURCES_ENABLED": "<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "GRAMPS_MEDIA_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "GRAMPS_MEDIA_ALLOW_PRIVATE": "<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "GRAMPS_MEDIA_UPLOAD_DIRS": "<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "gramps-web-mcp-2-8-0": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
        "-e",
        "GRAMPS_API_URL=<YOUR_GRAMPS_API_URL>",
        "-e",
        "GRAMPS_USERNAME=<YOUR_GRAMPS_USERNAME>",
        "-e",
        "GRAMPS_PASSWORD=<YOUR_GRAMPS_PASSWORD>",
        "-e",
        "GRAMPS_REFRESH_TOKEN=<YOUR_GRAMPS_REFRESH_TOKEN>",
        "-e",
        "GRAMPS_TREE_ID=<YOUR_GRAMPS_TREE_ID>",
        "-e",
        "GRAMPS_READ_ONLY=<YOUR_GRAMPS_READ_ONLY>",
        "-e",
        "GRAMPS_MUTATION_SERIALIZE=<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "-e",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS=<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "-e",
        "GRAMPS_CONFIRMATION=<YOUR_GRAMPS_CONFIRMATION>",
        "-e",
        "GRAMPS_LOG_LEVEL=<YOUR_GRAMPS_LOG_LEVEL>",
        "-e",
        "GRAMPS_MEDIA_RESOURCES_ENABLED=<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "-e",
        "GRAMPS_MEDIA_MAX_BYTES=<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "-e",
        "GRAMPS_MEDIA_ALLOW_PRIVATE=<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_DIRS=<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES=<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>",
        "ghcr.io/scormave/gramps-web-mcp:2.8.0"
      ],
      "env": {
        "MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
        "GRAMPS_API_URL": "<YOUR_GRAMPS_API_URL>",
        "GRAMPS_USERNAME": "<YOUR_GRAMPS_USERNAME>",
        "GRAMPS_PASSWORD": "<YOUR_GRAMPS_PASSWORD>",
        "GRAMPS_REFRESH_TOKEN": "<YOUR_GRAMPS_REFRESH_TOKEN>",
        "GRAMPS_TREE_ID": "<YOUR_GRAMPS_TREE_ID>",
        "GRAMPS_READ_ONLY": "<YOUR_GRAMPS_READ_ONLY>",
        "GRAMPS_MUTATION_SERIALIZE": "<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS": "<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "GRAMPS_CONFIRMATION": "<YOUR_GRAMPS_CONFIRMATION>",
        "GRAMPS_LOG_LEVEL": "<YOUR_GRAMPS_LOG_LEVEL>",
        "GRAMPS_MEDIA_RESOURCES_ENABLED": "<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "GRAMPS_MEDIA_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "GRAMPS_MEDIA_ALLOW_PRIVATE": "<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "GRAMPS_MEDIA_UPLOAD_DIRS": "<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "gramps-web-mcp-2-8-0": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
        "-e",
        "GRAMPS_API_URL=<YOUR_GRAMPS_API_URL>",
        "-e",
        "GRAMPS_USERNAME=<YOUR_GRAMPS_USERNAME>",
        "-e",
        "GRAMPS_PASSWORD=<YOUR_GRAMPS_PASSWORD>",
        "-e",
        "GRAMPS_REFRESH_TOKEN=<YOUR_GRAMPS_REFRESH_TOKEN>",
        "-e",
        "GRAMPS_TREE_ID=<YOUR_GRAMPS_TREE_ID>",
        "-e",
        "GRAMPS_READ_ONLY=<YOUR_GRAMPS_READ_ONLY>",
        "-e",
        "GRAMPS_MUTATION_SERIALIZE=<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "-e",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS=<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "-e",
        "GRAMPS_CONFIRMATION=<YOUR_GRAMPS_CONFIRMATION>",
        "-e",
        "GRAMPS_LOG_LEVEL=<YOUR_GRAMPS_LOG_LEVEL>",
        "-e",
        "GRAMPS_MEDIA_RESOURCES_ENABLED=<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "-e",
        "GRAMPS_MEDIA_MAX_BYTES=<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "-e",
        "GRAMPS_MEDIA_ALLOW_PRIVATE=<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_DIRS=<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "-e",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES=<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>",
        "ghcr.io/scormave/gramps-web-mcp:2.8.0"
      ],
      "env": {
        "MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
        "GRAMPS_API_URL": "<YOUR_GRAMPS_API_URL>",
        "GRAMPS_USERNAME": "<YOUR_GRAMPS_USERNAME>",
        "GRAMPS_PASSWORD": "<YOUR_GRAMPS_PASSWORD>",
        "GRAMPS_REFRESH_TOKEN": "<YOUR_GRAMPS_REFRESH_TOKEN>",
        "GRAMPS_TREE_ID": "<YOUR_GRAMPS_TREE_ID>",
        "GRAMPS_READ_ONLY": "<YOUR_GRAMPS_READ_ONLY>",
        "GRAMPS_MUTATION_SERIALIZE": "<YOUR_GRAMPS_MUTATION_SERIALIZE>",
        "GRAMPS_MUTATION_MIN_INTERVAL_MS": "<YOUR_GRAMPS_MUTATION_MIN_INTERVAL_MS>",
        "GRAMPS_CONFIRMATION": "<YOUR_GRAMPS_CONFIRMATION>",
        "GRAMPS_LOG_LEVEL": "<YOUR_GRAMPS_LOG_LEVEL>",
        "GRAMPS_MEDIA_RESOURCES_ENABLED": "<YOUR_GRAMPS_MEDIA_RESOURCES_ENABLED>",
        "GRAMPS_MEDIA_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_MAX_BYTES>",
        "GRAMPS_MEDIA_ALLOW_PRIVATE": "<YOUR_GRAMPS_MEDIA_ALLOW_PRIVATE>",
        "GRAMPS_MEDIA_UPLOAD_DIRS": "<YOUR_GRAMPS_MEDIA_UPLOAD_DIRS>",
        "GRAMPS_MEDIA_UPLOAD_MAX_BYTES": "<YOUR_GRAMPS_MEDIA_UPLOAD_MAX_BYTES>"
      }
    }
  }
}

Let your agent find its tools

Find servers like Gramps Web MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.