mcpField
U
uk-legislation-mcp-server

uk-legislation-mcp-server

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

uk-legislation-mcp-server について

法律研究者や政策分析担当者向けの MCP サーバーです。legislation.gov.uk の英国法令を指定日時点で検索・閲覧し、引用の解決、改正の確認、公開変更の追跡ができます。

主な機能

  1. 01本文・題名・年による法令検索
  2. 02現行・制定時・指定日時点の閲覧
  3. 03引用と条項パスの解決
  4. 04改正とその影響の確認
  5. 05法令公開変更の追跡

活用シーン

  1. 01過去の日付時点の法令文言を確認
  2. 02引用から条項を特定
  3. 03改正と未適用の影響を確認
  4. 04期間内に公開された法令を監視

MCP 対応

法令検索・閲覧、引用解決、改正照会、変更追跡のツールと、オフラインの参照語彙ツールを提供します。STDIO と Streamable HTTP に対応します。

設定

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

エンドポイントhttps://uk-legislation.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-legislation-mcp-server0.1.3

ツール

6
パラメーター型必須説明
pageintegerいいえページ番号(1–10,000)。
textstringいいえ全文検索クエリ。AND/OR、"quoted phrases"、語幹処理に対応します。省略すると、タイトル検索または一覧表示になります。
yearintegerいいえ暦年(王室紀年で番号付けされた 1963 年以前の法律にも適用)。year_from/year_to とは併用できません。
as_ofstringいいえ時点 YYYY-MM-DD。この日に有効だった法令のみを対象とします(未制定または未施行の項目は除外)。省略すると現行法が対象です。extent とは併用できません。legislation.gov.uk では近年の多くの項目について条項単位の適用範囲が記録されていないため、結果が空でも、その地域に適用されるものがないとは限りません。
limitintegerいいえページあたりの結果数(1–50)。
titlestringいいえタイトルにすべて含まれる必要がある語句。既知の略称または引用は uklaw_lookup_citation で正確に検索できます。
typesarrayいいえ種類コード(ukpga、uksi、asp、eur、…)および/またはグループ(all、primary、secondary、eu-origin、draft)。"all" は草案を除く英国および EU 由来の法令を対象とし、他の値が指定されていても優先されます。コードの一覧は uklaw_list_reference topic types で確認できます。
extentarrayいいえ地域的適用範囲:england、wales、scotland、ni。いずれかの条項がその地域に適用される場合、その項目は一致します。as_of とは併用できません。legislation.gov.uk では近年の多くの項目について条項単位の適用範囲が記録されていないため、結果が空でも、その地域に適用されるものがないとは限りません。
year_tointegerいいえ範囲の最も新しい暦年です。もう一方の端点は省略できます。
year_fromintegerいいえ範囲の最も古い暦年です。もう一方の端点は省略できます。
extent_matchenumいいえextent と併用する場合のみ使用します。applicable:条項が指定範囲のいずれかに適用されること。exact:条項がその範囲のみに適用されること。applicable | exact

詳細

@cyanheads/uk-legislation-mcp-server

MCP を通じて、任意の日付時点の英国法令を検索・閲覧し、引用を解決して、改正を一覧表示し、変更を追跡できます。STDIO または Streamable HTTP に対応しています。

6 個のツール

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

公開ホストサーバー: 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 付きの Markdown text)、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. 12ukpga/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/123ssi/2020/123
北アイルランドの制定規則S.R. 2020/12、S.R. 2020 No. 12nisr/2020/12
スコットランドおよびウェールズの法律・措置2020 asp 13、asp 2020/13、2016 anaw 1、2021 asc 1、2010 nawm 1asp/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 GDPReur/2016/679
legislation.gov.uk の URIhttps://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 を設定してください。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/uk-legislation-mcp-server.git
  1. ディレクトリに移動します:
cd uk-legislation-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# edit .env and set UK_LEGISLATION_CONTACT as needed

設定

変数説明デフォルト
UK_LEGISLATION_CONTACTlegislation.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_PORTHTTP サーバーのポートです。3010
MCP_HTTP_HOSTHTTP サーバーのホストです。127.0.0.1
MCP_SESSION_MODEHTTP セッションモード: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_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/index.tscreateApp() のエントリーポイントです。6 つのツールを登録し、setup() で robots.txt を読み込み、ペーサー、レスポンスキャッシュ、クライアント、サービスを構築します。
src/configサーバー固有の環境変数を Zod で解析・検証します。
src/mcp-server/tools/definitionsツール定義(*.tool.ts)と、共有の入出力スキーマおよび Markdown レンダリングヘルパーです。
src/services/legislationlegislation.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 に記載します。

コメント

MCP は初めてですか?

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

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