mcpField
U
uk-parliament-mcp-server

uk-parliament-mcp-server

リモート
github.com/cyanheads法務・行政13 日前に更新
リポジトリ

uk-parliament-mcp-server について

英国議会の公式 API を通じてウェストミンスターの記録を検索する MCP サーバーです。法案、議員、投票、Hansard、書面質問、委員会を扱い、stdio または Streamable HTTP で動作します。

主な機能

  1. 01議題、議院、段階で法案を検索
  2. 02法案の段階、修正案、動議を取得
  3. 03議員のプロフィール、役割、投票を確認
  4. 04分院投票と党派別集計を検索
  5. 05Hansard の発言と原文を検索
  6. 06質問、回答、委員会記録を検索

活用シーン

  1. 01法案の段階と修正案を追跡
  2. 02指定日の議員所属を確認
  3. 03特定の議院投票の記録を確認
  4. 04討論発言や書面質問への回答を検索

MCP 対応

英国議会の法案、議員、投票、Hansard、質問、委員会を扱う 9 つの読み取り専用ツールを MCP クライアントに提供します。stdio と Streamable HTTP に対応します。

設定

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

エンドポイントhttps://uk-parliament.caseyjhand.com/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 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npm@cyanheads/uk-parliament-mcp-server0.1.2

ツール

9
パラメーター型必須説明
houseenumいいえCommons または Lords。在任中の政党を取得する場合は必須です。commons | lords
limitintegerいいえ要求する参照行数。安全な正の整数で、デフォルトは 10、有効な上限は 20 です。
topicenumはい参照トピック、または静的な識別子/対応範囲ガイド。identifiers | coverage | bill_stages | bill_types | parties | departments | answering_bodies
cursorstringいいえ不透明なコレクションカーソル。同じ正規化済みフィルターを再使用してください。
nameContainsstringいいえ名前付き参照セット全体を対象に、大文字と小文字を区別せず、トークンを AND 条件で照合します。
contentCursorstringいいえ同じ選択内容の再帰的なコンテンツ継続に使う不透明なカーソル。

詳細

@cyanheads/uk-parliament-mcp-server

MCP 経由で、英国議会の法案、議員、採決、ハンサード、質問書、委員会を検索します。STDIO または Streamable HTTP に対応しています。

ツール 9 個 • リソース 0 個 • プロンプト 0 個

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概要

英国議会の法案、議員、庶民院および貴族院の採決、ハンサード、質問書、委員会に関する公式 API の記録を利用できます。議会の審議事項を検索し、選択した記録と出典リンクを取得して、それぞれ異なる識別子を使って議員、法案、採決、回答、委員会の証拠資料をたどれます。stdio プロセスまたはローカルの Streamable HTTP サーバーとして動作し、API キーは不要です。

ツール
ツール説明
ukparl_lookup_referenceフィルター ID、識別子の名前空間、過去のデータ範囲に関するガイダンスを確認します
ukparl_search_billsタイトル、院、会期、提出者、段階、法案の種類で法案の概要を検索します
ukparl_get_bill法案の詳細、段階、刊行物、修正案、ピンポン動議を取得します
ukparl_search_members日付を指定した議員検索を含め、現職および元下院議員・貴族院議員を検索します
ukparl_get_memberプロフィール、役職、委員会の議席、公式連絡先、利害関係、投票履歴を取得します
ukparl_search_divisions院ごとの採決を検索し、メタデータ、投票者、政党別集計を確認します
ukparl_search_hansard提供されている場合は完全な出典テキストとともに、議場での発言を検索します
ukparl_search_questions質問と回答のプレビューを検索するか、質問の詳細全体を取得します
ukparl_get_committee委員会を検索し、委員、議事、刊行物のメタデータを取得します

機能リファレンス

