mcpField
B
bill-commons

bill-commons

リモート
billcommons.org法務・行政09 週間前に更新
リポジトリ公式サイト

bill-commons について

Bill Commonsは、全米50州とワシントンD.C.の現会期・会期期間を対象とするオープンソースの立法検索プラットフォームです。一般利用者や立法調査者向けに、法案本文、提出者、投票、審議状況をWeb UI、REST API、MCPサーバーで提供します。

主な機能

  1. 0120万9,000件超の州法案検索
  2. 02法案本文・提出者・状況の確認
  3. 03法案バージョンの比較
  4. 04立法経緯の追跡
  5. 05REST APIとカバレッジページの提供

活用シーン

  1. 01州やテーマを指定した法案検索
  2. 02修正内容と投票状況の確認
  3. 03州ごとの現行立法課題の比較

MCP 対応

Streamable HTTP対応のMCPサーバーが、`search_legislation`、`get_bill_record`、`compare_bill_versions`、`trace_legislative_history`などの立法検索・法案照会ツールをMCPクライアントに公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.billcommons.org/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

10
パラメーター型必須説明
qstringはい
limitanyいいえ
statusanyいいえ
chamberanyいいえ
jurisdictionanyいいえ

詳細

Bill Commons

Bill Commons は、全米 50 州と DC の現会期/2 年会期を対象とする、公開されたオープンソースの立法検索プラットフォームです。ウェブ検索 UI、REST API、MCP(Model Context Protocol)サーバー、公開ステータス/対応状況ページを提供します。まず公共インフラとしての役割を重視しており、通常の検索や妥当な範囲の API 利用にペイウォールはありません。匿名の呼び出し元には十分な 1 日あたりの上限(IP あたり 1 日 2,000 リクエスト、/24 サブネットあたり 1 日 5,000 リクエスト)が適用され、無料の API キーで上限をさらに引き上げられます。有料となるのは、大量利用/一括利用のみです。API キーと全文書コーパスのスナップショットについては、/docs/bulk をご覧ください。

固定されたアーキテクチャとデータモデルについては、 docs/architecture/ARCHITECTURE.md をご覧ください。

本番環境

Railway(プロジェクト billcommons:api、mcp、worker サービス+マネージド Postgres)と Vercel(プロジェクト billcommons-web)でホストされています。デプロイ/ロールバックの手順全体については、 docs/operations/deployment-runbook.md をご覧ください。

Claude(または任意の MCP クライアント)での利用

ホスト型 MCP サーバーを使うと、AI アシスタントが 209k 件以上のすべての法案に直接アクセスできます。API キーは不要で、1 つのコマンド以外のセットアップも不要です。

claude mcp add bill-commons --transport http https://mcp.billcommons.org/mcp

Claude Desktop:Settings → Connectors → Add custom connector で URL https://mcp.billcommons.org/mcp を指定します。Cursor などのクライアントでは、同じ URL を mcp.json に Streamable HTTP サーバーとして追加します。

search_legislation、get_bill_record、compare_bill_versions、trace_legislative_history など、10 個のツールを利用できます。詳細な手順(MCP を利用しないエージェント向けの REST の使用例を含む): https://billcommons.org/docs/agents

アーキテクチャの概要

                    ┌─────────────┐
   users ─────────▶ │  apps/web   │  Next.js, billcommons.org
                    │ (Vercel)    │  status.billcommons.org (rewrite → /coverage)
                    └──────┬──────┘
                           │ HTTPS (NEXT_PUBLIC_API_BASE)
                           ▼
                    ┌─────────────┐        ┌──────────────┐
                    │  apps/api   │◀──────▶│  apps/mcp    │  Streamable HTTP
                    │  FastAPI    │        │  10 MCP tools│  mcp.billcommons.org
                    │ /api/v1     │        └──────────────┘
                    │ api.billcommons.org
                    └──────┬──────┘
                           │ reads (SQLAlchemy)
                           ▼
                    ┌─────────────────────────────┐
                    │   Postgres 16 (Railway)      │
                    │  jurisdictions, sessions,     │
                    │  bills, actions, sponsorships,│
                    │  votes, ingest_jobs, coverage  │
                    └──────────────▲──────────────┘
                                   │ writes (idempotent upserts)
                    ┌──────────────┴──────────────┐
                    │  workers/ingest (worker svc)  │
                    │  autoboot: seed → bootstrap →│
                    │  schedule-refresh → job loop  │
                    │  sources: Open States bulk CSV│
                    │  (T2 bootstrap) + v3 API (T2  │
                    │  incremental, OPENSTATES_API_ │
                    │  KEY) + full-text fetcher     │
                    └──────────────┬──────────────┘
                                   ▼
                    RawStore (filesystem, RAWSTORE_ROOT
                    volume in prod) — sha256-addressed
                    raw payload archive

