CourtListener について
CourtListenerは、CourtListener APIを通じて米国の裁判所意見、事件記録、提出書類、裁判官、引用情報、eCFR規則への読み取り専用アクセスをAIクライアントに提供するMCPサーバーです。ホスト型とセルフホストに対応し、BYOK認証とカーソル方式の検索ページネーションを備えています。
主な機能
- 01意見書、事件記録、提出書類、人名の検索
- 02裁判記録と音声の取得
- 03引用情報の検索と解析
- 04eCFR規則の検索と確認
- 05カーソルによる検索結果のページ分割
活用シーン
- 01法律調査で米国の裁判所意見を探す
- 02事件記録やRECAP提出書類を確認
- 03法律文書の引用を検証
- 04eCFRの連邦規則を検索
MCP 対応
CourtListenerの検索、記録取得、引用情報、eCFR、システム機能を扱う34個の読み取り専用ツールをMCPクライアントに公開します。ホスト型のStreamable HTTP、またはローカルのHTTP・stdioトランスポートに対応し、リクエストごとのBYOKヘッダーを利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://courtlistener-mcp.vaquill.ai/mcp/claude mcp add --transport http vaquill-ai-courtlistener https://courtlistener-mcp.vaquill.ai/mcp/{"mcpServers":{"vaquill-ai-courtlistener":{"type":"http","url":"https://courtlistener-mcp.vaquill.ai/mcp/"}}}Cursor で開く{"servers":{"vaquill-ai-courtlistener":{"type":"http","url":"https://courtlistener-mcp.vaquill.ai/mcp/"}}}VS Code で開く{"mcpServers":{"vaquill-ai-courtlistener":{"type":"http","url":"https://courtlistener-mcp.vaquill.ai/mcp/"}}}{"mcpServers":{"vaquill-ai-courtlistener":{"serverUrl":"https://courtlistener-mcp.vaquill.ai/mcp/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://courtlistener-mcp.vaquill.ai/mcp/認証が必要ツール
34このツールにパラメーターはありません。
詳細
CourtListener MCP サーバー
Model Context Protocol サーバーです。公式の CourtListener API v4 を通じて、AI アシスタントが CourtListener の法律データベース(米国の連邦裁判所および州裁判所の判決、訴訟記録、RECAP の提出書類、PACER データ、口頭弁論、裁判官)と、Electronic Code of Federal Regulations を利用できるようにします。
Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、ChatGPT Desktop、または MCP 対応のクライアントで使用できます。
フォーク元:Travis-Prall/court-listener-mcp。このフォークでは、ホスト型エンドポイント、独自キー持ち込み(BYOK)認証、
/healthルート、強化された Dockerfile、eCFR(連邦規則)ツール一式、カーソルページネーション、クライアントごとのレート制限、読み取り専用ツールのアノテーションを追加しています。詳しくは変更履歴をご覧ください。
公式サーバーとこのサーバーの使い分け
CourtListener を運営する Free Law Project は、公式 MCP サーバーを
https://mcp.courtlistener.com/ でホストしています(OAuth 認証。CourtListener アカウントがあれば無料です)。
告知をご覧ください。OAuth 認証と、最も幅広い CourtListener の機能を利用したい場合は、公式サーバーをおすすめします。eCFR の連邦規則ツール(公式サーバーにはありません)、シンプルな BYOK ヘッダー認証(OAuth の手続き不要)、またはセルフホスト/組み込み可能な Python サーバーが必要な場合は、このサーバーをお使いください。両者は相互に補完するものです。
ホスト型エンドポイントを使う(インストール不要)
Vaquill チームがコミュニティ向けの公開インスタンスを運用しています。
https://courtlistener-mcp.vaquill.ai/mcp/
courtlistener.com/help/api/rest/ から取得した無料の CourtListener トークンをご自身で用意してください。サーバーはそのトークンを転送します。キーを確認したり保存したりすることはありません。
Claude Desktop / Claude Code
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または
%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"courtlistener": {
"url": "https://courtlistener-mcp.vaquill.ai/mcp/",
"headers": {
"X-CourtListener-Token": "YOUR_COURTLISTENER_TOKEN"
}
}
}
}
Cursor
.cursor/mcp.json:
{
"mcpServers": {
"courtlistener": {
"url": "https://courtlistener-mcp.vaquill.ai/mcp/",
"headers": { "X-CourtListener-Token": "YOUR_COURTLISTENER_TOKEN" }
}
}
}
VS Code(GitHub Copilot Chat)
.vscode/mcp.json:
{
"servers": {
"courtlistener": {
"type": "http",
"url": "https://courtlistener-mcp.vaquill.ai/mcp/",
"headers": { "X-CourtListener-Token": "YOUR_COURTLISTENER_TOKEN" }
}
}
}
Claude Web(カスタムコネクター)
Settings → Connectors → Add custom connector → URL を貼り付け、ヘッダーとして
X-CourtListener-Token を追加します。ワークスペースの所有者のみが利用できます。
Windsurf、Continue など
カスタムヘッダー付きの MCP ストリーミング可能 HTTP に対応するクライアントであれば利用できます。
stdio のみ対応するクライアントでは、サーバーをローカルで実行する(下記参照)か、
mcp-remote でプロキシしてください。
ツール
4 つのグループ(各グループは名前空間で区切られています)に、34 個のツールがあります。すべて読み取り専用です。
| グループ | ツール |
|---|---|
| 検索(CourtListener) | search_opinions、search_dockets、search_dockets_with_documents、search_recap_documents、search_audio、search_people |
| 取得(CourtListener) | get_opinion、get_docket、get_audio、get_court、get_person、get_cluster |
| 引用 | citation_lookup_citation、citation_batch_lookup_citations、citation_verify_citation_format、citation_parse_citation_with_citeurl、citation_extract_citations_from_text、citation_enhanced_citation_lookup |
| eCFR(連邦規則) | ecfr_list_titles、ecfr_get_title_versions、ecfr_get_title_structure、ecfr_get_ancestry、ecfr_get_source_xml、ecfr_list_agencies、ecfr_list_all_corrections、ecfr_list_corrections_by_title、ecfr_search_regulations、ecfr_get_search_count、ecfr_get_search_summary、ecfr_get_title_search_counts、ecfr_get_daily_search_counts、ecfr_get_hierarchy_search_counts、ecfr_get_search_suggestions |
| システム | status |
検索ツールは cursor パラメーターを受け取り、ページネーション用の next_cursor を返します。
パラメーターの詳細はapp/README.mdをご覧ください。
認証
優先順位順に、次の2つのモードがあります。
- リクエストごとのヘッダー(BYOK) — ホスト型/共有デプロイで推奨されます。
すべての MCP リクエストで、ユーザーの CourtListener キーを送信します。
X-CourtListener-Token: <key>(推奨)、またはAuthorization: Token <key>(CourtListener のネイティブ方式。MCP サーバー自体でAuthorizationによる認証が要求されていない場合にのみ機能します)。
- サーバー環境変数へのフォールバック — サーバーに
COURT_LISTENER_API_KEYを設定します。 リクエストごとのヘッダーが指定されていない場合に使用されます。BYOK を必須にして運営者の利用枠を消費しないよう、公開インスタンスでは設定しないでください。
どちらも指定されていない場合、ツールは明確なメッセージを含む ValueError を返します。
セルフホスト
Docker
git clone https://github.com/Vaquill-AI/courtlistener-mcp.git
cd courtlistener-mcp
cp .env.example .env # optionally set COURT_LISTENER_API_KEY for single-tenant
docker compose up -d
# server at http://localhost:8000/mcp/
Python(uv)
uv sync
uv run python -m app --transport http
Stdio(ローカル CLI 連携)
uv run python -m app --transport stdio
Claude Desktop に追加します。
{
"mcpServers": {
"courtlistener-local": {
"command": "uv",
"args": ["run", "--directory", "/abs/path/to/courtlistener-mcp", "python", "-m", "app", "--transport", "stdio"],
"env": { "COURT_LISTENER_API_KEY": "your_token" }
}
}
}
設定
| 変数 | 必須 | デフォルト | 備考 |
|---|---|---|---|
COURT_LISTENER_API_KEY | 任意* | — | リクエストごとのヘッダーがない場合のフォールバックです。公開サーバーでは設定しないでください。 |
COURTLISTENER_BASE_URL | いいえ | https://www.courtlistener.com/api/rest/v4/ | |
COURTLISTENER_TIMEOUT | いいえ | 30 | 秒 |
MCP_TRANSPORT | いいえ | stdio | stdio | http | sse |
MCP_PORT | いいえ | 8000 | http/sse のみ |
HOST | いいえ | 0.0.0.0 | http/sse のみ |
ECFR_BASE_URL | いいえ | https://www.ecfr.gov | eCFR API のベース URL(キー不要) |
RATE_LIMIT_ENABLED | いいえ | true | クライアントごとの MCP レート制限 |
RATE_LIMIT_RPS | いいえ | 15 | クライアントごとの最大リクエスト数/秒 |
RATE_LIMIT_BURST | いいえ | 40 | クライアントごとのバースト容量 |
* BYOK を使用しないシングルテナントモードで実行する場合にのみ必須です。
ヘルスチェック
curl https://courtlistener-mcp.vaquill.ai/health
# {"status":"healthy","service":"courtlistener-mcp","version":"..."}
開発
uv sync --dev
uv run pytest
uv run ruff format . && uv run ruff check .
uv run mypy app/
変更履歴
0.2.0
- eCFR(連邦規則)のツール一式を追加(15 個のツール)。タイトル、構造、バージョン、系譜、ソース XML、機関、訂正情報、規則の全文検索と分析に対応しました。CourtListener のみを扱うサーバーとの差別化要素です。
- 検証時のクラッシュを修正:検索フィルターのオプション項目を null 許容型(
str | None)にしたため、明示的な JSON のnullを送信するクライアントでValidationErrorが発生しなくなりました(以前はsearch_dockets/search_recap_documentsが失敗していました)。 - 実際のページネーションに対応:機能していなかった
hitパラメーターを削除し、検索ツールでlimitが反映されるようにしました。また、next_cursorトークンを返し、入力のcursorに対応しました。 - すべてのツールに読み取り専用のツールアノテーションを追加しました(クライアントの操作性が向上し、書き込みプロンプトが表示されません)。
- クライアントごとのレート制限ミドルウェアを追加しました(設定可能で、デフォルトで有効)。
import_serverからmountに移行(FastMCP 3)。API キーの環境変数エイリアスを修正し、プロジェクトのメタデータを更新して、テストスイートをすべて通過させました(ユニットテストはモックを使用し、実 API テストはRUN_INTEGRATION=1の場合に実行)。
クレジットとライセンス
- オリジナルの実装:Travis-Prall/court-listener-mcp
- ホスト:Vaquill — courtlistener-mcp.vaquill.ai
- ライセンス:MIT(LICENSE を参照)
CourtListener のデータは、Free Law Project により、それぞれの利用条件に基づいて提供されています。eCFR のデータは ecfr.gov のものです。
コミュニティ
質問やアイデアがある方、または貢献したい方は、Discord で Vaquill コミュニティに参加してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。