ukparl_lookup_reference ツール
  • topic:identifiers、coverage、bill_stages、bill_types、parties、departments、answering_bodies のいずれかです。ライブディレクトリはデフォルトで10行、最大20行を返し、任意の nameContains によるANDトークンフィルタリングに対応します
  • house が必須なのは parties の場合のみです。このディレクトリには選択した院で活動中の政党が含まれ、過去のすべての政党は含まれません。静的ガイドでは、院と名前のフィルターはいずれも使用できません
  • 識別子のガイダンスでは、参照用の stageId と法案固有の billStageId、院ごとの会期別表決ID、Questions APIのIDとUIN、委員会の人物IDとMembers APIのIDを区別します

ukparl_search_bills ツール
  • query、house、sessionId、memberId、stageIds、billTypeIds は任意です。各ID配列には最大20件を指定できます。デフォルトでは10件の法案を返し、最大20件です
  • 結果は detailLevel: "summary" で、billId、出典情報、コレクションの続きに関する情報が含まれます。現在の会期に限定されるとは推定されません。参照フィルターの解決には ukparl_lookup_reference を使用してください

ukparl_get_bill ツール
  • billId は必須です。section はデフォルトで overview です。または stages、stage、publications、amendments、amendment、motions、motion を選択できます。コレクションはデフォルトで20件、最大50件を返します
  • ステージ、修正案、動議を選択するには、stages から取得した法案固有の billStageId が必要です。修正案または動議を個別に取得する場合は、親コレクションの itemId も必要です(修正案には amendmentId、動議には motion.id)。修正案と動議の一覧は要約形式です。個別のセレクターでは全文を取得します
  • エンティティが見つからない場合は、found: false と guidance が返されます。legislationHandoff.status は authoritative_link、not_enacted、unavailable のいずれかです。実際に提供された legislation.gov.uk のリンクがある場合に限り、法令への引き継ぎが確立されます

ukparl_search_members ツール
  • name、constituency(出典にある所在地テキスト)、partyId、house は任意です。currentOnly はデフォルトで false で、現職と元議員の両方が含まれます。デフォルトでは10行、最大20行を返します
  • asOf では、実在する YYYY-MM-DD 形式の日付を指定して、その日時点の議員構成を選択できます。この指定と併用できるのは name とページネーションのみです。返される最新のプロフィール項目は過去のスナップショットではありません
  • 要約形式の検索結果には、ukparl_get_member 用の memberId、source、page が含まれます。不明な出典フィールドは省略されるか、nullのままです

ukparl_get_member ツール
  • memberId は必須です。section は profile(デフォルト)、roles、committee_seats、contact、interests、voting のいずれかです。category を指定せずに役職を取得すると、利用可能な項目の概要が返されます。役職期間全体を取得するには、返されたカテゴリを選択してください
  • interests と voting では house が必須で、それ以外では省略します。ローカルの履歴はデフォルトで20行、最大50行です。投票では limit に関係なく、ネイティブの20行ページを使用します
  • found と guidance により、議員が見つからない場合と出典コレクションが利用できない場合を区別します。利益相反のツリーと委員会の関係には出典ポインターが保持されます。投票情報では記録されたロビーと計数係の情報が保持され、棄権や生涯にわたる参加を推定することはありません

ukparl_search_divisions ツール
  • house は必須で、commons または lords を指定します。mode は search(デフォルト)、detail、voters、party_totals のいずれかです。検索では query、memberId、範囲の始点と終点を含む startDate / endDate を指定できます。デフォルトでは5件の会期別表決を返し、最大10件です
  • 他のモードでは、同じ院の divisionId が必要です。投票者はデフォルトで20行、最大50行を返し、出典どおりの正確な party ラベルと lobby を使用します。Commonsでは aye、no、not_recorded、Lordsでは content、not_content です
  • 詳細情報では見出しの集計数と計数係の氏名が保持されます。partyTotals では、計数係以外の記載者と計数係を分けて数えます。not_recorded は出典の一覧を示すもので、棄権を意味するものではありません。議員検索には計数係としての参加も含まれます

