Fedlex Connector について
Fedlex Connectorは、法律調査や分析向けのMCPサーバーで、連邦法令集に収録されたスイス連邦法にアクセスできます。SPARQLによるメタデータ検索と公式HTML本文の取得を組み合わせ、ドイツ語、フランス語、イタリア語に対応します。
主な機能
- 01現行法令のタイトル検索
- 02条文と法令全文の取得
- 03条文の基準日指定
- 04改正履歴の一覧
- 05長文のページ分割
活用シーン
- 01タイトルから法令のRS番号を特定
- 02指定言語で条文を確認
- 03法令の最近の改正を確認
MCP 対応
法令検索、条文や法令全文の取得、改正一覧のツールをMCPクライアントに提供します。メタデータはFedlex SPARQLから、本文はHTMLファイルストアから取得します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.fedlex-connector.ch/claude mcp add --transport http ch-fedlex-connector-fedlex-connector https://mcp.fedlex-connector.ch/{"mcpServers":{"ch-fedlex-connector-fedlex-connector":{"type":"http","url":"https://mcp.fedlex-connector.ch/"}}}Cursor で開く{"servers":{"ch-fedlex-connector-fedlex-connector":{"type":"http","url":"https://mcp.fedlex-connector.ch/"}}}VS Code で開く{"mcpServers":{"ch-fedlex-connector-fedlex-connector":{"type":"http","url":"https://mcp.fedlex-connector.ch/"}}}{"mcpServers":{"ch-fedlex-connector-fedlex-connector":{"serverUrl":"https://mcp.fedlex-connector.ch/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 法令タイトルとの照合に使用するキーワード(例:'code civil'、'protection des données') |
| language | enum | いいえ | 結果の言語(デフォルト:de)fr | de | it |
詳細
Fedlex Connector
Claude からスイス連邦法にアクセス
Model Context Protocol(MCP)を基盤として構築されたコネクターです。Claude が Fedlex に掲載されたスイス連邦法の公式テキストに直接アクセスできます。分類法令集(SR、RS)に収録されたすべての法律を、ドイツ語、フランス語、イタリア語で利用できます。
開発の背景
スイス連邦法は Fedlex でのみ公開されていますが、そのフロントエンドは JavaScript のシングルページアプリケーションであるため、Claude に組み込まれたウェブツールでは表示できません。一方、Fedlex には JavaScript を使わずに利用できる、機械可読なインターフェースが 2 つあります。
- メタデータのクエリに使える SPARQL エンドポイント(
fedlex.data.admin.ch/sparqlendpoint) - 統合された法令を配信する 静的 HTML ファイルストア(
fedlex.admin.ch/filestore/...)
この MCP サーバーが両者の間をつなぎます。メタデータ(RS 番号、統合日、改正履歴)を SPARQL でクエリし、HTML を取得して解析して実際の法令テキストを抽出し、構造化された形式で Claude に返します。独自のデータベースもキャッシュも使わず、Fedlex のオープンデータ基盤につなぐステートレスなブリッジです。
セットアップ
このサーバーは、ローカルでの利用(Claude Code、Claude Desktop)向けの stdio と、リモートでの利用(claude.ai)向けの HTTP の 2 つのトランスポートに対応しています。どちらか一方、または両方を利用できます。
サーバーは次の場所でホストされています。
https://mcp.fedlex-connector.ch
claude.ai / Claude Desktop:
- claude.ai にアクセスします
- サイドバーの Customize(Anpassen / Personnaliser / Personalizza)をクリックします
- Connectors をクリックします
- + → Add connector をクリックします
- Add custom connector をクリックし、URL
https://mcp.fedlex-connector.chを貼り付けます
「Fedlex Connector」という名前を付けることをおすすめします。
Claude Code:
claude mcp add --transport http fedlex https://mcp.fedlex-connector.ch
接続すると、Claude は Fedlex からテキストを直接取得して、「スイス民法典第 1 条には何と書かれていますか?」 といった質問に回答できます。
独自のインスタンスをデプロイする
このサーバーには、Docker コンテナに対応する任意のクラウドプラットフォーム(Railway、Fly.io、Render など)にデプロイするための Dockerfile が含まれています。PORT 環境変数を設定すると、サーバーは HTTP モードで起動します。PORT を設定しない場合は、ローカル利用向けの stdio モードで起動します。
MCP エンドポイントは https://your-domain になります。次のコマンドで確認してください。
curl https://your-domain/health
ツール
search_by_title
分類法令集(RS/SR)からスイス連邦法のタイトルを検索します。現在有効な法律のみを返します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
query | string | はい | 法律のタイトルに一致させるキーワード |
language | fr de it | いいえ | 結果の言語(デフォルト:de) |
例: データ保護法の RS 番号を検索します。
search_by_title(query="protection des données")
→ RS 235.1 — Loi fédérale sur la protection des données (LPD)
get_article
特定の条文の公式な統合テキストを取得します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
rs_number | string | はい | RS 番号(例:CC は "210"、CO は "220") |
article | string | はい | 条文番号(例:"3"、"28a"、"260bis") |
language | fr de it | いいえ | 言語(デフォルト:de) |
date | string | いいえ | 統合日(YYYY-MM-DD)。デフォルトは最新の日付です |
例: ドイツ語で CC 第 1 条を取得します。
get_article(rs_number="210", article="1", language="de")
→ Art. 1: Das Gesetz findet auf alle Rechtsfragen Anwendung...
get_law_text
法律または特定のタイトル/章の全文を取得します。これは、原典から法律を読み、分析するための主要なツールです。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
rs_number | string | はい | RS 番号 |
section | string | いいえ | タイトル/章で絞り込みます(例:"Titre huitième") |
language | fr de it | いいえ | 言語(デフォルト:de) |
page | number | いいえ | ページ分割された結果のページ(デフォルト:1) |
法律の分量が多い場合は、自動的にページ分割されます(条文の境界で分割)。各レスポンスには総ページ数が含まれます。
例: スイスの賃貸借法(CO、第8編)を取得します。
get_law_text(rs_number="220", section="Titre huitième", language="fr")
→ [Full text of tenancy provisions, art. 253 onwards]
list_amendments
指定した法律の最近の改正(統合版)を一覧表示します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
rs_number | string | はい | RS 番号 |
since | string | いいえ | 開始日、YYYY-MM-DD(デフォルト:1年前) |
language | fr de it | いいえ | タイトルの言語(デフォルト:de) |
例: CO の最近の変更を確認します。
list_amendments(rs_number="220", since="2024-01-01")
→ 2026-01-01 — Version in force from 2026-01-01 (current)
2025-10-01 — Version in force from 2025-10-01 to 2025-12-31
...
仕組み
Claude ──MCP──> Fedlex Connector ──SPARQL──> fedlex.data.admin.ch
──HTTP───> fedlex.admin.ch/filestore/...
メタデータの経路(SPARQL): サーバーは Fedlex の SPARQL エンドポイント(JOLux オントロジー)にクエリを送信し、RS 番号を内部 URI に対応付け、最新の統合日を特定し、HTML ファイルの URL を検出して、改正履歴を一覧表示します。
テキストの経路(HTML ファイルストア): 取得する HTML ファイルが特定されると、サーバーは静的ファイルストアからファイルを取得し、Cheerio で DOM を解析して、指定された条文、節、または全文を抽出します。CO のように1,100条を超える大規模な法律は複数の HTML ファイルに分割されており、サーバーがそれらを自動的に検出して結合します。
一般的なリクエストのデータフロー:
- Claude が
get_article(rs_number="210", article="3")を呼び出します - サーバーが SPARQL にクエリを送信します:RS 210 → ConsolidationAbstract URI
- サーバーが SPARQL にクエリを送信し、その URI の最新の統合日を取得します
- サーバーが SPARQL にクエリを送信し、その統合版の HTML ファイルストア URL を取得します
- サーバーが HTML を取得して解析し、第3条を抽出します
- サーバーが統合日と法的な注意事項を添えて、条文のテキストを Claude に返します
すべてのレスポンスには、法的な効力を持つのは連邦官房が公開する公式法令集(RO/AS)のみであることを示すフッターが含まれます。
開発
プロジェクト構成
src/
index.ts # Entry point: picks stdio or HTTP transport based on PORT env var
server.ts # MCP server factory: tool definitions and request handlers
types.ts # TypeScript interfaces, error types, constants
sparql.ts # SPARQL endpoint queries (metadata, RS resolution, amendments)
filestore.ts # HTML fetching, parsing, article/section extraction, pagination
build/ # Compiled JavaScript (generated by tsc)
Dockerfile # Container build for cloud deployment
スクリプト
| コマンド | 説明 |
|---|---|
npm run build | TypeScript を ./build にコンパイルします |
npm start | MCP サーバーを実行します(stdio モード) |
npm run start:http | HTTP モードでローカル実行します(ポート3000) |
npm run dev | 監視モードで実行します(変更時に自動再コンパイル) |
依存関係
| パッケージ | 用途 |
|---|---|
@modelcontextprotocol/sdk | MCP サーバー SDK(ツールの登録、stdio トランスポート) |
cheerio | 法令テキスト抽出のための HTML 解析 |
エラーコード
サーバーは、コードと実行可能な対処方法を含む構造化エラーを返します。
| コード | 意味 |
|---|---|
RS_NOT_FOUND | SPARQL グラフに RS 番号が見つかりません |
ARTICLE_NOT_FOUND | 法令内に条文が存在しません(近接する ID の一覧を含みます) |
SPARQL_UNAVAILABLE | SPARQL エンドポイントが停止しているか、エラーを返しました |
FILESTORE_ERROR | HTML ファイルが見つからないか、取得に失敗しました |
INVALID_INPUT | パラメーターが不足しているか、形式が正しくありません |
PARSE_ERROR | HTML の解析に失敗しました |
既知の制限事項
-
法令全体の過去のバージョン:
get_law_textは現行法令全体のみを取得し、過去のバージョンは返しません。過去の条文を取得するには、dateパラメーターに対応したget_articleを使用してください。 -
HTML の提供状況: Fedlex では通常、2021 年以降の統合版のみ HTML が提供されています。それ以前のバージョンは、Fedlex プラットフォームで PDF または DOC としてのみ利用できます。指定した日付の HTML が利用できない場合、サーバーは案内を含む明確なエラーを返します。
-
レート制限: SPARQL エンドポイントとファイルストアは、スイス政府が運営する公開サービスです。責任あるクライアントとして利用するため、サーバーはエンドポイントごとに毎秒 10 件までにリクエストを制限します。
-
セクションのフィルタリング:
get_law_textのsectionパラメーターは見出しテキストとの照合を使用します。標準的なセクション名には適切に機能しますが、通常と異なる見出しには一致しない場合があります。フィルタリングに失敗すると、注記とともに法令全体のテキストが返されます。 -
対応言語: フランス語(FR)、ドイツ語(DE)、イタリア語(IT)に対応しています。ロマンシュ語には対応していません。
-
対象範囲: 対象は、連邦法の分類集に収録されたものに限ります。州法、連邦官報、裁判所の判決は対象外です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。