
Open Archives
Connects Claude to the Open Archives genealogical database covering Dutch births, deaths, marriages, censuses, and historical documents. Exposes 21 operations including record search, family matching, archive statistics, historical weather data from KNMI, and full-text transcription search. Auto-generated from the OpenAPI spec with built-in rate limiting, Redis caching, and automatic pagination for large result sets. Available as a hosted endpoint at mcp.openarchieven.nl or self-hosted via stdio. Useful for genealogy research, historical demographic analysis, or building family trees with proper source citations. Public dataset, no authentication required.
- GitHub stars
- 4
- tools
- 22
- transport
- HTTP
- last updated
- Jul 31, 2026
Install
From registry metadata$ npx add-mcp https://mcp.openarchieven.nl/ --name openarchievenRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http openarchieven https://mcp.openarchieven.nl/Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 22 toolsVerified live against the running server on Nov 6, 2026.
search_recordsSearch genealogical records Searches the genealogical dataset and returns found persons and records. Supports filtering by archive, source type, event place, birth place, relation type and country. Results are pageable and sortable. Note: version 1.1 uses `archive_code` instea...12 params
Search genealogical records Searches the genealogical dataset and returns found persons and records. Supports filtering by archive, source type, event place, birth place, relation type and country. Results are pageable and sortable. Note: version 1.1 uses `archive_code` instea...
archive_codestringbirthplacestringcountry_codestringeventplacestringlangstringnl · enname*stringnot_archivenumber0 · 1number_showintegerrelationtypestringsortnumber-6 · -5 · -4 · -3 · -2 · -1sourcetypestringstartintegershow_recordShow a single genealogical record Returns one specific genealogical record in JSON format (UTF-8). The response conforms to the Archive 2 All (A2A) model. Also available as XML, GEDCOM, Turtle (TTL) and N-Triples (NT) by changing the file extension in the URL. Note: version 1....3 params
Show a single genealogical record Returns one specific genealogical record in JSON format (UTF-8). The response conforms to the Archive 2 All (A2A) model. Also available as XML, GEDCOM, Turtle (TTL) and N-Triples (NT) by changing the file extension in the URL. Note: version 1....
archive*stringidentifier*stringlangstringnl · enmatch_recordMatch a person to birth and death records Searches the genealogical dataset by exact name and birth year and returns the Open Archives URIs of birth records, death records and registrations in which the person is mentioned.3 params
Match a person to birth and death records Searches the genealogical dataset by exact name and birth year and returns the Open Archives URIs of birth records, death records and registrations in which the person is mentioned.
birthyear*integerlangstringnl · enname*stringget_births_years_agoList births that occurred a specified number of years ago Returns a list of birth records for people born exactly the specified number of years ago from today. Note: version 1.1 uses `archive_code` instead of `archive` and includes the archive name and record URL.2 params
List births that occurred a specified number of years ago Returns a list of birth records for people born exactly the specified number of years ago from today. Note: version 1.1 uses `archive_code` instead of `archive` and includes the archive name and record URL.
number_showintegeryears*integerget_birthsFinds birth records6 params
Finds birth records
eventplacestringeventprovincestringeventyearintegername*stringnumber_showintegerstartintegerget_deathsFinds death records5 params
Finds death records
eventplacestringeventyearintegername*stringnumber_showintegerstartintegerget_marriagesFinds marriage records of couples (bride or groom)6 params
Finds marriage records of couples (bride or groom)
eventplacestringeventyearintegername1*stringname2*stringnumber_showintegerstartintegerget_archivesList all archives with statistics Returns an array of all participating archives including their archive code (used in other API calls), name, homepage URL, Twitter handle, ISIL code and search URL on Open Archives. Note: version 1.1 adds ISIL codes and removes defunct Archief...
List all archives with statistics Returns an array of all participating archives including their archive code (used in other API calls), name, homepage URL, Twitter handle, ISIL code and search URL on Open Archives. Note: version 1.1 adds ISIL codes and removes defunct Archief...
No parameters. Call it with no arguments.
get_record_statsRecord count statistics per archive Returns record count statistics. When no archive is specified, all archives are listed with their total number of records. When an archive code is specified, the source types available for that archive are returned with their individual reco...1 params
Record count statistics per archive Returns record count statistics. When no archive is specified, all archives are listed with their total number of records. When an archive code is specified, the source types available for that archive are returned with their individual reco...
archive_codestringget_source_type_statsRecord count statistics per source type Returns statistics about source types. Without an archive_code all source types across the entire dataset are returned with total record counts. With an archive_code, only source types for that archive are returned. Note: version 1.1 use...1 params
Record count statistics per source type Returns statistics about source types. Without an archive_code all source types across the entire dataset are returned with total record counts. With an archive_code, only source types for that archive are returned. Note: version 1.1 use...
archive_codestringget_event_type_statsRecord count statistics per event type Returns statistics about event types. Without an archive_code all event types across the entire dataset are returned with total counts. With an archive_code, only event types for that archive are returned. Note: version 1.1 uses `archive_...1 params
Record count statistics per event type Returns statistics about event types. Without an archive_code all event types across the entire dataset are returned with total counts. With an archive_code, only event types for that archive are returned. Note: version 1.1 uses `archive_...
archive_codestringget_comment_statsComment count statistics Returns the total number of validated comments made on records. When no archive_code is provided, the global total is returned. When an archive code is provided, the count for that archive is returned. Note: version 1.1 uses `archive_code` instead of `...1 params
Comment count statistics Returns the total number of validated comments made on records. When no archive_code is provided, the global total is returned. When an archive code is provided, the count for that archive is returned. Note: version 1.1 uses `archive_code` instead of `...
archive_codestringget_family_name_statsFamily name frequency statistics Returns the number of times family names appear in events for the selected source types, place and period. Results are ordered by frequency. Open Archives uses this endpoint to power its family name frequency visualisation.6 params
Family name frequency statistics Returns the number of times family names appear in events for the selected source types, place and period. Results are ordered by frequency. Open Archives uses this endpoint to power its family name frequency visualisation.
eventplacestringeventtypenumber0 · 1 · 2 · 3 · 6eventyearendintegereventyearstartintegerlangstringnl · en · de · frnumber_showintegerget_first_name_statsFirst name frequency statistics for a given place and year Returns the top-X list of first names in the specified place and year. When a person has multiple forenames, only the first is counted. Currently only Amsterdam is available as a place.3 params
First name frequency statistics for a given place and year Returns the top-X list of first names in the specified place and year. When a person has multiple forenames, only the first is counted. Currently only Amsterdam is available as a place.
eventplace*stringeventyear*integernumber_showintegerget_profession_statsProfession frequency statistics Returns the number of times professions appear in records for the selected period and place. Results are ordered by frequency. Open Archives uses this endpoint to power its profession frequency visualisation.5 params
Profession frequency statistics Returns the number of times professions appear in records for the selected period and place. Results are ordered by frequency. Open Archives uses this endpoint to power its profession frequency visualisation.
eventplacestringeventyearendintegereventyearstartintegerlangstringnl · en · de · frnumber_showintegerget_breakdownCross-tabulation aggregation grouped by one dimension Returns record counts filtered by any combination of archive, source type, event type, event place and year range, grouped by ONE chosen dimension (archive, sourcetype, eventtype, place or year). Use this endpoint to answer...11 params
Cross-tabulation aggregation grouped by one dimension Returns record counts filtered by any combination of archive, source type, event type, event place and year range, grouped by ONE chosen dimension (archive, sourcetype, eventtype, place or year). Use this endpoint to answer...
archive_codestringeventplacestringeventtypenumber0 · 1 · 2 · 3 · 6group_by*stringarchive · sourcetype · eventtype · place · yearlangstringnl · en · de · frmin_countintegernumber_showintegersortstringcount_desc · count_asc · name_ascsourcetypestringyear_endintegeryear_startintegerget_historical_weatherHistorical weather measurements for a date and location Returns historical weather measurements from the nearest Dutch weather station for the specified date and coordinates. Data sources are the Royal Netherlands Meteorological Institute (KNMI): measurements 1701–1905 and 190...4 params
Historical weather measurements for a date and location Returns historical weather measurements from the nearest Dutch weather station for the specified date and coordinates. Data sources are the Royal Netherlands Meteorological Institute (KNMI): measurements 1701–1905 and 190...
date*stringlangstringnl · enlatitude*numberlongitude*numberget_census_dataDutch census data for a place and year Retrieves census data for a Dutch place or municipality for the census year nearest to the specified year. Available census years: 1795, 1830, 1840, 1849, 1859, 1869, 1879, 1889, 1899. Data sources: Volkstellingen.nl (DANS) and Gemeentege...5 params
Dutch census data for a place and year Retrieves census data for a Dutch place or municipality for the census year nearest to the specified year. Available census years: 1795, 1830, 1840, 1849, 1859, 1869, 1879, 1889, 1899. Data sources: Volkstellingen.nl (DANS) and Gemeentege...
gg_uristringplacestringprovincestringrichnessnumber1 · 2 · 3year*integersearch_transcriptionsFull-text search across page transcriptions Performs a full-text search across the page transcriptions of historical documents indexed by Open Archives. Mirrors the search UI at `/transcripties/zoek.php`. Results are ordered by Elasticsearch relevance (the order is fixed and c...9 params
Full-text search across page transcriptions Performs a full-text search across the page transcriptions of historical documents indexed by Open Archives. Mirrors the search UI at `/transcripties/zoek.php`. Results are ordered by Elasticsearch relevance (the order is fixed and c...
archive_codestringarchive_numberstringinventory_numberstringlangstringnl · en · de · frnumber_showintegerq*stringstartintegeryear_endintegeryear_startintegerbrowse_transcriptionsBrowse transcriptions hierarchically Returns a hierarchical browse of available page transcriptions. Mirrors `/transcripties/lijst/`. Three modes, depending on the supplied filters: * No filter — top-level list of source archives ordered by total transcription count (descendin...3 params
Browse transcriptions hierarchically Returns a hierarchical browse of available page transcriptions. Mirrors `/transcripties/lijst/`. Three modes, depending on the supplied filters: * No filter — top-level list of source archives ordered by total transcription count (descendin...
archive_codestringarchive_numberstringlangstringnl · en · de · frshow_transcriptionRetrieve a single transcription Returns the full transcript of a single page along with its source citation. Mirrors `/transcripties/toon/<id>`. AI-generated summaries are deliberately not returned by this endpoint.2 params
Retrieve a single transcription Returns the full transcript of a single page along with its source citation. Mirrors `/transcripties/toon/<id>`. AI-generated summaries are deliberately not returned by this endpoint.
id*stringlangstringnl · en · de · frview_transcriptionOpen one or more transcribed document pages in an interactive deep-zoom viewer with the transcription text alongside. Pass page identifiers returned by search_transcriptions / browse_transcriptions (form <ISIL>_<archive>_<page>, e.g. NL-SdmGA_1504889_11). Optionally highlight...2 params
Open one or more transcribed document pages in an interactive deep-zoom viewer with the transcription text alongside. Pass page identifiers returned by search_transcriptions / browse_transcriptions (form <ISIL>_<archive>_<page>, e.g. NL-SdmGA_1504889_11). Optionally highlight...
highlight_termstringids*arraySponsors
Readme
Open Archives MCP Server
Production-grade hybrid MCP + HTTP + SSE server generated from the Open Archives OpenAPI specification. Covers genealogical records (births, deaths, marriages, censuses), archive statistics, historical weather, and full-text page transcriptions of historical documents.
OpenAPI source used to generate tools:
../api/openapi.yaml (local)
https://api.openarchieven.nl/openapi.yaml (remote)
Overview
A schema-aware server that automatically converts the OpenAPI specification into callable tools and exposes them through multiple transports:
- MCP Remote (JSON-RPC over StreamableHTTP)
- HTTP JSON API
- SSE streaming with auto-pagination
- Chunked HTTP streaming with auto-pagination
- Redis caching (optional)
- Health checks
Video (Dutch): Help AI met jouw erfgoedservices (via MCP)
Use with Claude
Add as a custom connector
A hosted endpoint is available — no installation required.
In claude.ai or Claude Desktop:
- Open Settings → Connectors.
- Click Add custom connector.
- Enter the URL:
https://mcp.openarchieven.nl/ - Save and approve when prompted.
Details
- Repository
- github.com/coret/openarchieven-mcp-server
- Website
- www.openarchieven.nl
- Transport
- HTTP
- Registry
- MCP registry, active
- Resources
- 1
- Tools verified
- Nov 6, 2026