packages/schema(SQLAlchemy モデル+Alembic)は、他のすべてのパッケージ/アプリがインポートする唯一の信頼できる情報源です。どのサービスも独自のデータモデルを持ちません。

モノレポの構成

apps/web        Next.js 15 (App Router, TS) — search UI + status page
apps/api        FastAPI — REST API (/api/v1)
apps/mcp        MCP server (Streamable HTTP, mounted at /mcp)
workers/ingest  Ingestion workers, job queue, per-source adapters
packages/schema SQLAlchemy models + Alembic migrations (single source of truth)
packages/shared Shared Python utils: bill-number normalization, rawstore, http client
packages/source-registry  Per-jurisdiction source registry (data + loader)
packages/search Search SQL builders / query parsing
infra/docker    Dockerfiles + docker-compose.yml (local stack)
infra/deployment Railway/Vercel configs, DNS runbook
docs/           Architecture, API, sources, operations, state-coverage docs
data/registry   Machine-readable registry (sessions, sources)

ローカル開発環境のセットアップ

前提条件
  • Python 3.12
  • PostgreSQL 16(pg_trgm、unaccent、pgcrypto 拡張機能が利用可能であること)
  • Node.js 20 以降(apps/web 用)
Python 環境
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

これにより、packages/schema と packages/shared が編集可能なインストールとしてインストールされます(データモデルと共有ユーティリティの唯一の信頼できる情報源)。さらに、ワーカーパッケージもインストールされます:.venv/bin/pip install -e workers/ingest。API に取り組む場合は、API パッケージもインストールしてください:.venv/bin/pip install -e apps/api。

データベース

環境変数(またはフォールバックとして読み込まれる ~/.config/billcommons/.env。このファイルはコミットされません)に DATABASE_URL を設定します。

DATABASE_URL=postgresql://user:password@host:port/dbname

pg_trgm と unaccent 拡張機能が利用可能な Postgres 16 が必要です(マイグレーション 0001 によって作成されます)。マイグレーションを実行します。

cd packages/schema
../../.venv/bin/alembic upgrade head
ローカルでのデータのシード
# Seed all 51 jurisdictions/sessions/coverage rows from the registry:
.venv/bin/python -m billcommons_ingest seed-registry

# Download a state's Open States bulk-CSV zip and ingest it (see
# docs/operations/ingestion-runbook.md for the full command reference):
python3 workers/ingest/download_bulk.py --only NC
.venv/bin/python -m billcommons_ingest bootstrap --state NC --zip data/bulkzips/NC_2025.zip
.venv/bin/python -m billcommons_ingest recompute-coverage
アプリのローカル実行
# API (FastAPI, http://localhost:8000, docs at /docs)
.venv/bin/uvicorn main:app --app-dir apps/api --reload --port 8000

# MCP server (Streamable HTTP, http://localhost:8400/mcp by default)
.venv/bin/python apps/mcp/server.py

# Ingestion worker (long-running queue loop; runs schedule-refresh
# periodically inside the same process)
.venv/bin/python -m billcommons_ingest worker

# Web app (Next.js — separate from the Python stack)
cd apps/web
npm install
NEXT_PUBLIC_API_BASE=http://localhost:8000 npm run dev
テスト
.venv/bin/pytest packages/shared/tests
.venv/bin/pytest workers/ingest/tests
.venv/bin/pytest apps/api/tests
Docker を使ったローカルでのスタック実行
cd infra/docker
docker compose up --build

これにより、Postgres、API、取り込みワーカー、MCP サーバーが起動します。Web アプリ(apps/web)は、ローカル開発中に npm run dev で別途実行します(プレースホルダーのサービス定義については infra/docker/docker-compose.yml をご覧ください)。

ドキュメント

ライセンス

Apache-2.0。LICENSE および NOTICE を参照してください。データの帰属情報 (Open States / Plural Policy、パブリックドメインの立法データ)。

コントリビューション

CONTRIBUTING.md を参照してください。このプロジェクトは Contributor Covenant に準拠しています。

セキュリティ

責任ある脆弱性開示については SECURITY.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。