ukparl_search_hansard ツール
  • 任意の query、memberId、house、両端を含む startDate/endDate、数値の debateSectionId を指定できます。既定では5件の発言を返し、上限は20件です。日付は YYYY-MM-DD 形式で、期間は推定されません
  • detailLevel: "complete" は、HTML を含む発言のソース全文を返します。summary は、ソースからプレビューのみが提供されたことを意味します。セクションによる絞り込みでは、討論の完全な記録であることは保証されません
  • coverage は、2004~2006年のウェブサイトに関する警告を含め、過去のデータの制約を示します。結果が空でも、討論がなかったことの証明にはなりません。タイムアウトした場合は日付範囲を狭めてください。アーカイブについては、topic: "coverage" を指定して ukparl_lookup_reference を使用してください

ukparl_search_questions ツール
  • mode: "search"(既定)は、query、memberId、house、最大20件の answeringBodyIds、answered、および両端を含む tabledFrom/tabledTo/answeredFrom/answeredTo の日付(YYYY-MM-DD)を受け付けます。既定ではプレビューを10件返し、上限は20件です
  • 検索対象には、すべての会期と取り下げられた質問が含まれます。answered を省略すると、どちらの状態も含まれます。mode: "detail" には、返された questionId のみを指定すると、質問と回答の完全な HTML、訂正、添付ファイルのメタデータが返されます。UIN は questionId ではありません
  • 結果では detailLevel: "summary" と "complete" が区別されます。詳細が見つからない場合は、found: false と guidance が返されます。添付ファイルはリンクとメタデータとして示され、ファイルはダウンロードされません

ukparl_get_committee ツール
  • mode: "search"(既定)は、query と house(commons、lords、joint)を受け付けます。既定値は10件、上限は20件です。detail、members、inquiries、publications には committeeId が必要です。ネストされたコレクションの既定値は20件、上限は50件です
  • inquiry には businessId が必要です。publication には publicationId が必要です。businessId は出版物の絞り込みにも使用できます。membership は members モードで all(既定)、current、former を選択します。inquiries/publications の query には2文字以上が必要です
  • inquiries には、isInquiry でラベル付けされたすべての委員会業務種別が含まれます。レコードには型付きエンティティと sourcePath の関連が保持されます。出版物では証拠/報告書のメタデータと文書リンクが返されますが、ダウンロードやテキスト抽出は行われません

特長

@cyanheads/mcp-ts-core を基盤としています。stdio および Streamable HTTP トランスポート、差し替え可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、構造化ログとオプションの OpenTelemetry トレースに対応しています。

英国議会に特化した機能:

  • 7 つの公式 Westminster API オリジンに、API キー不要の読み取り専用アクセスを提供します。権限委譲された議会は対象外です
  • 識別子の名前空間を分離し、ソースを明示的に選択します。現在の会期や日付範囲を推測することはありません
  • 関連するリクエスト間でオリジンごとのバックプレッシャーを共有し、再試行回数に上限を設け、呼び出しのタイムアウトを 45 秒に設定します
  • 過去のデータの対象範囲はソースごとに異なります。Hansard アーカイブの開始日は 1803 年 11 月 22 日、Spoken API の最小日付は不明で、自動的な過去アーカイブへのフォールバックは行いません

エージェントに適した出力:

  • 出典情報 — ソースレコードにはソース API、リクエスト URL、取得日時、ライセンスへのリンクが付属します。applied には適用された選択内容と上限が報告されます
  • レコード全体を対象とするページネーション — page.returned、hasMore、nextCursor は実際に出力されたレコードを示し、total は判明している場合のみ含まれます。カーソルを使用して続行する際は、同じフィルターと適用済みの上限を指定してください
  • 大きなレコードを損失なく取得 — delivery: "full" | "outline" | "fragment" により、完全なペイロードと contentPage による続きの内容を区別します。元のツール入力と各 contentCursor を再指定し、すべてのアウトライン項目と続きの内容を取得してください。連続するフラグメントを連結してから JSON として一度だけデコードし、collectionPage を進める前に選択したレコードを再構築してください
  • 明示的な復旧 — invalid_cursor の場合は選択を最初からやり直し、source_changed の場合は上流で改訂された後にコンテンツ取得をやり直します。検索プレビュー、見つからないレコード、利用できないコレクションは、それぞれ別の状態として扱われます

