ecfr-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_latest_dateA | Get the most recent available date for a CFR title. CRITICAL: eCFR lags 1-2 business days behind the Federal Register. Using today's date on versioner endpoints causes 404 errors. Call this first to get the safe date, then pass it to other tools. Default title 48 = Federal Acquisition Regulations System (FAR, DFARS, and all agency supplements). Other common titles: 2 (Grants/Agreements), 5 (Administrative Personnel), 29 (Labor), 41 (Public Contracts). Raises ValueError for titles 1-50 that are reserved (no content). |
| get_cfr_contentA | Get the full text of a CFR section, subpart, or part. This is the primary workhorse for reading regulatory text. Returns parsed clean text by default (heading, paragraphs, citations). Set raw_xml=True to get the original XML instead. Specify the narrowest scope possible to keep responses manageable:
Date auto-resolves to the latest available if not provided. Do NOT use today's date directly -- eCFR lags 1-2 business days and today often 404s. Title 48 = FAR/DFARS. Chapter 1 = FAR (Parts 1-99), Chapter 2 = DFARS (Parts 200-299). Other chapters = agency FAR supplements (GSAR, VAAR, etc.). For DFARS clauses, use chapter='2' (e.g., section='252.227-7014'). part/subpart/section accept int or string. Common prefix mistakes like section='FAR 15.305' or '48 CFR 15.305' are stripped automatically. |
| get_cfr_structureA | Get the hierarchical table of contents for a CFR title or subset. Returns a nested tree of titles, chapters, parts, subparts, and sections with identifiers, descriptions, and byte sizes. IMPORTANT: Does NOT support section-level filtering (returns 400). Use part or subpart, then walk the children to find sections. Common patterns:
part/subpart/chapter accept int or string. |
| get_version_historyA | Get the version history of a CFR section, subpart, or part. Returns a list of content versions with dates, amendment info, and whether each version was a substantive text change vs editorial. The 'substantive' field is key: True = the regulatory text actually changed. False = only editorial/formatting change. History goes back to January 2017 only. Pre-2017 changes are not tracked. part/subpart/section accept int or string. |
| get_ancestryA | Get the breadcrumb hierarchy path for a section or part. Returns ancestors from title down to the target node: title > chapter > subchapter > part > subpart > section. Useful for understanding where a section sits in the CFR hierarchy and what regulation it belongs to. part/section accept int or string. |
| search_cfrA | Full-text search across the Code of Federal Regulations. Returns matching sections with excerpts, headings, scores, and hierarchy. CRITICAL: Set current_only=True (default) to search only in-effect text. Without it, search returns ALL historical versions including superseded, so a section amended 5 times appears 5 times. Search caps at 10,000 total results. Use hierarchy filters (title, chapter, part) to narrow if you hit the cap. Only 'relevance' ordering is supported. No date or newest sorting. last_modified_after/before use YYYY-MM-DD format and filter by the date sections were last amended. Useful for finding recent regulatory changes. per_page capped at 100 by default (server-side soft cap; API max is 5000). |
| list_agenciesA | List all agencies with their CFR title and chapter references. Returns agency names, slugs, and which CFR titles/chapters they own. Useful for finding which chapter corresponds to an agency's FAR supplement. summary_only (default True) strips the |
| get_correctionsA | Get editorial corrections for a CFR title. Returns a list of corrections with CFR references, corrective actions, error dates, and FR citations. Useful for checking whether a section's current text has been corrected since its last amendment. limit caps the number of corrections returned (default 50, max 1000). since_year further filters to corrections with year >= since_year. Title 48 has ~280 corrections across all years; use since_year to focus on recent ones. |
| lookup_far_clauseA | Convenience tool: look up the current text of a FAR or DFARS clause. Pass a section identifier like '15.305', '52.212-4', '2.101', etc. Default chapter='1' (FAR). Use chapter='2' for DFARS (e.g., '252.227-7014'). Auto-resolves the latest available date. Returns parsed clean text with heading, paragraphs, and citations. Common FAR sections: 2.101 (Definitions), 9.104-1 (Responsibility), 15.305 (Proposal Evaluation), 19.502-2 (Small Business Set-Asides), 52.212-4 (Commercial Terms), 52.212-5 (Required Commercial Terms). |
| compare_versionsA | Compare the text of a CFR section at two different dates. Useful for understanding what changed in a regulatory amendment. Returns the parsed text at both dates side by side. You can then diff the paragraphs to identify specific changes. Dates must be in YYYY-MM-DD format and within the eCFR's tracking range (January 2017 to present). Both dates must not exceed the title's up_to_date_as_of value. This tool always returns the section-level XML parsed -- pass a small section_id like '15.305', not a whole part. Whole-part comparisons can exceed 100 KB per side. |
| list_sections_in_partA | List all sections in a FAR/DFARS part with their headings. Returns a flat list of sections extracted from the structure tree. Useful for understanding the scope of a FAR part before drilling into specific sections. Default chapter='1' (FAR). Use chapter='2' for DFARS. part_number accepts int or string. |
| find_far_definitionA | Search for a term's definition in FAR 2.101 (master definition section). FAR 2.101 contains definitions used throughout the Federal Acquisition Regulation. This tool fetches the full section and searches for paragraphs containing the term, returning matching paragraphs with surrounding context. Note: FAR 2.101 is large (~109KB XML). This tool parses the full section server-side and returns only matching paragraphs. term must be at least 3 characters. max_matches caps returned matches (default 20, max 100); common terms like 'offeror' hit many paragraphs. |
| find_recent_changesA | Find CFR sections that have been modified since a given date. Uses the search API with last_modified_on_or_after filter to find sections amended after the specified date. Returns section identifiers, headings, and excerpts. since_date must be in YYYY-MM-DD format. Results are capped at 10,000 by the API. Use title/chapter/part filters to narrow if needed. Common pattern: find FAR changes since a specific date to check for regulatory updates that might affect ongoing acquisitions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/1102tools/federal-contracting-mcps'
If you have feedback or need assistance with the MCP directory API, please join our Discord server