congressgov-mcp-server について
congressgov-mcp-serverは、議会研究者や政策分析担当者向けに、Congress.govと上院投票フィードの米国立法記録を提供します。法案、議員、委員会、投票、指名、報告書を扱い、文書本文の閲覧や承認手続きの追跡にも対応します。
主な機能
- 01法案、法律、立法活動の閲覧
- 02議員と委員会の検索
- 03下院・上院の記名投票の取得
- 04指名と承認手続きの追跡
- 05CRS報告書と委員会報告書の閲覧
活用シーン
- 01法案本文と立法履歴の確認
- 02議員が提出した法案の確認
- 03記名投票における議員の立場の比較
- 04指名の上院承認手続きの追跡
MCP 対応
MCPクライアントに11のツール、5つのリソース、2つのプロンプトを提供します。STDIOとStreamable HTTPに対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://congressgov.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-congressgov https://congressgov.caseyjhand.com/mcp{"mcpServers":{"cyanheads-congressgov":{"type":"http","url":"https://congressgov.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-congressgov":{"type":"http","url":"https://congressgov.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-congressgov":{"type":"http","url":"https://congressgov.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-congressgov":{"serverUrl":"https://congressgov.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
10| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | ページあたりの結果数(1-250)。 |
| order | enum | いいえ | 'list' の並べ替え順(更新日で並べ替えます)。'recent'(既定)は新しい順、'oldest' は昇順です。他の操作では無視されます。recent | oldest |
| format | enum | いいえ | 'content' の文書形式です。'text' は GPO の Formatted Text で、プレーンテキストの印刷用整形出力です。確認対象となるすべての文書で公開されています。'xml' は United States Legislative Markup を優先し、利用できない場合は Formatted XML にフォールバックします。一部の法案本文バージョンにはありますが、委員会報告書や Congressional Record の記事にはありません。PDF は取得されません。'text'/'articles' が返す形式 URL から読み取ってください。text | xml |
| offset | integer | いいえ | ページネーションのオフセット。 |
| billType | enum | いいえ | 法案種別コードです。get およびサブリソース操作で必須です。hr | s | hjres | sjres | hconres | sconres | hres | sres |
| congress | integer | はい | 議会番号(例:118、119)。 |
| operation | enum | はい | 取得するデータです。list | get | actions | amendments | cosponsors | committees | subjects | summaries | text | titles | related | content |
| billNumber | any | いいえ | 法案番号です。get およびサブリソース操作で必須です。list の行にある数字文字列形式(例:"9479")と数値の両方を受け付けます。 |
| toDateTime | string | いいえ | 日付範囲フィルターの終了日時(ISO 8601)です。フィールドの意味は fromDateTime と同じです。 |
| versionCode | string | いいえ | 'summaries' が返す要約バージョンです。要約行に含まれる versionCode('00' は提出時、'49' は公法)を指定します。選択対象は法案の要約全体で、Congress.gov には絞り込み機能がありません。limit/offset で一致する行をページ分割します。省略するとすべてのバージョンを返します。他の操作では無視されます。 |
| fromDateTime | string | いいえ | 日付範囲フィルターの開始日時(ISO 8601)です。法案の更新日時、つまり Congress.gov が最後にレコードを更新した日時で絞り込みます。法案の直近の立法措置の日付ではありません。 |
| characterLimit | integer | いいえ | 返す最大文字数(1-100000)です。'content' の文書ウィンドウと、'summaries' の各行の要約テキストに適用されます。立法文書は100万文字を超えることがあり、成立した法案の要約も20万文字を超えることがあるため、どちらも複数回に分けて読み取る必要があります。 |
| characterOffset | integer | いいえ | 返す最初の文字の位置です(0始まり)。'content' の文書と、'summaries' で返される各行の要約テキストに適用されます。オフセットは正確で、節や段落の区切りには調整されません。そのため、応答の nextOffset(または要約行の textNextOffset)を次回に渡せば、すべての文字を重複なく取得できます。 |
| textVersionIndex | integer | いいえ | 'content' が読み取る本文バージョンです。'text' が返す順序と同じく0始まりで、0が最新バージョンです。他の操作では無視されます。 |
詳細
@cyanheads/congressgov-mcp-server
MCP を通じて、米国議会のデータ(法案、採決、議員、委員会)にアクセスできます。STDIO または Streamable HTTP に対応しています。
公開ホスト型サーバー: https://congressgov.caseyjhand.com/mcp
概要
Congress.gov と上院の公式採決フィードから、米国議会のデータを取得します。法案、成立した法律、議員、委員会、記名投票、指名、CRS および委員会の報告書、Congressional Record に対応しています。立法活動を確認し、法案や報告書の本文を読み、上院での承認に至るまで指名を追跡できます。
ツール
| ツール | 説明 |
|---|---|
congressgov_bill_lookup | 法案の閲覧と取得:措置、提案者、概要、本文、関連法案 |
congressgov_enacted_laws | 議会ごとに成立した公法および私法を閲覧 |
congressgov_member_lookup | 州、選挙区、議会ごとに議員を検索し、議員の立法活動を取得 |
congressgov_committee_lookup | 委員会と、その委員会に関連する法案、報告書、指名を閲覧 |
congressgov_roll_votes | 下院および上院の記名投票と各議員の投票内容を取得 |
congressgov_senate_nominations | 大統領指名を閲覧し、上院での承認状況を追跡 |
congressgov_bill_summaries | 最近更新された CRS 法案概要を閲覧 |
congressgov_crs_reports | 超党派の CRS 政策報告書を閲覧・取得 |
congressgov_committee_reports | 法案に付属する委員会報告書を閲覧・参照 |
congressgov_daily_record | 日刊 Congressional Record を閲覧・参照 |
congressgov_search_bills | ローカルの全文ミラーを通じて、法案のタイトルと CRS 概要をキーワード検索(オプトイン) |
リソース
| リソース | 説明 |
|---|---|
congress://current | 現在の議会番号、会期日程、議院情報 |
congress://bill-types | 有効な法案種別コードの参照表 |
congress://member/{bioguideId} | bioguide ID による議員プロフィール |
congress://bill/{congress}/{billType}/{billNumber} | 議会、種別、番号による法案の詳細 |
congress://committee/{committeeCode} | 委員会コードによる委員会の詳細 |
多くの MCP クライアントはツールのみをサポートし、リソースを表示しないため、法案、議員、委員会のデータには congressgov_bill_lookup、congressgov_member_lookup、congressgov_committee_lookup(操作 get)からもアクセスできます。
プロンプト
| プロンプト | 説明 |
|---|---|
congressgov_bill_analysis | 法案を分析するための構造化されたフレームワーク |
congressgov_legislative_research | 議会全体にわたる政策分野の調査フレームワーク |
機能リファレンス
congressgov_bill_lookup tool
listは 1 つのcongressを閲覧し、billTypeと、レコードの更新日によるfromDateTime/toDateTimeの範囲で絞り込みます。デフォルトでは新しい順で、order: 'oldest'を指定すると古い順になります。get、actions、amendments、cosponsors、committees、subjects、summaries、text、titles、related、contentにはcongress+billType+billNumberが必要です- 法案の行に含まれる
typeとnumberは、それぞれbillTypeとbillNumberとして受け付けられます。法案種別コードでは大文字と小文字が区別されません。正規キーとエイリアスキーを同時に指定すると拒否されるため、各フィールドには名前を 1 つだけ送信してください contentはtextVersionIndex(0 が最新)のテキストバージョンを読み取り、content.textに 1 つの文字範囲を返します。totalCharacters、truncated、nextOffsetも返されますsummariesは任意のversionCode(00は提出時、49は公法)を受け付け、congressgov_bill_summariesと同様にcharacterOffset/characterLimitを使ってページ分割します
congressgov_enacted_laws tool
listは 1 つのcongressを閲覧し、任意でlawType(pubまたはpriv)による絞り込みができます。これはcongressgov_bill_lookupにはない制定法の絞り込みです。getにはlawType+lawNumberが必要で、一覧行のlaws[].number(118-90)または数字のみ(90)を指定しますgetは、laws[]配列に法律の引用情報が含まれる、制定の元となった法案レコードを返します
congressgov_member_lookup tool
- 名前検索には対応していません。
listはstateCode(および選挙区。全州区の場合は0で、stateCodeが必要)、congress、currentMemberで絞り込みます getはbioguideId(例:P000197)のプロフィールを返します。sponsoredとcosponsoredは、その議員の提出法案と共同提出法案を返します
congressgov_committee_lookup tool
committeeCodeは議院の接頭辞(h/s/j)、文字、2 桁の接尾辞(例:hsju00)で構成されます。get、bills、reports、および上院専用のnominationsは、接頭辞からchamberを判定しますcommitteeCodeに委員会名を指定すると、一致する委員会が 1 つだけの場合に解決され、それ以外の場合は通知とともに候補行が返されます。filterによるlistでは、対象範囲内のすべての委員会を名前で照合し、あいまい一致にはapproximate: trueが付与されますbillsはデフォルトで新しい順(order)に返されます。各行にタイトルは含まれないため、行ごとにcongressgov_bill_lookupのgetを続けて呼び出してください
congressgov_roll_votes tool
chamberはhouse(デフォルト、Congress.gov API)またはsenate(上院の LIS フィード)です。すべての呼び出しでcongress+session(1 または 2)が必要です。get/membersにはさらにvoteNumberが必要で、これは各会期でリセットされ、議院ごとに固有ですlistはデフォルトで新しい順になり、order: 'oldest'を指定すると古い順になります。getは質問、結果、票数、政党別内訳を返し、membersは各議員の投票態度を返します- 上院の投票記録は第 101 議会(1989 年)から始まります。上院の行には、フィードに含まれる年のない
voteDateと、そこから導出されたvoteDateIsoが組み合わされています
congressgov_senate_nominations ツール
listは 1 つのcongressを参照します。get、actions、committees、hearings、nomineesにはnominationNumber(PN1000 の場合は1000)が必要です。また、nomineesにはgetが返すnominees配列のordinalも必要です- 複数パートに分かれた指名(例:PN851)の活動は、分割された子項目(
851-1、851-2、…)に保持されます。分割前の番号を指定して空のサブリソースを呼び出すと、該当する子項目を示す通知が返されます
congressgov_bill_summaries ツール
congressとbillTypeは省略可能です(billTypeを指定する場合はcongressが必要です)。fromDateTime/toDateTimeで絞り込む対象は法案のアクション日ではなく要約の更新日時です。両方を省略すると直近 7 日間が対象になります- シリアライズ後の文字数が 50,000 文字に達すると、ページへの行の追加が停止します(少なくとも 1 行は常に返され、
pagination.nextOffsetから再開できます)。25,000 文字を超える要約は、textTotalCharacters、textTruncated、textNextOffsetを含むウィンドウ形式で返されます - 1 つの法案の要約を取得する場合や、ウィンドウ形式の要約を最後まで読む場合は、
congressgov_bill_lookupのsummariesを使用してください
congressgov_crs_reports ツール
listはカタログを参照します。getにはR40097、RL33612、IF12345などのreportNumberが必要ですid、reportId、report_idはreportNumberとして受け付けられます。識別子キーは 1 つだけ指定してくださいgetは著者、トピック、要約、ダウンロード形式を返します
congressgov_committee_reports ツール
listは 1 つのcongressを参照し、任意でreportType(hrptは下院、srptは上院、erptは行政府)を指定できます。get、text、contentにはreportTypeとreportNumberが必要ですgetは引用情報、タイトル、委員会、関連法案を返します。textは{type, url}形式のリンクを一覧表示し、contentはレポートを 1 つの文字ウィンドウとして読み込みます
congressgov_daily_record ツール
- 次の順に参照します:
list(巻)→issues(volumeNumberで指定)→articles(volumeNumberとissueNumberで指定) contentは、号全体を通じた 0 始まりのarticleIndexで指定した記事を、1 つの文字ウィンドウとして読み込みます。Record の記事は整形済みテキストと PDF のみを公開しているため、format: 'xml'はformat_unavailableエラーになります
congressgov_search_bills ツール
- 法案タイトルと CRS の要約を、AND 条件で結合した
queryキーワードで検索し、congress、billType、originChamberで絞り込みます。limitは 1~100、offsetはページネーションに使用します - BM25 で順位付けされた行には、
congressgov_bill_lookup用のbillIdとcongress/billType/billNumber、およびsummaryPreviewが含まれます。政策分野と法案全文はインデックス化されていません CONGRESS_MIRROR_ENABLED=trueの場合のみ一覧に表示されます。bun run mirror:initでインデックスが作成されるまでは、通知とともに空の結果が返されます
congress://current リソース
- 現在の議会番号、会期日程、両院の情報を返します。他のクエリの基準となります
- 公開キャッシュの有効期間は 1 時間です
congress://bill-types リソース
- 8 種類の法案タイプコード(
hr、s、hjres、sjres、hconres、sconres、hres、`sres)について、説明、議院、引用例を返します - 静的なリソースで、上流への呼び出しはありません。公開キャッシュの有効期間は 24 時間です
congress://member/{bioguideId} リソース
bioguideIdは大文字 1 文字と 6 桁の数字で構成されます(例:P000197)- 議員プロフィール(氏名、州、所属政党、在任期間、役職、事務所、立法関連の件数)を返します
congress://bill/{congress}/{billType}/{billNumber} リソース
congressとbillNumberは正の整数です。billTypeには 8 種類の法案タイプコードのいずれかを指定します- 法案の詳細(提出者、状況、政策分野、委員会、最新のアクション)を返します
congress://committee/{committeeCode} リソース
committeeCodeは、h/s/jのいずれかに続く 3~8 文字の小文字英数字です(例:hsju00)。議院は先頭の文字で決まります- 委員会の詳細(名称、議院、小委員会、沿革、立法関連の件数)を返します
congressgov_bill_analysis プロンプト
- 引数:
congress、billType、billNumber。すべて必須です - 要約から見通しまで、7 部構成の分析を提示するユーザーメッセージを 1 つ返します。各パートで呼び出すツールも示します
congressgov_legislative_research プロンプト
topicは必須、congressは省略可能で、デフォルトは現在の議会ですCONGRESS_MIRROR_ENABLEDが有効な場合、計画はcongressgov_search_billsから始まります。無効な場合は、シードとなる法案、議員、委員会、または CRS レポート ID を求めます。トピックを受け付けるツールがほかにないためです
機能
@cyanheads/mcp-ts-core を基盤とし、stdio および Streamable HTTP トランスポート、切り替え可能な認証(none/jwt/oauth)、差し替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースに対応した構造化ログを備えています。
Congress.gov 固有の機能:
- Congress.gov REST API v3 用の型安全なクライアントに加え、上院のロールコール投票を提供する上院 LIS XML フィード用クライアント
- Congress.gov API にはキーワード検索機能がないため、ツールは議会、種別、日付範囲、議院、州、選挙区で閲覧します。リスト操作では
limitを 1~250(デフォルトは 20)、offsetを指定してページングします - 法案本文、委員会報告書、議会議事録の記事の
contentは、formatにtext(デフォルト)またはxmlを指定し、characterOffset/characterLimitの範囲(1~100,000 文字、デフォルトは 25,000 文字)を読み込みます。取得元はwww.congress.govのみに制限され、上限は 25 MB、期限は 30s です - api.data.gov の任意の API キーを使用できます。
DEMO_KEYは IP ごとに 1 時間あたり 30 リクエスト、1 日あたり 50 リクエストまで、登録済みのキーは 1 時間あたり 5,000 リクエストまで利用できます - オプトイン式のローカル SQLite FTS5 ミラー(
CONGRESS_MIRROR_ENABLED)により、法案タイトルと CRS 要約を対象としたキーワード検索を追加できます
エージェントに適した出力:
- すべてのリスト応答に
effectiveQueryとtotalCountが含まれ、一致するものがない場合はnoticeが付与されます listに詳細専用の識別子(billNumber、voteNumber、nominationNumber、reportNumber、volumeNumber)を指定すると、代わりに使用すべき操作を示すincompatible_identityエラーが返されますcontentはoffset、truncated、nextOffsetを返すため、数 MB の法案を読み進めても文字を飛ばしたり重複したりしません- 型付きエラー(
document_unavailable、format_unavailable、document_fetch_failed、document_too_large、offset_past_end、not_found、rate_limited、invalid_request、upstream_error、upstream_timeout)には、それぞれ復旧のヒントが付属します
はじめに
公開ホストインスタンス
公開インスタンスは https://congressgov.caseyjhand.com/mcp で利用できます。インストールは不要です。Streamable HTTP を提供しており、各クライアントで設定形式が異なります。
Claude Code の場合:
claude mcp add --transport http congressgov-mcp-server https://congressgov.caseyjhand.com/mcp
Cline の場合(cline_mcp_settings.json):
{
"mcpServers": {
"congressgov-mcp-server": {
"type": "streamableHttp",
"url": "https://congressgov.caseyjhand.com/mcp"
}
}
}
Cursor の場合(mcp.json):
{
"mcpServers": {
"congressgov-mcp-server": {
"url": "https://congressgov.caseyjhand.com/mcp"
}
}
}
Claude Desktop では、Settings → Connectors からリモートサーバーを追加します。
セルフホスト/ローカル
以下を MCP クライアントの設定ファイルに追加します。
{
"mcpServers": {
"congressgov-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/congressgov-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"CONGRESS_API_KEY": "your-api-key"
}
}
}
}
または npx を使用します(Bun は不要です)。
{
"mcpServers": {
"congressgov-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/congressgov-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"CONGRESS_API_KEY": "your-api-key"
}
}
}
}
または Docker を使用します。
{
"mcpServers": {
"congressgov-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"-e", "CONGRESS_API_KEY=your-api-key",
"ghcr.io/cyanheads/congressgov-mcp-server:latest"
]
}
}
}
Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動します。
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 CONGRESS_API_KEY=your-api-key bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
- Bun v1.4.0 以降(または Node.js v24 以降)。
- 任意:api.data.gov の無料キーを使用すると、デモキーの IP ごとに 1 時間あたり 30 リクエスト、1 日あたり 50 リクエストという上限が、1 時間あたり 5,000 リクエストに引き上げられます。
インストール
- リポジトリをクローンします:
git clone https://github.com/cyanheads/congressgov-mcp-server.git
- ディレクトリに移動します:
cd congressgov-mcp-server
- 依存関係をインストールします:
bun install
- 環境を設定します:
cp .env.example .env
# edit .env and set CONGRESS_API_KEY (and the mirror vars, if you want keyword search)
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
CONGRESS_API_KEY | api.data.gov の API キーです。 | DEMO_KEY |
CONGRESS_API_BASE_URL | Congress.gov API のベース URL です。 | https://api.congress.gov/v3 |
CONGRESS_MIRROR_ENABLED | ローカルの法案検索ミラーと congressgov_search_bills ツールを有効にします。 | false |
CONGRESS_MIRROR_PATH | SQLite ミラーインデックスのファイルシステムパスです。 | .mirror/bills.sqlite3 |
CONGRESS_MIRROR_REFRESH_CRON | プロセス内のミラー更新に使う Cron スケジュールです(HTTP トランスポートのみ)。未設定の場合は、mirror:refresh を手動で実行します。 | — |
CONGRESS_MIRROR_CONGRESSES | ミラー対象とする議会番号をカンマ区切りで指定します(例:118,119)。 | 現在の議会+1つ前の議会 |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポートです。 | 3010 |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。auto は stateful に解決されます。 | stateless |
MCP_AUTH_MODE | 認証方式:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(debug、info、notice、warning、error など)。 | info |
LOGS_DIR | ログファイルのディレクトリ(Node.js のみ)。 | <project-root>/logs |
OTEL_ENABLED | OpenTelemetry を有効にします。 | false |
OTEL_EXPORTER_OTLP_ENDPOINT | トレースとメトリクス用の OTLP ベースエンドポイントです。 | — |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | 明示的に指定する OTLP ログエンドポイントです。ベースエンドポイントを設定しても、ログのエクスポートは有効になりません。 | — |
LOG_TOOL_FAILURE_PAYLOADS | キーに基づく秘匿化を行い、失敗した呼び出しの入力と出力を記録します。自由形式の値に含まれるシークレットは秘匿化されません。 | false |
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES | 失敗した呼び出しの入力または出力レコードごとの最大バイト数です。 | 16384 |
オプションのオーバーライドの全一覧は、.env.example を参照してください。
サーバーの実行
ローカル開発
-
本番バージョンをビルドして実行する:
bun run rebuild bun run start:http # or start:stdio -
このチェックアウトから法案検索ミラーをビルドする(
CONGRESS_MIRROR_ENABLED=trueを指定):bun run mirror:init # full build bun run mirror:refresh # incremental refresh bun run mirror:verify # readiness and integrity checkミラー CLI を実行するには、このチェックアウトまたは Docker イメージのパスマッピングが必要です。npm インストールからこれらのスクリプトを実行することはできません。
-
チェックとテストを実行する:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t congressgov-mcp-server .
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server
Dockerfile のデフォルトは、HTTP トランスポート、ステートレスセッションモード、および /var/log/congressgov-mcp-server へのログ出力です。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。イメージにはミラースクリプトが含まれているため、docker exec <container> bun run mirror:init を実行すると、その場でインデックスを構築できます。
プロジェクト構成
| ディレクトリ | 用途 |
|---|---|
src/index.ts | createApp() エントリーポイント:ツール、リソース、プロンプトを登録し、サービスを初期化して、ミラー更新をスケジュールします。 |
src/config/ | Zod を使用した、サーバー固有の環境変数の解析と検証です。 |
src/mcp-server/tools/ | ツール定義(definitions/*.tool.ts)と、共有の入力、フォーマット、要約ウィンドウのヘルパーです。 |
src/mcp-server/resources/definitions/ | リソース定義(*.resource.ts)です。 |
src/mcp-server/prompts/definitions/ | プロンプト定義(*.prompt.ts)です。 |
src/services/congress-api/ | Congress.gov API クライアント:認証、ページネーション、レート制限です。 |
src/services/congress-documents/ | 上限付きの文書テキスト取得:ホスト許可リスト、バイト数上限、文字数ウィンドウです。 |
src/services/congress-mirror/ | ローカルの SQLite FTS5 法案検索ミラー:取り込み、正規化、スキーマです。 |
src/services/senate-lis/ | 上院の点呼投票用 Senate LIS XML クライアントです。 |
src/utils/ | HTML/XML 文字参照のデコードです。 |
scripts/ | ビルド、開発チェック、リリース用ツール、および mirror:init/mirror:refresh/mirror:verify CLI です。 |
tests/ | src/ の構成を反映した単体テストと統合テストです。 |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジック内で
try/catchは使用しません - リクエスト単位のログには
ctx.log、テナント単位のストレージにはctx.stateを使用します - すべてのツールは読み取り専用で、注釈には
readOnlyHint: trueとidempotentHint: trueを指定します - 外部 API 呼び出しはラップします。生データを検証し、ドメイン型に正規化してから、出力スキーマを返します。不足しているフィールドを捏造してはいけません
コントリビューション
Issue を歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
ライセンス
Apache-2.0 — 詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。