ecfr-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ecfr_mcp-0.1.0/.gitignore +35 -0
- ecfr_mcp-0.1.0/CHANGELOG.md +14 -0
- ecfr_mcp-0.1.0/LICENSE +21 -0
- ecfr_mcp-0.1.0/PKG-INFO +139 -0
- ecfr_mcp-0.1.0/README.md +115 -0
- ecfr_mcp-0.1.0/pyproject.toml +41 -0
- ecfr_mcp-0.1.0/src/ecfr_mcp/__init__.py +1 -0
- ecfr_mcp-0.1.0/src/ecfr_mcp/constants.py +58 -0
- ecfr_mcp-0.1.0/src/ecfr_mcp/server.py +664 -0
- ecfr_mcp-0.1.0/tests/__init__.py +0 -0
- ecfr_mcp-0.1.0/tests/stress_test.py +378 -0
- ecfr_mcp-0.1.0/tests/stress_test_r2.py +261 -0
- ecfr_mcp-0.1.0/tests/stress_test_r3.py +334 -0
- ecfr_mcp-0.1.0/uv.lock +751 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*$py.class
|
|
4
|
+
*.so
|
|
5
|
+
.Python
|
|
6
|
+
build/
|
|
7
|
+
develop-eggs/
|
|
8
|
+
dist/
|
|
9
|
+
downloads/
|
|
10
|
+
eggs/
|
|
11
|
+
.eggs/
|
|
12
|
+
lib/
|
|
13
|
+
lib64/
|
|
14
|
+
parts/
|
|
15
|
+
sdist/
|
|
16
|
+
var/
|
|
17
|
+
wheels/
|
|
18
|
+
*.egg-info/
|
|
19
|
+
.installed.cfg
|
|
20
|
+
*.egg
|
|
21
|
+
MANIFEST
|
|
22
|
+
.env
|
|
23
|
+
.venv
|
|
24
|
+
venv/
|
|
25
|
+
ENV/
|
|
26
|
+
env/
|
|
27
|
+
.pytest_cache/
|
|
28
|
+
.coverage
|
|
29
|
+
.mypy_cache/
|
|
30
|
+
.ruff_cache/
|
|
31
|
+
.DS_Store
|
|
32
|
+
.idea/
|
|
33
|
+
.vscode/
|
|
34
|
+
*.swp
|
|
35
|
+
*.swo
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 (2026-04-05)
|
|
4
|
+
|
|
5
|
+
Initial release.
|
|
6
|
+
|
|
7
|
+
- 13 MCP tools covering the eCFR API (admin, versioner, search endpoints)
|
|
8
|
+
- Core: get_latest_date, get_cfr_content, get_cfr_structure, get_version_history, get_ancestry, search_cfr, list_agencies, get_corrections
|
|
9
|
+
- Workflows: lookup_far_clause, compare_versions, list_sections_in_part, find_far_definition, find_recent_changes
|
|
10
|
+
- Server-side XML parsing (Claude never sees raw XML, only clean text with headings, paragraphs, and citations)
|
|
11
|
+
- Automatic date resolution (prevents 404s from eCFR's 1-2 day lag)
|
|
12
|
+
- Search defaults to current-only (prevents historical version duplicates)
|
|
13
|
+
- Actionable error translation for 400/404/406 responses
|
|
14
|
+
- No authentication required
|
ecfr_mcp-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 1102tools
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
ecfr_mcp-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ecfr-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MCP server for the eCFR (Electronic Code of Federal Regulations) API. Read FAR, DFARS, and all agency FAR supplements.
|
|
5
|
+
Project-URL: Homepage, https://1102tools.com
|
|
6
|
+
Project-URL: Repository, https://github.com/1102tools/ecfr-mcp
|
|
7
|
+
Project-URL: Issues, https://github.com/1102tools/ecfr-mcp/issues
|
|
8
|
+
Author: 1102tools
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: 1102,cfr,dfars,ecfr,far,federal-acquisition,mcp,model-context-protocol,regulations
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Requires-Dist: httpx>=0.27.0
|
|
22
|
+
Requires-Dist: mcp>=1.0.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# ecfr-mcp
|
|
26
|
+
|
|
27
|
+
MCP server for the eCFR (Electronic Code of Federal Regulations) API. Read FAR, DFARS, and all agency FAR supplement text with no authentication required.
|
|
28
|
+
|
|
29
|
+
Works with any MCP-compatible client (Claude Desktop, Claude Code, Cursor, Cline, Continue, Zed, etc.).
|
|
30
|
+
|
|
31
|
+
## What it does
|
|
32
|
+
|
|
33
|
+
Exposes the eCFR API as 13 MCP tools covering regulatory text, structure, search, version history, and common acquisition workflows:
|
|
34
|
+
|
|
35
|
+
**Core endpoints**
|
|
36
|
+
- `get_latest_date` - Get the most recent available date for a CFR title (call before other tools)
|
|
37
|
+
- `get_cfr_content` - Get parsed regulatory text for a section, subpart, or part
|
|
38
|
+
- `get_cfr_structure` - Hierarchical table of contents
|
|
39
|
+
- `get_version_history` - Amendment history for a section or part
|
|
40
|
+
- `get_ancestry` - Breadcrumb hierarchy path
|
|
41
|
+
- `search_cfr` - Full-text search with hierarchy filters
|
|
42
|
+
- `list_agencies` - All agencies with their CFR references
|
|
43
|
+
- `get_corrections` - Editorial corrections for a title
|
|
44
|
+
|
|
45
|
+
**Workflow convenience**
|
|
46
|
+
- `lookup_far_clause` - One-call FAR/DFARS clause text lookup (auto-resolves date)
|
|
47
|
+
- `compare_versions` - Side-by-side text comparison at two dates
|
|
48
|
+
- `list_sections_in_part` - All sections in a FAR/DFARS part
|
|
49
|
+
- `find_far_definition` - Search FAR 2.101 for a term definition
|
|
50
|
+
- `find_recent_changes` - Sections modified since a given date
|
|
51
|
+
|
|
52
|
+
## No authentication required
|
|
53
|
+
|
|
54
|
+
The eCFR API is fully public. No API key, no registration, no auth headers. Just install and use.
|
|
55
|
+
|
|
56
|
+
## Installation
|
|
57
|
+
|
|
58
|
+
### Via uvx (recommended)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
uvx ecfr-mcp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Via pip
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pip install ecfr-mcp
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### From source
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
git clone https://github.com/1102tools/ecfr-mcp.git
|
|
74
|
+
cd ecfr-mcp
|
|
75
|
+
pip install -e .
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Claude Desktop configuration
|
|
79
|
+
|
|
80
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"mcpServers": {
|
|
85
|
+
"ecfr": {
|
|
86
|
+
"command": "uvx",
|
|
87
|
+
"args": ["ecfr-mcp"]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Restart Claude Desktop. The `ecfr` server appears in your MCP tools panel with 13 tools.
|
|
94
|
+
|
|
95
|
+
## Example prompts
|
|
96
|
+
|
|
97
|
+
- "Pull the current text of FAR 15.305 (Proposal Evaluation) and summarize what it requires."
|
|
98
|
+
- "List all sections in FAR Part 19 (Small Business Programs)."
|
|
99
|
+
- "Look up the FAR definition of 'commercial product' in 2.101."
|
|
100
|
+
- "What FAR sections were amended in the last 6 months?"
|
|
101
|
+
- "Compare FAR 52.212-4 between 2024-01-01 and 2025-01-01 and show me what changed."
|
|
102
|
+
- "Get the current text of DFARS 252.227-7014 (Rights in Noncommercial Computer Software)."
|
|
103
|
+
- "Search Title 48 for 'organizational conflict of interest' and show me the relevant sections."
|
|
104
|
+
- "Which agency owns Chapter 8 in Title 48? Get their FAR supplement structure."
|
|
105
|
+
|
|
106
|
+
## Design notes
|
|
107
|
+
|
|
108
|
+
- **XML parsed server-side.** The eCFR content endpoint returns raw XML. This server parses it into clean text (headings, paragraphs, citations) before returning to Claude, saving significant context tokens.
|
|
109
|
+
- **Automatic date resolution.** eCFR lags 1-2 business days behind the Federal Register. Using today's date on versioner endpoints causes 404 errors. All content tools auto-resolve to the latest available date unless you specify one.
|
|
110
|
+
- **Search defaults to current text.** Without `date=current`, eCFR search returns ALL historical versions including superseded. Default `current_only=True` prevents duplicate results.
|
|
111
|
+
- **Structure endpoint limitation.** The eCFR structure endpoint does not support section-level filtering (returns 400). `list_sections_in_part` works around this by fetching the part structure and walking the tree.
|
|
112
|
+
- **FAR 2.101 optimization.** The definitions section is ~109KB of XML. `find_far_definition` parses the full section server-side and returns only matching paragraphs with context.
|
|
113
|
+
|
|
114
|
+
## CFR Title 48 quick reference
|
|
115
|
+
|
|
116
|
+
| Chapter | Regulation | Parts |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| 1 | FAR | 1-99 |
|
|
119
|
+
| 2 | DFARS | 200-299 |
|
|
120
|
+
| 3 | HHSAR | 300-399 |
|
|
121
|
+
| 4 | AGAR | 400-499 |
|
|
122
|
+
| 5 | GSAR | 500-599 |
|
|
123
|
+
| 6 | DOSAR | 600-699 |
|
|
124
|
+
| 7 | AIDAR | 700-799 |
|
|
125
|
+
| 8 | VAAR | 800-899 |
|
|
126
|
+
| 9 | DEAR | 900-999 |
|
|
127
|
+
| 18 | NFS | 1800-1899 |
|
|
128
|
+
|
|
129
|
+
## Data source
|
|
130
|
+
|
|
131
|
+
All data from [ecfr.gov](https://www.ecfr.gov), the continuously updated online Code of Federal Regulations maintained by the Office of the Federal Register. Updated daily, typically 1-2 business days after Federal Register publication. Not an official legal edition; for official citations reference the annual CFR from GPO.
|
|
132
|
+
|
|
133
|
+
## Companion skill
|
|
134
|
+
|
|
135
|
+
This MCP mirrors the `ecfr-api` skill from [1102tools.com](https://1102tools.com). The skill is markdown-based for interactive Claude use; the MCP wraps the same API as deterministic tool calls for agent workflows and automation.
|
|
136
|
+
|
|
137
|
+
## License
|
|
138
|
+
|
|
139
|
+
MIT
|
ecfr_mcp-0.1.0/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# ecfr-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for the eCFR (Electronic Code of Federal Regulations) API. Read FAR, DFARS, and all agency FAR supplement text with no authentication required.
|
|
4
|
+
|
|
5
|
+
Works with any MCP-compatible client (Claude Desktop, Claude Code, Cursor, Cline, Continue, Zed, etc.).
|
|
6
|
+
|
|
7
|
+
## What it does
|
|
8
|
+
|
|
9
|
+
Exposes the eCFR API as 13 MCP tools covering regulatory text, structure, search, version history, and common acquisition workflows:
|
|
10
|
+
|
|
11
|
+
**Core endpoints**
|
|
12
|
+
- `get_latest_date` - Get the most recent available date for a CFR title (call before other tools)
|
|
13
|
+
- `get_cfr_content` - Get parsed regulatory text for a section, subpart, or part
|
|
14
|
+
- `get_cfr_structure` - Hierarchical table of contents
|
|
15
|
+
- `get_version_history` - Amendment history for a section or part
|
|
16
|
+
- `get_ancestry` - Breadcrumb hierarchy path
|
|
17
|
+
- `search_cfr` - Full-text search with hierarchy filters
|
|
18
|
+
- `list_agencies` - All agencies with their CFR references
|
|
19
|
+
- `get_corrections` - Editorial corrections for a title
|
|
20
|
+
|
|
21
|
+
**Workflow convenience**
|
|
22
|
+
- `lookup_far_clause` - One-call FAR/DFARS clause text lookup (auto-resolves date)
|
|
23
|
+
- `compare_versions` - Side-by-side text comparison at two dates
|
|
24
|
+
- `list_sections_in_part` - All sections in a FAR/DFARS part
|
|
25
|
+
- `find_far_definition` - Search FAR 2.101 for a term definition
|
|
26
|
+
- `find_recent_changes` - Sections modified since a given date
|
|
27
|
+
|
|
28
|
+
## No authentication required
|
|
29
|
+
|
|
30
|
+
The eCFR API is fully public. No API key, no registration, no auth headers. Just install and use.
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
### Via uvx (recommended)
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
uvx ecfr-mcp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Via pip
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install ecfr-mcp
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### From source
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
git clone https://github.com/1102tools/ecfr-mcp.git
|
|
50
|
+
cd ecfr-mcp
|
|
51
|
+
pip install -e .
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Claude Desktop configuration
|
|
55
|
+
|
|
56
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"ecfr": {
|
|
62
|
+
"command": "uvx",
|
|
63
|
+
"args": ["ecfr-mcp"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Restart Claude Desktop. The `ecfr` server appears in your MCP tools panel with 13 tools.
|
|
70
|
+
|
|
71
|
+
## Example prompts
|
|
72
|
+
|
|
73
|
+
- "Pull the current text of FAR 15.305 (Proposal Evaluation) and summarize what it requires."
|
|
74
|
+
- "List all sections in FAR Part 19 (Small Business Programs)."
|
|
75
|
+
- "Look up the FAR definition of 'commercial product' in 2.101."
|
|
76
|
+
- "What FAR sections were amended in the last 6 months?"
|
|
77
|
+
- "Compare FAR 52.212-4 between 2024-01-01 and 2025-01-01 and show me what changed."
|
|
78
|
+
- "Get the current text of DFARS 252.227-7014 (Rights in Noncommercial Computer Software)."
|
|
79
|
+
- "Search Title 48 for 'organizational conflict of interest' and show me the relevant sections."
|
|
80
|
+
- "Which agency owns Chapter 8 in Title 48? Get their FAR supplement structure."
|
|
81
|
+
|
|
82
|
+
## Design notes
|
|
83
|
+
|
|
84
|
+
- **XML parsed server-side.** The eCFR content endpoint returns raw XML. This server parses it into clean text (headings, paragraphs, citations) before returning to Claude, saving significant context tokens.
|
|
85
|
+
- **Automatic date resolution.** eCFR lags 1-2 business days behind the Federal Register. Using today's date on versioner endpoints causes 404 errors. All content tools auto-resolve to the latest available date unless you specify one.
|
|
86
|
+
- **Search defaults to current text.** Without `date=current`, eCFR search returns ALL historical versions including superseded. Default `current_only=True` prevents duplicate results.
|
|
87
|
+
- **Structure endpoint limitation.** The eCFR structure endpoint does not support section-level filtering (returns 400). `list_sections_in_part` works around this by fetching the part structure and walking the tree.
|
|
88
|
+
- **FAR 2.101 optimization.** The definitions section is ~109KB of XML. `find_far_definition` parses the full section server-side and returns only matching paragraphs with context.
|
|
89
|
+
|
|
90
|
+
## CFR Title 48 quick reference
|
|
91
|
+
|
|
92
|
+
| Chapter | Regulation | Parts |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| 1 | FAR | 1-99 |
|
|
95
|
+
| 2 | DFARS | 200-299 |
|
|
96
|
+
| 3 | HHSAR | 300-399 |
|
|
97
|
+
| 4 | AGAR | 400-499 |
|
|
98
|
+
| 5 | GSAR | 500-599 |
|
|
99
|
+
| 6 | DOSAR | 600-699 |
|
|
100
|
+
| 7 | AIDAR | 700-799 |
|
|
101
|
+
| 8 | VAAR | 800-899 |
|
|
102
|
+
| 9 | DEAR | 900-999 |
|
|
103
|
+
| 18 | NFS | 1800-1899 |
|
|
104
|
+
|
|
105
|
+
## Data source
|
|
106
|
+
|
|
107
|
+
All data from [ecfr.gov](https://www.ecfr.gov), the continuously updated online Code of Federal Regulations maintained by the Office of the Federal Register. Updated daily, typically 1-2 business days after Federal Register publication. Not an official legal edition; for official citations reference the annual CFR from GPO.
|
|
108
|
+
|
|
109
|
+
## Companion skill
|
|
110
|
+
|
|
111
|
+
This MCP mirrors the `ecfr-api` skill from [1102tools.com](https://1102tools.com). The skill is markdown-based for interactive Claude use; the MCP wraps the same API as deterministic tool calls for agent workflows and automation.
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
MIT
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ecfr-mcp"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "MCP server for the eCFR (Electronic Code of Federal Regulations) API. Read FAR, DFARS, and all agency FAR supplements."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "1102tools" }
|
|
14
|
+
]
|
|
15
|
+
keywords = ["mcp", "model-context-protocol", "ecfr", "cfr", "far", "dfars", "federal-acquisition", "regulations", "1102"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
dependencies = [
|
|
28
|
+
"mcp>=1.0.0",
|
|
29
|
+
"httpx>=0.27.0",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://1102tools.com"
|
|
34
|
+
Repository = "https://github.com/1102tools/ecfr-mcp"
|
|
35
|
+
Issues = "https://github.com/1102tools/ecfr-mcp/issues"
|
|
36
|
+
|
|
37
|
+
[project.scripts]
|
|
38
|
+
ecfr-mcp = "ecfr_mcp.server:main"
|
|
39
|
+
|
|
40
|
+
[tool.hatch.build.targets.wheel]
|
|
41
|
+
packages = ["src/ecfr_mcp"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Constants and reference data for the eCFR MCP server."""
|
|
2
|
+
|
|
3
|
+
BASE_URL = "https://www.ecfr.gov"
|
|
4
|
+
DEFAULT_TIMEOUT_JSON = 15.0
|
|
5
|
+
DEFAULT_TIMEOUT_STRUCTURE = 30.0
|
|
6
|
+
DEFAULT_TIMEOUT_CONTENT = 60.0
|
|
7
|
+
USER_AGENT = "ecfr-mcp/0.1.0"
|
|
8
|
+
|
|
9
|
+
# Search caps
|
|
10
|
+
SEARCH_MAX_PER_PAGE = 5000
|
|
11
|
+
SEARCH_MAX_TOTAL = 10000
|
|
12
|
+
|
|
13
|
+
# Title 48 chapter map (Federal Acquisition Regulations System)
|
|
14
|
+
TITLE_48_CHAPTERS: dict[str, str] = {
|
|
15
|
+
"1": "FAR (Parts 1-99)",
|
|
16
|
+
"2": "DFARS (Parts 200-299)",
|
|
17
|
+
"3": "HHSAR (Parts 300-399)",
|
|
18
|
+
"4": "AGAR (Parts 400-499)",
|
|
19
|
+
"5": "GSAR (Parts 500-599)",
|
|
20
|
+
"6": "DOSAR (Parts 600-699)",
|
|
21
|
+
"7": "AIDAR (Parts 700-799)",
|
|
22
|
+
"8": "VAAR (Parts 800-899)",
|
|
23
|
+
"9": "DEAR (Parts 900-999)",
|
|
24
|
+
"10": "DTAR (Parts 1000-1099)",
|
|
25
|
+
"12": "TAR (Parts 1200-1299)",
|
|
26
|
+
"13": "CAR (Parts 1300-1399)",
|
|
27
|
+
"14": "DIAR (Parts 1400-1499)",
|
|
28
|
+
"15": "EPAAR (Parts 1500-1599)",
|
|
29
|
+
"16": "OPMAR (Parts 1600-1699)",
|
|
30
|
+
"18": "NFS (Parts 1800-1899)",
|
|
31
|
+
"20": "NRCAR (Parts 2000-2099)",
|
|
32
|
+
"23": "SSAAR (Parts 2300-2399)",
|
|
33
|
+
"24": "HUDAR (Parts 2400-2499)",
|
|
34
|
+
"25": "NSFAR (Parts 2500-2599)",
|
|
35
|
+
"28": "JAR (Parts 2800-2899)",
|
|
36
|
+
"29": "DOLAR (Parts 2900-2999)",
|
|
37
|
+
"99": "CAS (Part 9900)",
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# Common FAR sections for quick reference in tool descriptions
|
|
41
|
+
COMMON_FAR_SECTIONS: dict[str, str] = {
|
|
42
|
+
"2.101": "Definitions",
|
|
43
|
+
"4.1102": "SAM policy",
|
|
44
|
+
"6.302-1": "Only one responsible source",
|
|
45
|
+
"9.104-1": "General standards of responsibility",
|
|
46
|
+
"9.406-2": "Causes for debarment",
|
|
47
|
+
"12.301": "Solicitation provisions (commercial)",
|
|
48
|
+
"13.003": "Simplified acquisition policy",
|
|
49
|
+
"15.305": "Proposal evaluation",
|
|
50
|
+
"15.306": "Exchanges with offerors",
|
|
51
|
+
"19.502-2": "Total small business set-asides",
|
|
52
|
+
"31.205": "Selected costs (allowability)",
|
|
53
|
+
"33.103": "Protests to the agency",
|
|
54
|
+
"42.302": "Contract administration functions",
|
|
55
|
+
"52.212-1": "Instructions to Offerors (Commercial)",
|
|
56
|
+
"52.212-4": "Contract Terms and Conditions (Commercial)",
|
|
57
|
+
"52.212-5": "Required Contract Terms (Commercial)",
|
|
58
|
+
}
|