はじめに

以下を MCP クライアントの設定ファイルに追加します。

{
  "mcpServers": {
    "uk-parliament-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/uk-parliament-mcp-server@latest"],
      "env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
    }
  }
}

または、npx を使用する場合(Bun は不要です):

{
  "mcpServers": {
    "uk-parliament-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/uk-parliament-mcp-server@latest"],
      "env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
    }
  }
}

または、Docker を使用する場合:

{
  "mcpServers": {
    "uk-parliament-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/uk-parliament-mcp-server:latest"]
    }
  }
}

Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動します。

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
  • Bun v1.4.0 以上(または Node.js v24 以上)。
  • 公式 Parliament API へのインターネット接続。API キーは不要です。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/uk-parliament-mcp-server.git
  1. ディレクトリに移動します:
cd uk-parliament-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# edit .env for transport, logging, or authentication overrides as needed

設定

変数説明デフォルト
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーの初期ポート。起動ログには、ポートの競合時に再試行した後の割り当て済みポートが表示されます。3010
MCP_HTTP_HOSTHTTP のバインドアドレス。127.0.0.1
MCP_HTTP_ENDPOINT_PATHHTTP MCP エンドポイント。/mcp
MCP_SESSION_MODEHTTP セッションモード:stateless、stateful、または auto。stateless
MCP_AUTH_MODE認証:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(debug、info、warning、error など)。info
LOGS_DIRログファイルのディレクトリ(Node.js のみ)。<app-root>/logs
STORAGE_PROVIDER_TYPEストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv/r2/d1。in-memory
OTEL_ENABLEDOpenTelemetry を有効にします。false

共通フレームワークのオーバーライドについては、.env.example を参照してください。サーバー固有の環境変数はありません。

サーバーの実行

ローカル開発
  • 本番バージョンをビルドして実行します:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • チェックとテストを実行します:

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    

プロジェクトの構成

ディレクトリ目的
src/mcp-server/tools/definitions9 つのツール定義(*.tool.ts)。
src/services/parliament-http固定オリジンのトランスポート、出典情報、カーソル、損失のないコンテンツ配信。
src/services/bills法案の検索、審査記録、刊行物、参照用ディレクトリ。
src/services/members議員の検索、プロフィール、略歴、利害関係、投票履歴。
src/services/divisions庶民院/貴族院の採決メタデータと、記録された投票者の一覧。
src/services/hansard発言の検索と過去の収録範囲に関するメタデータ。
src/services/questions書面質問のプレビューと、質問・回答の完全な記録。
src/services/committees委員会の活動、委員構成、刊行物のメタデータ、型付きの関連情報。
tests/src/ の構成に対応する単体テストと統合テスト。

開発ガイド

開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は以下のとおりです。

  • ハンドラーで例外をスローし、フレームワークで捕捉します。ツールのロジックに try/catch を記述しないでください
  • ログには ctx.log、データの保存には ctx.state を使用します
  • 新しいツールとリソースは、src/index.ts の createApp() 配列に登録します
  • 外部 API 呼び出しはラップします。生データを検証し、ドメイン型に正規化してから、出力スキーマに従って返します。不足しているフィールドを捏造しないでください

コントリビューション

Issue を歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

このプロジェクトは Apache 2.0 License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。

該当する場合、本ソフトウェアには Open Parliament Licence v3.0 の下でライセンスされた議会情報が含まれます。個人データ、議会関連の標章、および第三者の権利は対象外です。対象外の資料を再利用する前に、原典の表示を保持し、権利を確認してください。このソフトウェアは独立したものであり、議会の承認を意味するものではありません。

コメント

MCP は初めてですか?

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

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