Koskamo

OpenHeritage MCP

An anonymous, read-only MCP server for the OpenHeritage platform that enables agents to search public genealogy and cultural heritage records, including memorials, graves, cemeteries, archival documents, and historical places focused on Ukraine and Central Europe.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

OpenHeritage MCP logo, by OpenHeritageOnlineCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by OpenHeritageOnline
MCP endpoint (Streamable HTTP)
https://openheritage.online/mcp
Vendor documentation

What its tools do

13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

13 of 13 have a description · 0 of 13 declare behavior hints · 13 of 13 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for memorials and grave sites
  • Retrieve archival documents and transcriptions
  • Find cemetery records and photographs
  • Search historical places and maps

Source and maintenance

Community listingRegistry 2.11.3
Maintenance checked

Protocol and capabilities

Server
online.openheritage/public-search 3.1.0
MCP protocol negotiated in check
2025-11-25
Tools
13 advertised
Resources
2 advertised
Resource templates
31 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {},
  "logging": {},
  "resources": {}
}

Tools

13 advertised

search_collections
Advertised by the server during the last successful anonymous check.

Search public OpenHeritage collections by text.

search_collections input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
search_memorials
Advertised by the server during the last successful anonymous check.

Search public memorial records by text.

search_memorials input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
find_places_nearby
Advertised by the server during the last successful anonymous check.

Find active canonical places near coordinates, optionally resolving historical context for a date.

find_places_nearby input schema
{
  "type": "object",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "date": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional historical date in yyyy-MM-dd format; names and context are resolved as known on that date."
    },
    "take": {
      "type": [
        "integer",
        "null"
      ],
      "default": null,
      "description": "Optional number of places to return, nearest first, from 1 through 20. Defaults to 20."
    },
    "latitude": {
      "type": "number",
      "description": "Required latitude in decimal degrees, from -90 through 90."
    },
    "radiusKm": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "description": "Optional positive search radius in kilometres. Defaults to 50."
    },
    "typeCode": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional canonical place type code (see the place-type-catalog resource)."
    },
    "longitude": {
      "type": "number",
      "description": "Required longitude in decimal degrees, from -180 through 180."
    }
  }
}
search_sources
Advertised by the server during the last successful anonymous check.

Search public sources by text.

search_sources input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
search_records
Advertised by the server during the last successful anonymous check.

Search public OpenHeritage records across supported entity types.

search_records input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    },
    "entityTypes": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "string",
          "null"
        ]
      },
      "default": null,
      "description": "Optional public entity type filters."
    }
  }
}
search_documents
Advertised by the server during the last successful anonymous check.

Search public source documents by text.

search_documents input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
get_place
Advertised by the server during the last successful anonymous check.

Read a canonical place by stable ID, optionally resolving its historical context for a date.

get_place input schema
{
  "type": "object",
  "required": [
    "placeId"
  ],
  "properties": {
    "date": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional historical date in yyyy-MM-dd format; the place's name and containing places are resolved as known on that date."
    },
    "placeId": {
      "type": "string",
      "description": "Required stable canonical place ID (GUID), as returned by the place tools."
    }
  }
}
search_cemeteries
Advertised by the server during the last successful anonymous check.

Search public cemeteries by text.

search_cemeteries input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
search_authors
Advertised by the server during the last successful anonymous check.

Search public person and organization author authority records by text.

search_authors input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
search_repositories
Advertised by the server during the last successful anonymous check.

Search public source repositories by text.

search_repositories input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for."
    }
  }
}
search_places
Advertised by the server during the last successful anonymous check.

Search active canonical places by text and optional geographic or type filters.

search_places input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "date": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional historical date in yyyy-MM-dd format."
    },
    "query": {
      "type": "string",
      "description": "Required place name or text to search for."
    },
    "latitude": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "description": "Optional latitude in decimal degrees; longitude is required when supplied."
    },
    "radiusKm": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "description": "Optional positive search radius in kilometres; coordinates are required when supplied."
    },
    "typeCode": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional canonical place type code (see the place-type-catalog resource)."
    },
    "longitude": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "description": "Optional longitude in decimal degrees; latitude is required when supplied."
    },
    "hasCoordinates": {
      "type": [
        "boolean",
        "null"
      ],
      "default": null,
      "description": "Optionally require places to have or not have coordinates."
    }
  }
}
autocomplete_places
Advertised by the server during the last successful anonymous check.

Autocomplete active canonical places by prefix, optionally resolving historical context for a date.

autocomplete_places input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "date": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional historical date in yyyy-MM-dd format; names and context are resolved as known on that date."
    },
    "take": {
      "type": [
        "integer",
        "null"
      ],
      "default": null,
      "description": "Optional number of suggestions to return, from 1 through 20. Defaults to 10."
    },
    "query": {
      "type": "string",
      "description": "Required beginning of a place name, as typed so far."
    },
    "typeCode": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional canonical place type code (see the place-type-catalog resource)."
    }
  }
}
search_page_text
Advertised by the server during the last successful anonymous check.

