riksarkivet-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@riksarkivet-mcp find my great-grandfather's birth record in Heda parish, 1875"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
riksarkivet-mcp
An MCP server for Riksarkivet (the Swedish National Archives) open data. It lets an AI assistant do Swedish genealogy research from start to finish: work out which parish a village belongs to, find the digitised church books, and fetch and read the scanned pages, getting back a ready-made source citation.
It only uses Riksarkivet's public, keyless APIs:
API | Used for |
archive catalogue, topography, indexed birth/marriage/title-deed registers | |
browsing digitised volumes and fetching page images |
Metadata is open data and the images are public domain (PDM 1.0).
Tools
Tool | What it does |
| Free text / name / place / year search, filterable by record type ( |
| Full entry of an indexed register record: parents, occupations, residence, witnesses, volume and page |
| Village/farm/parish → parish and province, including historical parishes (e.g. Harstad, merged into Väderstad 1891) |
| A parish's digitised church-book volumes grouped by series (C births, A I household examinations, E I marriages, F deaths, …), with date ranges and volume ids |
| Walk any archive in IIIF (fonds → series → volumes), including court records, military rolls and maps |
| A volume's date range, remarks, and image number → printed page number map |
| Returns a page image (whole page or a zoomed region) plus its Källhänvisning and viewer link |
Typical flow
find_place("Kälstad") → Källstad, Källstads församling, Östergötland
parish_archive("Heda", "C") → C/5 (1870-1888) [volume: A0001234] …
volume_pages("A0001234") → Bild:Sida map
get_page("A0001234", image=57) → scan + "Heda kyrkoarkiv, Födelse- och dopböcker, SE/VALA/00128/C/5 (1870-1888), bildid: A0001234_00057, sida 108"
get_page("A0001234", image=57, region="pct:0,40,60,30", width=2000) → zoom on one entryRelated MCP server: Riksarkivet MCP Server
Limitations
Coverage of images. Only volumes that Riksarkivet scanned itself are served over IIIF, and for most parishes that means roughly 1840–1900. Other periods may be available on sok.riksarkivet.se or through ArkivDigital.
Indexed registers are regional. The searchable birth and marriage registers mainly cover Skåne, Blekinge, Halland and parts of Norrland. An empty search result does not mean a record doesn't exist, so read the church books with
get_pageinstead.No census search. The census databases (folkräkningar) and other database searches on sok.riksarkivet.se have no public API and are not included.
Install
Requires uv.
git clone https://github.com/bucklo/riksarkivet-mcp
cd riksarkivet-mcp
uv syncClaude Code
claude mcp add riksarkivet -- uv run --directory /path/to/riksarkivet-mcp riksarkivet-mcpClaude Desktop / other clients
{
"mcpServers": {
"riksarkivet": {
"command": "uv",
"args": ["run", "--directory", "/path/to/riksarkivet-mcp", "riksarkivet-mcp"]
}
}
}Development
uv run pytest # unit tests
uv run pytest -m live # smoke tests against the real APIs
uv run ruff check .License
MIT. Not affiliated with Riksarkivet.
Available Tools
7 toolsbrowseA
List the children of any Riksarkivet archive unit in IIIF (fonds -> series -> volumes). Use for non-church archives too (courts, military rolls, maps). archive_id is the id from search_records or parish_archive.
Inputs: archive_id (required). Returns: result
find_placeB
Look up a place (village, farm, parish) in Riksarkivet's topographic register and show which parish/province it belongs to, including historical parishes (e.g. Harstad parish, merged into Väderstad 1891).
Inputs: name (required), limit. Returns: result
get_pageA
Fetch a scanned page so it can be read. Returns the image plus a ready-made source citation (Källhänvisning) and viewer link.
volume: volume id like 'A0006950', a manifest URL, or a full image id
like 'A0006950_00010' (then image is taken from it).
image: image number (Bild). page: printed page number (Sida) instead of image.
width: output width in px (400-3000). Use ~1600 for an overview, then zoom with region.
region: 'full', 'pct:x,y,w,h' (percent of the page) or 'x,y,w,h' pixels - e.g.
'pct:50,0,50,50' = top-right quarter, good for reading small handwriting.
rotation: 0/90/180/270.
Inputs: volume (required), page, image, width, +2 more. Returns: result
get_register_recordA
Full details of an indexed register entry (birth, marriage, title deed) by its id from search_records - parents, occupations, residence, witnesses, volume/page.
Inputs: record_id (required). Returns: result
parish_archiveA
List the digitised volumes of a parish's church archive (kyrkoarkiv), grouped by series, with date ranges and the volume id to pass to volume_pages/get_page.
parish: e.g. "Heda", "Väderstad", "Appuna".
series: optional filter on series code or name, e.g. "C" (födelse- och dopböcker),
"A I" (husförhörslängder), "E I" (vigsel), "F" (död), "A II" (församlingsböcker),
"B" (flyttningslängder).
Only volumes scanned by Riksarkivet itself are listed (mostly c. 1840-1900). Lines
starting "Se:" mean the records are bound into another listed volume.
Inputs: parish (required), series. Returns: result
search_recordsA
Search Riksarkivet's catalogue and indexed registers.
text: free text. name: person name. place: parish/place name.
year_min/year_max: restrict by year.
record_type: birth, marriage, title_deed, register, volume, record, archive (fonds),
series, place, parish, settlement, agent. Omit for everything.
only_digitised: only material with scanned images.
limit (max 100) / offset for paging.
Note: indexed birth/marriage registers cover only some regions; use parish_archive +
get_page to read church books directly elsewhere (e.g. Östergötland).
Inputs: name, text, limit, place, +5 more. Returns: result
volume_pagesA
Show a volume's title, date range, remarks and the mapping image number -> printed page number (Bild:Sida). volume: id like 'A0006950' or a manifest URL.
Inputs: volume (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Most tools map to distinct steps of the archival workflow: search -> record detail -> place lookup -> archive browsing -> volume metadata -> page image. The only real overlap is parish_archive vs browse, since both list children of an archive unit, but the description explicitly scopes browse to non-church archives, which mitigates confusion.
There is a partial verb_noun pattern (search_records, get_register_record, get_page, find_place, volume_pages) but it is broken by bare 'browse' and the noun-only 'parish_archive'. Readable, but conventions are mixed rather than predictable.
Seven tools is a tight, well-scoped set that mirrors the research workflow without redundancy. Each tool earns its place, from search to image retrieval.
The surface covers the full chain of finding, inspecting and reading digitised material, plus citations. Minor gaps exist: no tool to resolve an archive/fonds-level description or to start browsing from a root archive id, and no structured export of a record's citation.
Maintenance
Related MCP Connectors
Swedish open data for Claude and other AI assistants - verified, with sources.
Swedish company data (Bolagsverket, SCB) for AI agents, verified, with history and annual reports
Swedish public data as read-only tools: registries, statistics, domains, transport, energy.
Swedish B2B intelligence for AI agents: insolvency risk, procurement, BRF health and more.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create, edit, and query genealogical data from GEDCOM files. Supports complex genealogy searches, automatic data enrichment from web sources, relationship analysis, and biography generation for individuals and families.17MIT
- AlicenseAqualityAmaintenanceEnables users to search and access digital collections from the Swedish National Archives (Riksarkivet) through multiple APIs. Supports searching records by keywords, exploring collections, and downloading historical images and documents.227Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query genealogy data from GEDCOM files with 24 tools for search, navigation, relationship analysis, and timeline events.1MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search and retrieve consolidated Swedish statutes (SFS) from the Riksdagen open data API, with verifiable citations and persistent identifiers.495 PyPIApache 2.0