Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Search the UK National Archives' Discovery catalogue; find Chelsea pensioners' papers in WO 97.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
TNA_DISCOVERY_TIMEOUT, TNA_DISCOVERY_MIN_INTERVAL, TNA_DISCOVERY_DAILY_BUDGET, TNA_DISCOVERY_CONTACT, TNA_DISCOVERY_STATE_DIRYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"tna-discovery": {
"command": "uvx",
"args": [
"tna-discovery-mcp"
],
"env": {
"TNA_DISCOVERY_TIMEOUT": "your-value",
"TNA_DISCOVERY_MIN_INTERVAL": "your-value",
"TNA_DISCOVERY_DAILY_BUDGET": "your-value",
"TNA_DISCOVERY_CONTACT": "your-value",
"TNA_DISCOVERY_STATE_DIR": "your-value"
}
}
}
}Run this in your terminal
claude mcp add tna-discovery --env TNA_DISCOVERY_TIMEOUT=your-value --env TNA_DISCOVERY_MIN_INTERVAL=your-value --env TNA_DISCOVERY_DAILY_BUDGET=your-value --env TNA_DISCOVERY_CONTACT=your-value --env TNA_DISCOVERY_STATE_DIR=your-value -- uvx tna-discovery-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"tna-discovery": {
"command": "uvx",
"args": [
"tna-discovery-mcp"
],
"env": {
"TNA_DISCOVERY_TIMEOUT": "your-value",
"TNA_DISCOVERY_MIN_INTERVAL": "your-value",
"TNA_DISCOVERY_DAILY_BUDGET": "your-value",
"TNA_DISCOVERY_CONTACT": "your-value",
"TNA_DISCOVERY_STATE_DIR": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"tna-discovery": {
"type": "stdio",
"command": "uvx",
"args": [
"tna-discovery-mcp"
],
"env": {
"TNA_DISCOVERY_TIMEOUT": "your-value",
"TNA_DISCOVERY_MIN_INTERVAL": "your-value",
"TNA_DISCOVERY_DAILY_BUDGET": "your-value",
"TNA_DISCOVERY_CONTACT": "your-value",
"TNA_DISCOVERY_STATE_DIR": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
TNA_DISCOVERY_TIMEOUT envTNA_DISCOVERY_MIN_INTERVAL envTNA_DISCOVERY_DAILY_BUDGET envTNA_DISCOVERY_CONTACT envTNA_DISCOVERY_STATE_DIR envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account ianderso, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 28 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
An MCP server for Discovery, the catalogue of the UK National Archives (TNA): more than 37 million descriptions of the records held at Kew, and the catalogues of more than 2,500 other archives across the UK and beyond, through TNA's keyless Discovery API.
For family historians the catalogue is where a British soldier, a will, a muster roll or a county record office's papers are first found. One series gets a tool of its own: WO 97, the Royal Hospital Chelsea's soldiers' service documents, which describes every man discharged to a pension from 1760 to 1854 in one standard sentence ("JOHN ATKINSON Born MANCHESTER, Lancashire Served in Royal Artillery Discharged aged 41"). find_soldier searches it by name and keeps the men whose regiment, birthplace and discharge year fit, each parsed into fields with an estimated birth year.
It works the way a careful genealogist does. A catalogue description is a finding aid: it says a record exists and where it is, not what it says. Images of most series are not free on Discovery. WO 97's are on Findmypast, and FamilySearch collection 1952868 indexes them. Every result carries the holding archive, the reference and the record's Discovery page, because the archive's reference is what gets cited, not this server.
It is the UK counterpart of nara-catalog-mcp. Nothing here writes anywhere, and nothing here keeps a family tree.
This is an independent project. It is not affiliated with, endorsed by, or supported by The National Archives.
The server publishes five tools. All are read-only.
| Tool | Purpose |
|---|---|
search_records | Search the catalogue's descriptions by words, series (WO 97), department (WO), covering dates, and holder (TNA, other archives, or one archive by Archon code). Each hit has its id, reference, description, covering dates, holder, a digitised flag and its page; a WO 97 item is parsed too. Reports counts by holder, archive and century. |
get_record | One description in full, by id or by exact reference (WO 97/1211/256): every field Discovery gives, its place in the hierarchy (department, series, piece), where the record can be read, and a citation. A WO 97 item's description is parsed into name, birthplace, county, regiments, discharge age and year, service years and an estimated birth year, keeping the original text. |
browse | The records one level below a series, sub-series or piece, in catalogue order, with a cursor to continue: WO 97's pieces of one regiment's men, WO 12's regiments and their yearly muster books. |
find_soldier | A WO 97 search by surname (a trailing * for variants), forename, discharge years, regiment and birthplace, with each match parsed. Says how many descriptions were read and why the rest were set aside. |
budget_status | Today's requests against the daily budget, this session's, and the last error. Makes no request. |
You need Python 3.11 or later and uv. There is no key to request.
Without cloning. uvx fetches it from PyPI and runs it in one step:
uvx tna-discovery-mcp
From a clone, which is what you want if you will change it:
git clone https://github.com/ianderso/tna-discovery-mcp
cd tna-discovery-mcp uv sync uv run tna-discovery-mcp # stdio server, usually launched by the client
Either way the server speaks MCP over stdio, so you will normally let an MCP client start it rather than run it by hand.
{
"mcpServers": { "tna-discovery": { "command": "uvx", "args": ["tna-discovery-mcp"] } } }
A desktop app does not always inherit your shell's PATH. If the server fails to start because uvx cannot be found, give the full path that which uvx prints as the command.
claude mcp add tna-discovery -- uvx tna-discovery-mcp
TNA's API page asks developers to email them, with the IP address requests will come from: "please contact us via email and include the IP address". The API answered without it when this server was built, so it is a request, not a condition of access. Because every user of this server sends requests from their own address, the request passes to you: if you use the server regularly, write to webmaster@nationalarchives.gov.uk with your IP address and a line on what you use the API for. TNA also asks for feedback on the API.
Nothing is required. A .env file in the directory the server starts in supplies anything the environment does not; only that directory is read.
| Variable | Meaning |
|---|---|
TNA_DISCOVERY_TIMEOUT | HTTP timeout in seconds for one request. Default 30. |
TNA_DISCOVERY_MIN_INTERVAL | Least seconds between two requests. Default 1, and never below 1: TNA's guideline. |
TNA_DISCOVERY_DAILY_BUDGET | Requests a day (UTC) before every tool refuses with budget_spent. Default 3,000, and never above it: TNA's guideline. Set it lower to leave headroom. |
TNA_DISCOVERY_CONTACT | An email address or URL added to the User-Agent, so TNA can reach you if your use causes trouble. Optional, and courteous. |
TNA_DISCOVERY_STATE_DIR | Where the day's call count is kept. Default ~/.local/state/tna-discovery-mcp. The file holds a date and a number, never anything the API returned. |
An unusable value is reported on the first tool call as a not_configured result naming the variable. There is deliberately no cache directory: see below.
TNA's terms for the Discovery API (read 2026-10-10 and 2026-10-11) say, in brief:
budget_spent and send nothing until midnight UTC. budget_status shows the count.robots.txt on discovery.nationalarchives.gov.uk disallows the website's browse, results, search-interface and image paths, among others; it does not mention /API/, which is what this server uses.
Discovery may be replaced. In late 2025 TNA launched a beta of a new catalogue that may in time take over from Discovery. This server reads the Discovery API only; if Discovery is retired, the server will need a new client for whatever replaces it.
get_record's images says where to read them.digitised has an image on Discovery itself, reached from its Discovery page. This server downloads nothing.date_from and date_to keep records whose covering dates overlap the range, so a man who served 1811-1835 is in a search for 1831-1834. find_soldier then keeps only men whose discharge year falls in the range.*.find_soldier finds nobody discharged later; browse the pieces instead.WO 97/1211/256: a department code, a space, then series, piece and item. The server tidies case and spacing (wo97/1211 works); anything else is searched for, not guessed.reference or date.citation.cite_as is the holder and reference ("The National Archives, Kew, WO 97/1211/256"); add the series title, the covering dates and where you read the image.blocked; a spent budget as budget_spent.Tool arguments are written by a model, and the model reads text this server does not control: catalogue descriptions, web pages, other tools' output. The server assumes that text can steer the model, and limits what a steered model can make it do.
https://discovery.nationalarchives.gov.uk/API/. A request hook refuses any other host, including one named in a redirect; redirects are followed only on that host.Only the beginning is shown; read the rest in the repo