legal-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@legal-mcpsearch for cases about patent infringement in Texas"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
legal-mcp
A remotely callable MCP server for US legal research. Baseline ("套壳") milestone: a thin, source-agnostic wrapper over CourtListener (the Free Law Project's 9M+ federal and state court opinions — free and public), exposed over the MCP streamable-HTTP transport.
It is deliberately the skeleton the value layers plug into later
(multi-jurisdiction aggregation, full-text retrieval, citation graphs,
freshness monitoring), mirroring the architecture of paper-mcp.
Design discipline
The server returns only primary-source text and citation metadata retrieved from the upstream API. It never lets a model generate legal content — agents build evidence packs they can check and footnote. (Legal hallucination has real sanctions; the server refuses to be the source of one.)
Tools
Tool | What it does |
| Full-text case-law search. |
| Aggregated search across every configured corpus, de-duplicated and re-ranked with Reciprocal Rank Fusion. |
| One case's full record (citations, judges, sub-opinion links). |
| Full opinion text ( |
| Resolve reporter citations in free text to real cases. Needs a token. |
| Authorities a case relies on + how often it is later cited. |
| Newest opinions in a court. |
| Common court ids. |
| Available corpora. |
Architecture
legal_mcp/
├── __init__.py version string
├── models.py LegalDoc — normalized, source-agnostic record
├── aggregate.py pure RRF fusion + de-dup (by citation / case name)
├── server.py FastMCP bootstrap + tool registrations
└── sources/
├── base.py LegalSource Protocol (the swappable contract)
├── __init__.py source registry + aliases
└── courtlistener.py CourtListener REST client → LegalDocAdding a jurisdiction (CAP, GovInfo, Congress, eCFR, OpenStates) is a new
sources/<name>.py implementing the LegalSource contract plus one line in the
registry — no server change.
Configuration
Env var | Default | Purpose |
|
| bind host |
|
| bind port |
|
| MCP endpoint path |
| — | optional; raises rate limits and unlocks |
Run
pip install -e .
legal-mcp # serves streamable-HTTP at 127.0.0.1:9500/mcpAnonymous access already allows search and document fetch (rate-limited). Set
COURTLISTENER_API_TOKEN for higher limits and citation lookup.
Roadmap
MVP (this) — CourtListener case law: search, full text, citations.
Add federal sources — eCFR (regulations), GovInfo (US Code), Congress (bills/votes/members), Federal Register, 26 USC/CFR (tax).
Add CAP (Harvard) historical 50-state case law, fused with CourtListener.
Add OpenStates (50-state legislation) for the state layer UK has no analogue for.
Freshness pipeline — incremental watermark crawl + embeddings (slow data: ~hundreds of new docs/day, <10 min GPU/day).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/MCPServings/legal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server