courtlistener-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Host for HTTP/SSE transport. | 0.0.0.0 |
| MCP_PORT | No | Port for HTTP/SSE transport. | 8000 |
| ECFR_BASE_URL | No | Base URL for the eCFR API. | https://www.ecfr.gov |
| MCP_TRANSPORT | No | Transport type: stdio, http, or sse. | stdio |
| RATE_LIMIT_RPS | No | Max requests per second per client. | 15 |
| RATE_LIMIT_BURST | No | Burst capacity per client. | 40 |
| RATE_LIMIT_ENABLED | No | Enable per-client rate limiting. | true |
| COURTLISTENER_TIMEOUT | No | Timeout in seconds for CourtListener API requests. | 30 |
| COURTLISTENER_BASE_URL | No | Base URL for the CourtListener API. | https://www.courtlistener.com/api/rest/v4/ |
| COURT_LISTENER_API_KEY | No | Fallback API key when no per-request header is provided. Leave unset on public servers to force BYOK. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusA | Check the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information. |
| search_opinionsA | Search case law opinion clusters with nested Opinion documents in CourtListener. |
| search_docketsB | Search federal cases (dockets) from PACER in CourtListener. |
| search_dockets_with_documentsA | Search federal cases (dockets) with up to three nested documents. If there are more than three matching documents, the more_docs field will be true. |
| search_recap_documentsA | Search federal filing documents from PACER in the RECAP archive. |
| search_audioC | Search oral argument audio recordings in CourtListener. |
| search_peopleB | Search judges and legal professionals in the CourtListener database. |
| get_opinionA | Get a specific court opinion by ID from CourtListener. |
| get_docketA | Get a specific court docket by ID from CourtListener. |
| get_audioA | Get oral argument audio information by ID from CourtListener. |
| get_clusterC | Get an opinion cluster by ID from CourtListener. |
| get_personA | Get judge or legal professional information by ID from CourtListener. |
| get_courtA | Get court information by ID from CourtListener. |
| citation_lookup_citationA | Look up a legal citation to find the opinion it references in CourtListener. This tool accepts various citation formats including:
|
| citation_batch_lookup_citationsA | Look up multiple legal citations in a single request. This is more efficient than making individual requests for each citation. Accepts up to 100 citations at once. |
| citation_verify_citation_formatA | Verify if a citation string is in a valid format using citeurl's advanced parsing. This tool performs validation using citeurl's comprehensive citation templates to check if a citation appears to be in a recognized legal citation format. This is much more accurate than simple regex matching. Returns information about the citation format and any detected issues. |
| citation_parse_citation_with_citeurlA | Parse a legal citation using citeurl's advanced citation recognition. This tool uses the citeurl library to parse legal citations and extract structured information including tokens, normalized format, and URL generation. Returns detailed information about the citation including:
|
| citation_extract_citations_from_textA | Extract all legal citations from a block of text using citeurl. This tool finds and parses all legal citations within a given text, including both long-form and short-form citations (like 'id.' references). |
| citation_enhanced_citation_lookupA | Enhanced citation lookup combining citeurl parsing with CourtListener data. This tool first uses citeurl to parse and validate the citation format, then optionally queries the CourtListener API for additional case information. |
| ecfr_list_titlesA | List all 50 CFR titles with their latest amended/issue dates and status. |
| ecfr_get_title_versionsA | List the available content versions (issue dates) for one CFR title. |
| ecfr_get_title_structureB | Get the full hierarchical structure (title -> section) of a CFR title on a date. |
| ecfr_get_ancestryB | Get the ancestry chain (title -> ... -> node) for a CFR node on a date. |
| ecfr_get_source_xmlA | Fetch the source regulation TEXT (XML) for a CFR node on a snapshot date. Pass a part or section to scope the request. Fetching an entire large title
at once can time out on the eCFR side, so narrowing is strongly recommended.
Returns the raw XML under |
| ecfr_list_agenciesA | List all agencies that appear in the CFR, with their title/chapter references. |
| ecfr_list_all_correctionsC | List CFR corrections, optionally filtered by title and/or effective date. |
| ecfr_list_corrections_by_titleA | List all corrections for a single CFR title. |
| ecfr_search_regulationsA | Full-text search over federal regulations, returning matching sections with hierarchy. |
| ecfr_get_search_countA | Get the total number of CFR sections matching a search query. |
| ecfr_get_search_summaryB | Get summary details (counts + metadata) for a CFR search query. |
| ecfr_get_title_search_countsA | Get search result counts broken down by CFR title. |
| ecfr_get_daily_search_countsA | Get search result counts broken down by date (daily histogram). |
| ecfr_get_hierarchy_search_countsB | Get search result counts distributed across the CFR hierarchy. |
| ecfr_get_search_suggestionsA | Get search-term suggestions for a partial CFR query. |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Vaquill-AI/courtlistener-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server