An MCP server for the U.S. Federal Register public API. Ask an AI agent what a federal agency published today, search rules and proposed rules, pull a document in full, or see what is on public inspection before it is formally published.
Read only. No API key. No dependencies beyond the Python standard library.
Not affiliated with or endorsed by the Office of the Federal Register, NARA, or the Government Publishing Office. This is an independent client of a public API.
Python 3.9 or newer. Nothing to pip install.
git clone https://github.com/VeronaStrategic/federal-register-mcp.gitThen point your MCP client at it. For Claude Desktop, in
claude_desktop_config.json:
{
"mcpServers": {
"federal-register": {
"command": "python3",
"args": ["/absolute/path/to/federal-register-mcp/server.py"]
}
}
}The same command works with any MCP client that speaks stdio.
| Tool | What it does |
|---|---|
search_documents |
Search published documents by term, type, date range, or agency. Types are RULE, PRORULE, NOTICE, PRESDOCU. |
get_document |
Fetch one document in full by its document number, e.g. 2026-16423. |
list_agencies |
List publishing agencies and the slugs used to filter searches. |
list_public_inspection |
Documents filed but not yet published. The earliest public look at a forthcoming rule. |
Things it is actually good at: "What did the EPA propose this week?", "Find comment deadlines on rules mentioning per- and polyfluoroalkyl substances", "Summarise the notices on public inspection today."
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_documents","arguments":{"query":"artificial intelligence","per_page":2}}}' \
| python3 server.pypython3 test_server.py # offline, no network
python3 test_server.py --live # also exercises the real API25 checks. The offline suite covers the protocol, the argument guards, and the read-only claim; the live suite covers real responses and error handling. They are separated because a suite that goes red when a government website has a bad afternoon teaches you nothing.
federalregister.gov states that "due to aggressive automated scraping of FederalRegister.gov and eCFR.gov, programmatic access to these sites is limited to access to our extensive developer APIs." This server honours that:
- The API only, never the website. The base URL is fixed and no code path reaches another host.
- Every request is a GET. There is no write path, and a test asserts it.
- A descriptive User-Agent carrying a contact address, so a maintainer who sees this traffic knows who to email.
- A client-side rate limit, deliberately well below anything they would notice.
- Nothing cached, nothing republished. Responses pass through to the caller.
- Result sizes are capped, including for one endpoint that ignores
per_pageand returns the entire day's filings.
FederalRegister.gov is an unofficial informational resource. It is not the official legal edition of the Federal Register and does not replace the official print edition or the official electronic version on govinfo.gov. Verify against an official edition before relying on anything here for legal purposes.
This tool does not provide legal advice. Every response carries this notice.
Published by the team behind AgentRamp, which turns a product's public API documentation into a hosted, monitored MCP server.
This repository is hand-written and standalone: no account, no hosting, no dependency on AgentRamp. It exists because the shape of the problem is the same one AgentRamp automates, and a working example is more useful than a description of one.
MIT for the code in this repository. Federal Register content is a work of the U.S. Government and is not covered by this license.