uk-legislation-mcp-server について
法律研究者や政策分析担当者向けの MCP サーバーです。legislation.gov.uk の英国法令を指定日時点で検索・閲覧し、引用の解決、改正の確認、公開変更の追跡ができます。
主な機能
- 01本文・題名・年による法令検索
- 02現行・制定時・指定日時点の閲覧
- 03引用と条項パスの解決
- 04改正とその影響の確認
- 05法令公開変更の追跡
活用シーン
- 01過去の日付時点の法令文言を確認
- 02引用から条項を特定
- 03改正と未適用の影響を確認
- 04期間内に公開された法令を監視
MCP 対応
法令検索・閲覧、引用解決、改正照会、変更追跡のツールと、オフラインの参照語彙ツールを提供します。STDIO と Streamable HTTP に対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://uk-legislation.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-uk-legislation https://uk-legislation.caseyjhand.com/mcp{"mcpServers":{"cyanheads-uk-legislation":{"type":"http","url":"https://uk-legislation.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-uk-legislation":{"type":"http","url":"https://uk-legislation.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-uk-legislation":{"type":"http","url":"https://uk-legislation.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-uk-legislation":{"serverUrl":"https://uk-legislation.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | integer | いいえ | ページ番号(1–10,000)。 |
| text | string | いいえ | 全文検索クエリ。AND/OR、"quoted phrases"、語幹処理に対応します。省略すると、タイトル検索または一覧表示になります。 |
| year | integer | いいえ | 暦年(王室紀年で番号付けされた 1963 年以前の法律にも適用)。year_from/year_to とは併用できません。 |
| as_of | string | いいえ | 時点 YYYY-MM-DD。この日に有効だった法令のみを対象とします(未制定または未施行の項目は除外)。省略すると現行法が対象です。extent とは併用できません。legislation.gov.uk では近年の多くの項目について条項単位の適用範囲が記録されていないため、結果が空でも、その地域に適用されるものがないとは限りません。 |
| limit | integer | いいえ | ページあたりの結果数(1–50)。 |
| title | string | いいえ | タイトルにすべて含まれる必要がある語句。既知の略称または引用は uklaw_lookup_citation で正確に検索できます。 |
| types | array | いいえ | 種類コード(ukpga、uksi、asp、eur、…)および/またはグループ(all、primary、secondary、eu-origin、draft)。"all" は草案を除く英国および EU 由来の法令を対象とし、他の値が指定されていても優先されます。コードの一覧は uklaw_list_reference topic types で確認できます。 |
| extent | array | いいえ | 地域的適用範囲:england、wales、scotland、ni。いずれかの条項がその地域に適用される場合、その項目は一致します。as_of とは併用できません。legislation.gov.uk では近年の多くの項目について条項単位の適用範囲が記録されていないため、結果が空でも、その地域に適用されるものがないとは限りません。 |
| year_to | integer | いいえ | 範囲の最も新しい暦年です。もう一方の端点は省略できます。 |
| year_from | integer | いいえ | 範囲の最も古い暦年です。もう一方の端点は省略できます。 |
| extent_match | enum | いいえ | extent と併用する場合のみ使用します。applicable:条項が指定範囲のいずれかに適用されること。exact:条項がその範囲のみに適用されること。applicable | exact |
詳細
@cyanheads/uk-legislation-mcp-server
MCP を通じて、任意の日付時点の英国法令を検索・閲覧し、引用を解決して、改正を一覧表示し、変更を追跡できます。STDIO または Streamable HTTP に対応しています。
公開ホストサーバー: https://uk-legislation.caseyjhand.com/mcp
概要
legislation.gov.uk の英国法令集です。英国、イングランド、スコットランド、ウェールズ、北アイルランドの一次法令、二次法令、および EU 由来の法令を対象としています。引用を解決し、本文またはタイトルで検索し、現行、制定時、または過去の日付時点の条項を閲覧して、改正を追跡できます。API キーは不要です。
ツール
| ツール | 説明 |
|---|---|
uklaw_search_legislation | 全文またはタイトルで検索するか、適用範囲と時点で絞り込んで種類と年別に一覧表示します |
uklaw_get_document | 項目または条項を、改正後、制定・制定時、または指定日の状態で、編集上のステータスと未適用の効力とともに閲覧します |
uklaw_get_amendments | 項目に記録された、または項目によって生じた効力(改正、廃止、施行、変更)を一覧表示します |
uklaw_track_changes | 最大 31 日間の期間を指定して、legislation.gov.uk の公開ログを閲覧します |
uklaw_lookup_citation | 引用、略称、または legislation.gov.uk の URI を、正規の項目と条項に解決します |
uklaw_list_reference | 種類コード、適用範囲、バージョンキーワード、注釈文字、引用形式などの用語をオフラインで解読します |
機能リファレンス
uklaw_search_legislation ツール
text(全文検索:AND/OR、「引用句」、語幹処理)および/またはtitle(すべての単語が含まれている必要があります)、またはどちらも指定せず、種類と年で一覧表示します。limitは1~50(デフォルトは20)で、pageを指定します- フィルター:
types(ukpga、uksi、eurなどのコード、またはall、primary、secondary、eu-origin、draftの各グループ。デフォルトはallで、草案は除外されます)、yearまたはyear_from/year_to(1267~2100)、extent(england、wales、scotland、ni)とextent_match(applicableまたはexact)、およびas_of(YYYY-MM-DD)。extentとas_ofは併用できません - 各結果には
uklaw_get_documentに渡すitemのパスが含まれます。has_moreは次のページがあることを示します。また、タイトル検索と一覧表示にはfacets(種類別の件数と直近25年間)が追加されます
uklaw_get_document ツール
itemは完全なパス(ukpga/2018/12、uksi/2019/419、eur/2016/679、勅令年号形式のukpga/Eliz2/3-4/19)または legislation.gov.uk の URI です。provisionはパス(section/45/2/f、schedule/2/paragraph/3)または短縮形(s. 45(2)(f)、Sch. 2 para. 3)です。versionはcurrent(デフォルト)、enacted(またはmade、adopted、created)、あるいはYYYY-MM-DD形式の日付です。languageはenまたはcyですkindはfull(annotations付きの Markdowntext)、outline(次に読み取る条項のパス。1回の呼び出しにつきoutline_offsetから100件)、またはpdf_only(links.pdf)です。20,000文字を超えるテキスト、または末端の条項が25を超える項目は、目次として返されます(下位の条項を持たない条項は最大40,000文字まで全文が返され、それを超える部分は省略されます。その際、全文へのリンクを含む通知が表示されます)。match_textには、指定した語句を含む項目内の条項が一覧表示されますeditorial(document_status、outstanding_effects、caveat)とunapplied_effects(最初の20件。項目または条項のレベル)は、改正後のテキストをどの程度まで参照できるかを示します。version.availableには、versionとして渡せるバージョンが一覧表示されます
uklaw_get_amendments ツール
itemは完全または部分的な項目です(uksi、ukpga/2018)。directionはaffected(デフォルト。対象項目に加えられた変更)またはaffecting(対象項目が加えた変更)です。フィルターはcounterpart(もう一方の項目。完全または部分的な指定)、status(all、unapplied、applied。デフォルトはall)、およびprovision(完全な項目が必要。1回の呼び出しにつき最大1,500件の効果をスキャン)ですlimitは1~100(デフォルトは20)で、next_cursorを使って続きの結果を取得します。各効果には、両側の項目とそれぞれの条項、in_forceの日付、applied/outstandingの状態、およびnotesが記載されます。totalは条項フィルター適用前の効果の件数を示し、scanはスキャン範囲を報告します- 1963年より前の法律は暦年で照会します(
ukpga/1925/20)。草案はインデックス化されていません。どちらもregnal_item/draft_itemとして失敗し、代わりに使用する経路が示されます
uklaw_track_changes ツール
- 必須の
start_dateと、デフォルトでstart_dateと同じになるend_dateを指定します。期間は最大31日です。フィルターはcontent_type(legislation、changes、draft、associated-documents)、direction(changesのみ)、category(primary、secondary、eu-origin。legislationまたはassociated-documentsのみ)、item、new_only、およびevent(published、withdrawn)です limitは1~80(デフォルトは40)で、next_cursorを使って続きの結果を取得します。modeはday_walk(新しい日付から順に、1回の呼び出しにつき上流へのリクエストを最大4回実行)またはitem_log(完全なitemパスを指定すると、その項目独自のログを読み取り、read_back_toを報告)ですchangesイベントには効果の詳細は含まれません。詳細は、その項目に対してuklaw_get_amendmentsを使用すると取得できます
uklaw_lookup_citation ツール
- 最大300文字の
citation:番号付き引用、短いタイトル、または legislation.gov.uk の URI。必要に応じて条項を付けられます(以下の形式を参照)。 - 正規の
itemパスと、引用された条項がある場合は、現行版と照合したprovision_foundを返します。該当なし、またはタイトルが曖昧な場合は、エラーではなくfound: falseとguidanceまたは最大20件のcandidatesを返します。
| 形式 | 例 | 解決先 |
|---|---|---|
| 章番号による英国の法律 | 2018 c. 12 | ukpga/2018/12。1963年より前は暦年を検索し、君主在位年による候補を返します。 |
| 北アイルランド議会法 | 2016 c. 5 (N.I.) | nia/2016/5 |
| 英国の制定法令 | S.I. 2019/419、SI 2019 No. 419、S.I. 2002/808 (W. 89) | uksi/2019/419。別系列の番号は無視され、ウェールズおよび北アイルランドの制定法令は wsi/nisi に正規化されます。 |
| スコットランドの制定法令 | S.S.I. 2020/123 | ssi/2020/123 |
| 北アイルランドの制定規則 | S.R. 2020/12、S.R. 2020 No. 12 | nisr/2020/12 |
| スコットランドおよびウェールズの法律・措置 | 2020 asp 13、asp 2020/13、2016 anaw 1、2021 asc 1、2010 nawm 1 | asp/2020/13、anaw/2016/1、asc/2021/1、mwa/2010/1 |
| EU に由来する法令 | Regulation (EU) 2016/679、Regulation (EC) No 1535/2003、Directive 95/46/EC、Decision (EU) 2019/419。発行機関を先頭に付けることもできます(Council Regulation (EC) No 1/2003)。 | eur/2016/679、eur/2003/1535(2015年より前は番号/年の順)、eudr/1995/46、eudn/2019/419 |
| 定義済みの名称 | UK GDPR | eur/2016/679 |
| legislation.gov.uk の URI | https://www.legislation.gov.uk/ukpga/2018/12/section/45 | 項目、条項、版に分割されます。 |
| 短縮タイトル | Data Protection Act 2018、Human Rights Act 1998 (c. 42) | タイトルと年で解決されます。タイトルで解決できない場合、末尾に章番号があれば、その番号で法律を特定します。 |
どの形式でも、末尾に条項(s. 45(2)(f)、section 45、reg. 5、art. 28(3)、r. 7、r. 3.4、Sch. 2 para. 3、Pt 3)を付けることができます。または、条項を先頭に置き、その後に「of」または「of the」を続けることもできます:section 45 of the Data Protection Act 2018。uklaw_list_reference のトピック citation_formats から同じ一覧を取得できます。
uklaw_list_reference ツール
topic:types、type_groups、extents、versions、document_status、annotation_types、effects、provision_paths、citation_formats、publication_log、coverage、またはattribution- オフラインで動作し、legislation.gov.uk へのリクエストは行いません。各エントリには
key、label、descriptionと、任意でdetailsが含まれます。
特長
@cyanheads/mcp-ts-core を基盤としており、stdio と Streamable HTTP トランスポート、切り替え可能な認証(none / jwt / oauth)、交換可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースを備えた構造化ログに対応しています。
legislation.gov.uk 固有の機能:
- legislation.gov.uk の API 用キー不要クライアント。文書には CLML XML、検索、effect、Publication Log には Atom フィードを使用します
- legislation.gov.uk の公正使用ポリシーに準拠しています。すべてのリクエストに識別用 User-Agent を付与し、プロセス全体で共有するキューによりリクエスト開始間隔を空けます(デフォルトは 1 秒間隔)。このサーバーに対して robots.txt でより長いクロール遅延が指定されている場合はそれを採用し、最大 60 秒まで適用します。また、45 秒の期限内における上流リクエストは、ツール呼び出しごとに最大 4 件です
- プロセス全体で共有するレスポンスキャッシュ。上流の
max-ageに基づいて有効期間を設定し(最大 1 時間)、If-Modified-Sinceで再検証します - 引用の略記(
s. 45(2)(f)、reg. 5、Sch. 2 para. 3)を条項パスに正規化します。1963 年以前の regnal パスとウェールズ語のテキスト(language: "cy")にも対応します - PDF のみの項目はリンクを返すだけで、取得はしません。これは legislation.gov.uk の robots.txt の要件です
エージェントに適した出力:
- 文書の読み取り結果には、編集ステータス(
editorial.document_status、caveat、outstanding_effects)と、その文書に影響するunapplied_effectsがテキストとともに必ず含まれます。これにより、改訂テキストに修正が反映されていない場合があることを呼び出し元が把握できます uklaw_lookup_citationは該当項目が見つからない場合、エラーではなくfound: falseとguidanceまたはcandidatesを返します- 各ツールの型付きエラー理由(
provision_not_found、version_not_found、regnal_itemなど)には、次に呼び出すべきツールを示す復旧ヒントが含まれます - 法令を返すレスポンスにはすべて、その内容に必要なライセンス条項を示す
attributionが含まれます(ライセンスを参照) - 上流のテキストはデータとして扱います。法令テキスト、注釈、effect の注記は
content[]内で引用ブロックにし、インライン値はエスケープし、URI はパーセントエンコードします
はじめに
公開ホストインスタンス
公開インスタンスは https://uk-legislation.caseyjhand.com/mcp で利用できます。インストールは不要です。Streamable HTTP を提供しており、クライアントごとに設定形式が異なります。
Claude Code の場合:
claude mcp add --transport http uk-legislation-mcp-server https://uk-legislation.caseyjhand.com/mcp
Cline の場合(cline_mcp_settings.json):
{
"mcpServers": {
"uk-legislation-mcp-server": {
"type": "streamableHttp",
"url": "https://uk-legislation.caseyjhand.com/mcp"
}
}
}
Cursor の場合(mcp.json):
{
"mcpServers": {
"uk-legislation-mcp-server": {
"url": "https://uk-legislation.caseyjhand.com/mcp"
}
}
}
Claude Desktop では、Settings → Connectors からリモートサーバーを追加します。
ホストインスタンスを呼び出すすべてのクライアントでリクエストキューを共有し、公正使用ポリシーに従って legislation.gov.uk へのリクエストを 1 秒に 1 件のペースで送信します。継続的に使用する場合は、ご自身のインスタンスを実行してください。
セルフホスト/ローカル
MCP クライアントの設定ファイルに、次の内容を追加します。
{
"mcpServers": {
"uk-legislation-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/uk-legislation-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
または npx を使用します(Bun は不要です)。
{
"mcpServers": {
"uk-legislation-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/uk-legislation-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
または Docker を使用します。
{
"mcpServers": {
"uk-legislation-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/uk-legislation-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 以降)。
- API キーやアカウントは不要です。legislation.gov.uk の公正使用ポリシーでは、ブラウザー以外のクライアントに対し、クライアントの識別を求めています。共有環境を実行する場合は、
UK_LEGISLATION_CONTACTにメールアドレスまたは URL を設定してください。
インストール
- リポジトリをクローンします:
git clone https://github.com/cyanheads/uk-legislation-mcp-server.git
- ディレクトリに移動します:
cd uk-legislation-mcp-server
- 依存関係をインストールします:
bun install
- 環境を設定します:
cp .env.example .env
# edit .env and set UK_LEGISLATION_CONTACT as needed
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
UK_LEGISLATION_CONTACT | legislation.gov.uk が運用者に連絡できるよう、User-Agent に追加するメールアドレスまたは URL です。共有デプロイでは設定してください。 | なし |
UK_LEGISLATION_MIN_REQUEST_GAP_MS | プロセス全体で、上流へのリクエスト開始間に設ける最小間隔(ミリ秒)です。少なくとも 250 に設定してください。このサーバーの User-Agent に対する robots.txt のクロール遅延がこれより長い場合は、その値が適用されます。同じ User-Agent を共有するレプリカは公平利用の上限を分け合うため、レプリカ数 × 250 ミリ秒以上に設定してください。 | 1000 |
UK_LEGISLATION_CACHE_MAX_MB | レスポンスキャッシュの最大サイズ(MB)です(8~1024)。 | 64 |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポートです。 | 3010 |
MCP_HTTP_HOST | HTTP サーバーのホストです。 | 127.0.0.1 |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。.env.example と Docker イメージでは stateless に設定されています。 | auto |
MCP_AUTH_MODE | 認証:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(debug、info、warning、error など)です。 | info |
LOGS_DIR | ログファイルの保存ディレクトリです(Node.js のみ)。 | <app-root>/logs |
OTEL_ENABLED | OpenTelemetry を有効にします。 | 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/index.ts | createApp() のエントリーポイントです。6 つのツールを登録し、setup() で robots.txt を読み込み、ペーサー、レスポンスキャッシュ、クライアント、サービスを構築します。 |
src/config | サーバー固有の環境変数を Zod で解析・検証します。 |
src/mcp-server/tools/definitions | ツール定義(*.tool.ts)と、共有の入出力スキーマおよび Markdown レンダリングヘルパーです。 |
src/services/legislation | legislation.gov.uk のサービスレイヤーです。HTTP クライアント、レスポンスキャッシュ、引用および条項パスの解析、CLML と Atom のパーサー、参照データ、帰属表示を含みます。 |
tests/ | src/ に対応する単体テストです。記録済みの CLML および Atom フィクスチャを使用して実行します。 |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックでは
try/catchを使わないでください。 - ログには
ctx.logを使用し、想定される失敗には宣言済みの理由とともにctx.failを使用してください。 - 新しいツールは
src/mcp-server/tools/definitions/index.tsのallToolDefinitionsに登録してください。 - 外部 API 呼び出しはラップしてください。生データを検証し、ドメイン型に正規化してから出力スキーマを返します。不足しているフィールドを捏造しないでください。
貢献
問題の報告を歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
ライセンス
このプロジェクトは Apache 2.0 License のもとでライセンスされています。詳細は LICENSE ファイルを参照してください。
legislation.gov.uk の法令コンテンツは © Crown and database right であり、Open Government Licence v3.0 のもとでライセンスされています。EU 由来の項目には、欧州連合のクレジット(© European Union, 1998-2020。Commission Decision 2011/833/EU のもとで再利用)も記載されています。また、Westlaw UK が legislation.gov.uk に提供した 1987 年以前の法定文書には、Westlaw のクレジットが記載されています。法令を返す各ツールは、そのコンテンツに適用される行を attribution に記載します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。