Search the transcribed text of public document pages, by keyword and meaning; each hit links to its page.

search_page_text input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Required text to search for: words, a name or a phrase from the page."
    },
    "semantic": {
      "type": [
        "boolean",
        "null"
      ],
      "default": null,
      "description": "Whether to include meaning-based matches as well as keyword matches. Defaults to true."
    },
    "sourceId": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional source ID (GUID) to search within the documents of one source."
    },
    "documentId": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Optional document ID (GUID) to search within one document."
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

source-classification-tags — Source classification tags

Advertised by the server during the last successful anonymous check.

Read the active Source classification taxonomy. Resolve a stable code to this environment's id before assigning classificationTagIds.

source-classification-tags URI
https://openheritage.online/api/tags?entityType=source

MIME type: application/json

place-type-catalog — Canonical place type catalog

Advertised by the server during the last successful anonymous check.

Read the active canonical place type catalog used by place search and place records.

place-type-catalog URI
https://openheritage.online/api/place-types

MIME type: application/json

cemetery — Cemetery

Advertised by the server during the last successful anonymous check.

Read one public cemetery, including its names, location, and descriptive metadata.

cemetery URI template
https://openheritage.online/api/cemeteries/{cemeteryId}

MIME type: application/json

cemetery-photo-gallery — Cemetery photo gallery

Advertised by the server during the last successful anonymous check.

Read the ordered public photo gallery and cover-photo identifier for one cemetery.

cemetery-photo-gallery URI template
https://openheritage.online/api/cemeteries/{cemeteryId}/photos

MIME type: application/json

place-revisions — Canonical place revisions

Advertised by the server during the last successful anonymous check.

Read one page of the public revision history for a canonical place.

place-revisions URI template
https://openheritage.online/api/canonical-places/{placeId}/revisions?skip={skip}&take={take}

MIME type: application/json

memorial-preview — Memorial preview

Advertised by the server during the last successful anonymous check.

Read the privacy-safe WebP preview for one visible memorial's primary image.

memorial-preview URI template
https://openheritage.online/api/memorials/{memorialId}/preview

MIME type: image/webp

source — Source

Advertised by the server during the last successful anonymous check.

Read one public source after discovering its identifier with a search tool.

source URI template
https://openheritage.online/api/sources/{sourceId}

MIME type: application/json

place-type — Canonical place type

Advertised by the server during the last successful anonymous check.

Read one active canonical place type definition by code.

place-type URI template
https://openheritage.online/api/place-types/{code}

MIME type: application/json

source-document-page-image — Source document page image

Advertised by the server during the last successful anonymous check.

Read the current public original image for a source document page.

source-document-page-image URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages/{pageKey}/image

MIME type: application/octet-stream

place-by-external-identity — Canonical places by external identity

Advertised by the server during the last successful anonymous check.

Find canonical places matching an external provider identifier.

place-by-external-identity URI template
https://openheritage.online/api/canonical-places/by-external-identity?provider={provider}&externalId={externalId}

MIME type: application/json

memorial-transcription-statistics — Memorial transcription statistics

Advertised by the server during the last successful anonymous check.

Read public transcription progress and statistics for one visible memorial.

memorial-transcription-statistics URI template
https://openheritage.online/api/memorials/{memorialId}/transcription/stats

MIME type: application/json

memorial — Memorial

Advertised by the server during the last successful anonymous check.

Read one public memorial, its commemorated people, location, images, and provenance.

memorial URI template
https://openheritage.online/api/memorials/{memorialId}

MIME type: application/json

place-revision-compare — Canonical place revision comparison

Advertised by the server during the last successful anonymous check.

Compare one canonical place revision with its previous revision or the current place state.

place-revision-compare URI template
https://openheritage.online/api/canonical-places/{placeId}/revisions/{revisionId}/compare?mode={mode}

MIME type: application/json

memorial-image — Memorial image

Advertised by the server during the last successful anonymous check.

Read a privacy-safe public memorial image as either the thumb or processed original WebP variant.

memorial-image URI template
https://openheritage.online/api/images/{imageId}?variant={variant}

MIME type: image/webp

source-document-file — Source document file

Advertised by the server during the last successful anonymous check.

Read one current public original asset attached to a source document.

source-document-file URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/files/{assetId}

MIME type: application/octet-stream

source-document — Source document

Advertised by the server during the last successful anonymous check.

Read metadata for one public document belonging to a source.

source-document URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}

MIME type: application/json

place-children — Canonical place children

Advertised by the server during the last successful anonymous check.

Read one page of active canonical places related as children of a place.

place-children URI template
https://openheritage.online/api/canonical-places/{placeId}/children?skip={skip}&take={take}

MIME type: application/json

