Metadata-Version: 2.4
Name: regulations-mcp
Version: 0.1.0
Summary: MCP server for live U.S. federal regulations — Federal Register, eCFR, and Regulations.gov
Project-URL: Homepage, https://github.com/stark256-spec/regulations-mcp
Project-URL: Issues, https://github.com/stark256-spec/regulations-mcp/issues
License: MIT
Keywords: ai,cfr,federal-register,federal-regulations,government,mcp
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.11
Requires-Dist: anyio>=4.0.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: litellm>=1.40.0
Requires-Dist: mcp>=1.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.12.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: respx>=0.21.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Description-Content-Type: text/markdown

# regulations-mcp

An [MCP server](https://modelcontextprotocol.io) that gives AI assistants live access to U.S. federal regulations — Federal Register, Code of Federal Regulations (eCFR), and Regulations.gov.

Works with **any LLM** via the built-in `regs` CLI (Claude, GPT-4o, Gemini, Mistral, Llama via Groq/Ollama, Cohere, and more).

---

## What it can do

| Tool | Source | Auth needed |
|---|---|---|
| Search Federal Register documents | federalregister.gov | None |
| Get a specific FR document | federalregister.gov | None |
| List open public comment periods | federalregister.gov | None |
| Get pre-publication inspection documents | federalregister.gov | None |
| List all 50 CFR titles | ecfr.gov | None |
| Full-text search the CFR | ecfr.gov | None |
| Read a specific CFR section | ecfr.gov | None |
| Browse CFR title structure | ecfr.gov | None |
| Search regulatory dockets | regulations.gov | Free API key |
| Search regulations.gov documents | regulations.gov | Free API key |

---

## Quick start

```bash
pip install regulations-mcp
cp .env.example .env   # add your LLM key
```

### Interactive chat

```bash
# Claude (default)
regs chat

# GPT-4o
regs chat --provider gpt4o

# Gemini 1.5 Pro
regs chat --provider gemini

# Llama 3 via Groq (free tier)
regs chat --provider groq-llama

# Local Ollama
regs chat --provider ollama-llama3

# Any litellm model string
regs chat --provider "bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0"
```

### One-shot questions

```bash
regs ask "What EPA rules have open comment periods right now?"
regs ask "What does 21 CFR Part 11 say about electronic signatures?" --provider gpt4o
regs ask "Find all OSHA rules published in the last 30 days" --provider gemini-flash
regs ask "Summarize the most recent FDA food safety final rules" --provider groq-llama
```

### List all providers

```bash
regs providers
```

---

## Use as an MCP server (Claude Desktop / any MCP client)

Add to your MCP client config:

```json
{
  "mcpServers": {
    "regulations": {
      "command": "regulations-mcp",
      "env": {
        "REGULATIONS_GOV_API_KEY": "your_key_here"
      }
    }
  }
}
```

Claude Desktop config location:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

---

## Diff CFR sections across dates

Compare exactly what regulatory text changed between any two dates:

```bash
# What changed in 21 CFR § 11.1 between 2020 and 2024?
regs diff 21 11 1 2020-01-01 2024-01-01

# With LLM summary of the regulatory impact
regs diff 21 11 1 2020-01-01 2024-01-01 --llm

# Use a different LLM for the summary
regs diff 40 122 1 2018-01-01 2024-01-01 --llm --provider gpt4o

# Show full text of both versions side by side
regs diff 29 1910 95 2015-01-01 2024-01-01 --full
```

The `diff_cfr_section` tool is also available in the MCP server — AI assistants can call it directly to answer questions like *"what exactly changed in this regulation and when?"*

---

## Example questions

```
What EPA rules are currently open for public comment?
Summarize 21 CFR Part 11 (FDA electronic records requirements)
What changed in Title 40 (EPA) in the last 6 months?
Find all proposed rules about AI or machine learning
What are the OSHA requirements for workplace noise exposure? (29 CFR 1910.95)
Which agencies published final rules this week?
Show me documents currently on public inspection before they're published
```

---

## Publishing a release

```bash
# Bump version in pyproject.toml and __init__.py, then:
git tag v0.2.0 && git push origin v0.2.0

# Create a GitHub release — the publish workflow auto-uploads to PyPI
gh release create v0.2.0 --generate-notes
```

Dry-run to TestPyPI first via `Actions → Publish → Run workflow → dry_run=true`.

---

## Development

```bash
git clone https://github.com/stark256-spec/regulations-mcp
cd regulations-mcp
pip install -e ".[dev]"
pytest tests/ -v
```

---

## Data sources

All free, public U.S. government APIs — no scraping, no unofficial endpoints:

- **Federal Register API** — [federalregister.gov/developers](https://www.federalregister.gov/developers/documentation/api/v1)
- **eCFR API** — [ecfr.gov/developers](https://www.ecfr.gov/developers/documentation)
- **Regulations.gov API** — [api.regulations.gov](https://api.regulations.gov) (free key required)

---

## License

MIT

<!-- mcp-name: io.github.stark256-spec/regulations-mcp -->
