Skip to content

io.github.cyanheads/federal-regulations-mcp-server

by cyanheads · remote · local (npm) · no sign-in to list tools · v0.5.3 · published by GitHub user cyanheads

Search and trace US federal rules across the Federal Register, eCFR, and Regulations.gov.

Read only

7 tools: 7 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http federal-regulations https://federal-regulations.caseyjhand.com/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Only reads 7Claude Code: allow
  • regulations_browse_cfrExplore the codified Code of Federal Regulations via eCFR in two modes.No findings

    Why it is in this group

    • The name "regulations_browse_cfr" says "browse": a word for reading.
    Description, as the server wrote it
    Explore the codified Code of Federal Regulations via eCFR in two modes. "structure" lists all 50 titles; with a title, that title's top-level divisions (its chapters, or subtitles); and with a title and part, every section and appendix in the part, flattened and paged, each naming the subpart and subject group it sits under — the way to enumerate a part's sections without reading its text. "search" runs a full-text query across the codified CFR and returns matching sections with their hierarchy path and a snippet, one result per section, paged. Both modes accept title and part to narrow the scope. Both feed regulations_get_cfr_section. Every search result reports which corpus answered it — the synced local mirror or the live eCFR index — and what that corpus covers, in `source` and `sourceScope`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • regulations_find_commentsFetch public comments on a Federal Register document or a Regulations.gov docket — the unique corpus of what citizens and organizations actually submitted.No findings

    Why it is in this group

    • The name "regulations_find_comments" says "find": a word for reading.
    Description, as the server wrote it
    Fetch public comments on a Federal Register document or a Regulations.gov docket — the unique corpus of what citizens and organizations actually submitted. Provide exactly one targeting parameter: docket_id (all comments in a docket, broadest), document_object_id (comments on one document, by its object ID or document ID), fr_document_number (convenience — resolves the FR number to the Regulations.gov document carrying it), or comment_id (one comment's full detail and attachments). A list narrows by comment text with search_term (each hit then carries the matching passages) and by posted date with posted_after/posted_before. The list endpoint returns no body text or attachment info — call with comment_id to read a comment's body. When a comment's real content is a PDF/DOCX attachment, the body is a stub and attachmentOnly is true; the attachment download URLs are returned. Requires REGULATIONS_GOV_API_KEY (free at https://api.data.gov/signup/).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • regulations_get_cfr_sectionRead the codified text at a CFR location via eCFR — current or as of a past date.No findings

    Why it is in this group

    • The name "regulations_get_cfr_section" says "get": a word for reading.
    Description, as the server wrote it
    Read the codified text at a CFR location via eCFR — current or as of a past date. Answers "what does 40 CFR 50.1 say today?" and "...as of 2019-01-01?". Three locations: title + part + section for one section; title + part alone for the whole part, with its Authority and Source notes, an index of its sections, and the names of its appendices; title + appendix for one appendix, passing the identifier exactly as regulations_browse_cfr emits it. A section can be written as people cite it — "61", "§ 141.61", "141.61(c)", or the full cite "40 CFR 141.61" in part 141 all read 40 CFR 141.61 — and a part as "Part 141"; the response names the identifier it read. Text comes back as a window of up to 64,000 characters (max_chars raises it to 200,000) with the total length and, when text remains, the offset to resume from; whole parts run to millions of characters, so page with offset or read a single section. eCFR retains historical versions from 2017 through the title's up-to-date date; a date outside that window is rejected with the window named. Current single-section reads are served from a synced local mirror when it holds the title's latest eCFR issue; the source is reported.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • regulations_get_docketPull a rulemaking docket from Regulations.gov by docket ID (e.g.No findings

    Why it is in this group

    • The name "regulations_get_docket" says "get": a word for reading.
    Description, as the server wrote it
    Pull a rulemaking docket from Regulations.gov by docket ID (e.g. "EPA-HQ-OAR-2025-0194") — the docket's metadata (title, agency, RIN, abstract) and the documents filed in it (NPRM, final rule, supporting materials). The docket is the folder holding a rule's whole paper trail; each returned document's objectId feeds regulations_find_comments. A docket often contains hundreds of supporting materials — filter document_types to "Proposed Rule"/"Rule" to find the rule documents themselves. Requires REGULATIONS_GOV_API_KEY (free at https://api.data.gov/signup/); the Federal Register and eCFR tools work without it.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • regulations_get_documentFetch one Federal Register document by its FR document number — full metadata (title, type, agencies, abstract, action, effective/comment dates, RINs) plus the cross-source handles…No findings

    Why it is in this group

    • The name "regulations_get_document" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one Federal Register document by its FR document number — full metadata (title, type, agencies, abstract, action, effective/comment dates, RINs) plus the cross-source handles that make this a workflow server. The output carries the Regulations.gov docket ID (chain into regulations_get_docket or regulations_find_comments), the docket numbers the Federal Register prints (chain back into regulations_search_rules as docket_id), the comment count and comment URL, and the affected CFR parts (chain into regulations_get_cfr_section). Set include_full_text only when the rule body itself is needed: it returns the plain-text body as a window of up to 64,000 characters (max_chars raises it to 200,000), with the body's total length and, when text remains, the offset to resume from. Short documents return whole; major final rules run past a million characters, so page through with offset rather than reading them in one call.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • regulations_list_open_commentsList Federal Register documents currently open for public comment, sorted by closing date (soonest first) across the whole open window, filterable by document type, agency slug, an…No findings

    Why it is in this group

    • The name "regulations_list_open_comments" says "list": a word for reading.
    Description, as the server wrote it
    List Federal Register documents currently open for public comment, sorted by closing date (soonest first) across the whole open window, filterable by document type, agency slug, and topic. "What can I still weigh in on?" Covers proposed rules and the final rules that take comment (direct final and interim final rules) by default; add NOTICE for the much larger set of notices with comment periods. Runs on the Federal Register's open-comment window and needs no key: each row carries its Regulations.gov docket and document IDs, comment count, and comment URL from the Federal Register document's embedded Regulations.gov info. Open one row with regulations_get_document for the full document, or pull the comments with regulations_find_comments (which, like regulations_get_docket, needs REGULATIONS_GOV_API_KEY).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • regulations_search_rulesSearch the Federal Register — the daily journal of US proposed rules, final rules, notices, and presidential documents (1994–present) — filtering by full-text query, document type,…No findings

    Why it is in this group

    • The name "regulations_search_rules" says "search": a word for reading.
    Description, as the server wrote it
    Search the Federal Register — the daily journal of US proposed rules, final rules, notices, and presidential documents (1994–present) — filtering by full-text query, document type, agency slug, publication date range, affected CFR title and part, printed docket number, and RIN, all combined. A page cite from a CFR source note ("89 FR 49102", with its date) resolves to the documents printed on that page. The primary discovery entry point: results carry the document number (open with regulations_get_document), its citation and page range, each issuing agency with its filterable slug, printed docket numbers, Regulations.gov docket and document IDs, comment count and comment URL, whether the comment period is open, RINs, and affected CFR parts that chain into the comment and codified-text tools. A query ranks by relevance unless order says otherwise; filter-only browsing lists newest first. The Federal Register caps navigation at 50 pages and the match count at 10,000; when a result set is larger, narrow with published_after/published_before rather than paging deeper.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.5.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http federal-regulations https://federal-regulations.caseyjhand.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__federal-regulations__regulations_search_rules",
      "mcp__federal-regulations__regulations_get_document",
      "mcp__federal-regulations__regulations_browse_cfr",
      "mcp__federal-regulations__regulations_get_cfr_section",
      "mcp__federal-regulations__regulations_get_docket",
      "mcp__federal-regulations__regulations_find_comments",
      "mcp__federal-regulations__regulations_list_open_comments"
    ],
    "ask": [],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as federal-regulations. Review it before you use it.