repository — Repository

Advertised by the server during the last successful anonymous check.

Read one public source repository after discovering its identifier with a search tool.

repository URI template
https://openheritage.online/api/repositories/{repositoryId}

MIME type: application/json

place — Canonical place

Advertised by the server during the last successful anonymous check.

Read one canonical place, including names, types, hierarchy relations, dates, geography, references, and provenance.

place URI template
https://openheritage.online/api/canonical-places/{placeId}

MIME type: application/json

source-document-page — Source document page

Advertised by the server during the last successful anonymous check.

Read metadata for one current public page in a source document.

source-document-page URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages/{pageKey}

MIME type: application/json

source-document-page-xml — Source document page XML

Advertised by the server during the last successful anonymous check.

Read the current public XML transcription or structured data for a source document page.

source-document-page-xml URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages/{pageKey}/xml

MIME type: application/xml

source-document-page-preview — Source document page preview

Advertised by the server during the last successful anonymous check.

Read a compact WebP preview of one public source document page.

source-document-page-preview URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages/{pageKey}/preview

MIME type: image/webp

cemetery-photo-thumbnail — Cemetery photo thumbnail

Advertised by the server during the last successful anonymous check.

Read the public WebP thumbnail for a photo belonging to one cemetery.

cemetery-photo-thumbnail URI template
https://openheritage.online/api/cemeteries/{cemeteryId}/photos/{photoId}/thumbnail

MIME type: image/webp

cemetery-photo-display — Cemetery photo display image

Advertised by the server during the last successful anonymous check.

Read the public WebP display image for a photo belonging to one cemetery.

cemetery-photo-display URI template
https://openheritage.online/api/cemeteries/{cemeteryId}/photos/{photoId}/display

MIME type: image/webp

collection — Collection

Advertised by the server during the last successful anonymous check.

Read one public OpenHeritage collection and its hierarchy metadata.

collection URI template
https://openheritage.online/api/collections/{collectionId}

MIME type: application/json

author — Author

Advertised by the server during the last successful anonymous check.

Read one public person or organization author authority record.

author URI template
https://openheritage.online/api/authors/{authorId}

MIME type: application/json

source-document-pages — Source document pages

Advertised by the server during the last successful anonymous check.

Read the ordered public page metadata for one source document.

source-document-pages URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages

MIME type: application/json

memorial-external-references — Memorial external references

Advertised by the server during the last successful anonymous check.

Read the public external references attached to one visible memorial.

memorial-external-references URI template
https://openheritage.online/api/memorials/{memorialId}/external-references

MIME type: application/json

cemetery-surname-statistics — Cemetery surname statistics

Advertised by the server during the last successful anonymous check.

Read public surname counts and gender breakdowns for one cemetery.

cemetery-surname-statistics URI template
https://openheritage.online/api/cemeteries/{cemeteryId}/surname-statistics

MIME type: application/json

source-document-page-display — Source document page display image

Advertised by the server during the last successful anonymous check.

Read the current JPEG display derivative for an eligible public source document page.

source-document-page-display URI template
https://openheritage.online/api/sources/{sourceId}/documents/{documentId}/pages/{pageKey}/display

MIME type: image/jpeg

place-at-date — Canonical place at date

Advertised by the server during the last successful anonymous check.

Read one canonical place and resolve its historical name, type, hierarchy, and location for an ISO yyyy-MM-dd date.

place-at-date URI template
https://openheritage.online/api/canonical-places/{placeId}?date={date}

MIME type: application/json

cemetery-statistics — Cemetery statistics

Advertised by the server during the last successful anonymous check.

Read public memorial and person statistics for one cemetery.

cemetery-statistics URI template
https://openheritage.online/api/cemeteries/{cemeteryId}/statistics

MIME type: application/json

memorial-image-rendition — Memorial image rendition

Advertised by the server during the last successful anonymous check.

Read a privacy-safe public memorial image by rendition name: thumb, display, or original.

memorial-image-rendition URI template
https://openheritage.online/api/memorials/{memorialId}/images/{imageId}/{variant}

MIME type: image/webp

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2095 ms
95th percentile latency
2095 ms

Maintenance history

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

  • · probe · passed · 2095 ms · metadata changed · 13 tool(s), 2 resource(s), 31 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you 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.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http openheritage-mcp https://openheritage.online/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add openheritage-mcp --url https://openheritage.online/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable openheritage-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "openheritage-mcp": {
      "url": "https://openheritage.online/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "openheritage-mcp": {
      "type": "streamableHttp",
      "url": "https://openheritage.online/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start openheritage-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "openheritage-mcp": {
      "type": "http",
      "url": "https://openheritage.online/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http openheritage-mcp https://openheritage.online/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://openheritage.online/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "openheritage-mcp": {
      "serverUrl": "https://openheritage.online/mcp"
    }
  }
}

Let your agent find its tools

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