mcp server
courtlistener-mcp-server
Search US court opinions, federal dockets, judges, citations, and oral arguments via CourtListener.
Description as published by the maintainer. Source
- version 0.7.0
- active
- retrieval
active — Most recent push to the repository was 2026-07-30. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.
What this server can do
14 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
courtlistener_get_citations(court, cursor, direction, page_size, cluster_id, filed_after)- Retrieve the citation network for an opinion cluster. Supports two directions: "cited_by" (opinions that cite this one — measures precedential influence) and "citing" (opinions this one cites — reveals the authority chain relied on). This is the primary tool for tracing legal precedent chains. Note: the free tier supports shallow traversal — following 1–2 hops of a single case is practical; deep multi-hop analysis burns through the daily budget quickly. Required: cluster_id.
courtlistener_get_docket(docket_id, entries_page, entries_page_size)- Fetch full docket metadata and entry list for a single federal case by docket ID. Returns all available docket entries with document availability status. Documents with is_available=true have a RECAP-stored copy; others require a PACER account. Obtain docket IDs from courtlistener_search_dockets or from opinion results. Required: docket_id.
courtlistener_get_financial_disclosure(categories, disclosure_id)- Fetch a single judicial financial disclosure by ID with its parsed line-item rows — investments, debts, positions, reimbursements, non-investment and spouse income, agreements, and gifts. This is the itemized companion to courtlistener_search_financial_disclosures (which returns only category counts). Pass categories:[...] to select specific categories; omit for all. Coded value/income columns are decoded to readable dollar ranges. When the full itemization is too large to inline, the response lists each category as a retrievable section by byte size while keeping the filing metadata and counts — re-call with categories:[...] to pull specific categories in full. Obtain disclosure IDs from courtlistener_search_financial_disclosures (the disclosure_id field). Required: disclosure_id.
courtlistener_get_judge(person_id)- Fetch full biographical profile for a single judge: positions on record — judicial appointments across all courts plus non-judicial roles — education, political affiliations, and ABA ratings. The position list is paginated upstream and walked under a page bound; the response reports whether it was truncated. Obtain person IDs from courtlistener_search_judges results. Required: person_id.
courtlistener_get_opinion(sections, cluster_id)- Fetch the full text and metadata for a single opinion cluster by cluster ID. A cluster groups all opinions filed in a case — majority, concurrence, dissent, and per curiam. Returns the cluster metadata (case name, court, citations, dates) plus every opinion variant with HTML and plain text. When the combined opinion text is too large to inline, the response lists each variant as a retrievable section (opinion_<id>) while keeping the cheap cluster metadata — re-call with sections:[...] to pull specific variants in full. Obtain cluster IDs from courtlistener_search_opinions, courtlistener_lookup_citation, or docket results. Required: cluster_id.
courtlistener_get_oral_argument(id, sections)- Fetch the full detail record for a single oral argument audio recording by its ID (the audio_id from courtlistener_search_oral_arguments). Returns the case name, panel judge IDs, duration, MP3 download URL, linked docket, and the speech-to-text transcript when transcription has completed. A long transcript is withheld and listed as a retrievable section instead; re-call with sections:["transcript"] to pull it. Every other field is present either way. The argument date is not on this record — it comes from the search result or the linked docket. Required: id.
courtlistener_get_parties(cursor, docket_id, page_size)- Fetch all parties and attorneys of record for a RECAP federal docket by docket ID. Returns each party's name, role (Plaintiff, Defendant, Petitioner, Respondent, etc.), and their attorneys with contact information, scoped to this docket. Costs two upstream requests per call (parties + attorney lookup) against a rate-limited free tier, and one more for each extra page of a large attorney roster. Obtain docket IDs from courtlistener_search_dockets or courtlistener_get_docket. Required: docket_id.
courtlistener_lookup_citation(citation, max_court_lookups)- Resolve legal citations (e.g., "410 U.S. 113", "93 S. Ct. 705") to opinion cluster IDs and case metadata. Enables workflows that start from a known citation rather than a search query. CourtListener extracts every citation it finds in the submitted text, so passing a passage returns one entry per citation, each with its own resolution status — an unresolved or ambiguous citation is reported in the results, not raised as an error. Supports standard US reporter formats. Costs one request against CourtListener's per-citation quota, plus one ordinary request per distinct docket whose court is resolved — max_court_lookups bounds that second half (default 4, set 0 to skip court resolution entirely). CourtListener meters this endpoint by citations submitted rather than by call, so a long passage spends proportionally more of that quota. Requires authentication — uses the CourtListener /citation-lookup/ endpoint. Required: citation.
courtlistener_lookup_courts(page, status, jurisdiction, has_opinion_scraper)- List courts with optional filtering by jurisdiction type, active/inactive status, and scraper coverage. Primarily used to discover court IDs for use in search and filter parameters across all other courtlistener tools. Defaults to the active bench — the courts CourtListener still scrapes; pass status:'inactive' for historical courts or status:'any' for every court. A bundled snapshot returns the complete list of matching court IDs without paging whenever the filtered set fits the response budget, which covers the default bench and every jurisdiction filter. Full court records — names, citation strings, scraper status — come live from CourtListener at a fixed 20 rows per page, so pull those only when a court ID alone is not enough.
courtlistener_search_dockets(q, court, cursor, page_size, party_name, filed_after, filed_before)- Search RECAP federal court dockets. Query terms match case name, docket number, party, and attorney names; filters narrow by party name, court, and filing date. RECAP is a crowd-sourced mirror of PACER (the federal court filing system) — coverage varies by court and date. Returns docket metadata with the parties, attorneys, and firms of record, plus up to 3 sample document entries per docket. Use courtlistener_lookup_courts to find court IDs. Required: q.
courtlistener_search_financial_disclosures(year, cursor, judge_id, page_size)- Search federal judicial financial disclosure filings — the annual reports judges file on investments, gifts, debts, outside positions, and income. Filter by judge (person ID from courtlistener_search_judges) and/or filing year; the year filter is applied to the fetched page only (CourtListener has no server-side year filter), so page through with cursor to reach a judge's filings for a year that fall on later pages. Returns per-filing metadata, category counts, itemized gifts, and a link to the source PDF. Line-item investments (often hundreds per filing, with coded values) are summarized as counts; the linked PDF carries the full itemization. Use this for judicial-ethics and recusal research after identifying a judge's person ID.
courtlistener_search_judges(q, court, cursor, appointer, page_size, political_affiliation)- Search judge/person records by name, appointing president, court, political affiliation, or demographic. Returns biographical data, current position, and appointment summary. Use courtlistener_get_judge for full appointment history and education records. Required: q.
courtlistener_search_opinions(q, court, cursor, status, order_by, page_size, filed_after, filed_before)- Full-text search across 9M+ written US court opinions with field-level filtering. Returns opinion cluster summaries with case metadata, citations, matched text snippets, and the individual opinion variants filed in each case. Supports CourtListener field syntax (caseName:"roe v wade", court_id:scotus, judge:"Alito") and boolean operators (AND, OR, NOT). Use courtlistener_lookup_courts to find court IDs. CourtListener publishes free-tier limits of 5 req/min, 50/hr, 125/day; actual limits vary by token tier. Required: q.
courtlistener_search_oral_arguments(q, court, cursor, page_size, argued_after, argued_before)- Search appellate oral argument audio recordings — the largest public collection of oral argument audio. Returns recording metadata with two direct MP3 links per result (download_url at the originating court, local_path for CourtListener's durable copy), panel judge IDs, and transcript snippets where available. Panel judge IDs can be passed to courtlistener_get_judge for biographical context. Required: q.
Last successful function declaration observed on . Source: https://courtlistener.caseyjhand.com/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://courtlistener.caseyjhand.com/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| GitHub stars | 2 | Number of GitHub accounts that bookmarked this repository since it was created. It is a bookmark count, not installs, not active users and not quality. | cumulative, all time | GitHub | |
| Last commit | 2026-07-30 | Date of the most recent push to any branch. This is the strongest cheap indicator of whether the project is still maintained. | point in time | GitHub | |
| Open issues | 1 | Open issues plus open pull requests, as GitHub counts them together. A high number can mean an active project or an abandoned one. | as of fetch | GitHub | |
| Latest published version | 0.7.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-07-30 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| License | Apache-2.0 | Licence GitHub detected in the repository. Detection can be wrong; the LICENSE file is authoritative. | as of fetch | GitHub | |
| First listed in the MCP Registry | 2026-07-30 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| repository status | active | The repository exists on GitHub and is not archived. This says nothing about how recently it was worked on. | as of fetch | GitHub | |
| mcp tools declared | 14 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | courtlistener.caseyjhand.com | |
| mcp endpoint status | ok | The server listed 14 functions when asked. | as of probe | courtlistener.caseyjhand.com |
Where to get it
Related, by what their authors tagged them
-
io.github.cyanheads/ris-austria-mcp-server
— last commit 2026-07-31, shares case-law, legal-research
Search Austrian federal and state law, court decisions, and the authentic Bundesgesetzblatt (RIS).
-
io.github.GordonHal/transaction-coordinator
— last commit 2026-05-24, shares courtlistener
AI transaction coordinator + legal-matters platform for real estate and law firms.
-
LibreJustice
— last commit 2026-07-24, shares case-law, legal
Search French and European case law and French legal texts (codes, statutes, treaties).
-
OpenCaseLaw — Swiss Caselaw, Statutes & Doctrine
— last commit 2026-08-06, shares legal-research
1M+ Swiss court decisions, statutes & doctrine with citation graph (DE/FR/IT). CC0, free, 42 tools.
-
io.github.aa0101181514/tw-legal-rag
— last commit 2026-08-05, shares legal-research
Citation-guarded retrieval over 22M Taiwan court judgments and administrative interpretations
-
co.policyforge/mcp
— last commit 2026-08-03, shares legal
Generate, audit, and maintain legal policies that match what your code actually does.
-
com.acquislaw/acquis
— last commit 2026-07-17, shares legal
Verified EU law: verbatim, signed provisions with EUR-Lex links. Read-only, not legal advice.
-
com.faireplace/public-tools
— last commit 2026-07-02, shares legal
French rental tools: create & e-sign a lease, rent control, IRL, deposit, receipts (France).
-
eu.ansvar/swedish-law-mcp
— archived, last commit 2026-07-07, shares legal
Query 750+ Swedish statutes, EU cross-references, case law, and preparatory works
-
mcp-sudact
— last commit 2026-07-14, shares legal
Russian court practice (Sudact): case search by article, court, dates; full decision text.
These share tags the maintainers applied themselves, such as case-law, legal-research, courtlistener, legal. Common tags like "mcp" or "ai" are ignored for this: agreeing with six hundred other projects is not a similarity.
This is not a recommendation and not a test result. It is a map of what the authors said their work is about.
Also from cyanheads
-
io.github.cyanheads/anime-mcp-server
— last commit 2026-07-30
Search anime/manga, franchise watch order, schedule, characters, rankings, studio filmography.
-
io.github.cyanheads/arxiv-mcp-server
— last commit 2026-07-27
Search arXiv, fetch paper metadata, and read full-text content.
-
io.github.cyanheads/astronomy-mcp-server
— last commit 2026-07-31
Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons.
-
io.github.cyanheads/attack-surface-mcp-server
— last commit 2026-07-30
Passive external attack-surface mapping: CT subdomains, DNS, TLS, HTTP posture, RDAP/WHOIS, Shodan.
-
io.github.cyanheads/aviation-weather-mcp-server
— last commit 2026-07-30
Fetch METARs, TAFs, PIREPs, and SIGMETs/AIRMETs from the NWS Aviation Weather Center.
-
io.github.cyanheads/biorxiv-mcp-server
— last commit 2026-07-11
Search and retrieve bioRxiv and medRxiv preprints — by DOI, date interval, or keyword — via MCP.
-
io.github.cyanheads/bls-labor-mcp-server
— last commit 2026-07-17
Fetch US Bureau of Labor Statistics data — CPI, unemployment, wages, JOLTS, and more via MCP.
-
io.github.cyanheads/bls-mcp-server
— last commit 2026-07-17
Fetch US Bureau of Labor Statistics data — CPI, unemployment, wages, JOLTS, and more via MCP.
-
io.github.cyanheads/bluesky-mcp-server
— last commit 2026-07-31
Search posts, profiles, feeds, threads, and trending topics on Bluesky.
-
io.github.cyanheads/brapi-mcp-server
— last commit 2026-07-16
Collaborative BrAPI v2.1 MCP workspace — studies, germplasm, genotypes across Breedbase, T3, more.
How the author describes it
Topics the maintainer set on GitHub: ai-agents, ai-tools, case-law, citation-network, court-opinions, courtlistener, cyanheads, federal-courts, judges, legal, legal-research, mcp, mcp-server, model-context-protocol, pacer, recap, typescript.
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json