Swiss Grounding について
Swiss Grounding は、スイスの連邦、州、市町村の公式情報に基づいて回答する MCP サーバーです。行政手続き、法律、交通などを扱うツールを備え、出典を示しながら5言語で情報を提供します。
主な機能
- 01公的機関の出典付き回答
- 02連邦、州、市町村の情報を網羅
- 03検索とページのライブ読み取り
- 04法律、交通、行政サービスのツール
- 055言語に対応
活用シーン
- 01スイスの手続き、規則、料金の確認
- 02現行連邦法や公共交通情報の検索
- 03地域の休日、保険料、廃棄物収集日の確認
- 04担当機関の情報に基づく回答の取得
MCP 対応
公式情報検索、ページ読み取り、分野別検索など13個の読み取り専用ツールを提供します。MCP クライアントは stdio または Streamable HTTP で接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcpclaude mcp add --transport http soheil1lotfi-swiss-grounding https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp{"mcpServers":{"soheil1lotfi-swiss-grounding":{"type":"http","url":"https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp"}}}Cursor で開く{"servers":{"soheil1lotfi-swiss-grounding":{"type":"http","url":"https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp"}}}VS Code で開く{"mcpServers":{"soheil1lotfi-swiss-grounding":{"type":"http","url":"https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp"}}}{"mcpServers":{"soheil1lotfi-swiss-grounding":{"serverUrl":"https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ghcr.io/gastaan/swiss-grounding-mcp:0.1.1stdioツール
詳細
Swiss Grounding MCP
スイスについて、出典付きで回答します。
AI アシスタントに、連邦・州・市町村の公式情報に基づいた回答を提供する MCP サーバーです。
ドイツ語、フランス語、イタリア語、ロマンシュ語、英語に対応し、すべての回答で担当機関を明記します。
ライブで試す
|
スキャンしてスマートフォンで開く |
Google Cloud Run のチューリッヒリージョン( ライブサーバー: swiss-grounding-mcp-542630986415.europe-west6.run.app |
以下のように1行でアシスタントに追加できます。例:Claude Code(その他のクライアント):
claude mcp add --transport http swiss https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp
アイドル時にはゼロまでスケールするため、休止後の最初のリクエストでインスタンスが起動します(約2秒後。ハイブリッド検索はさらに約10秒後に利用可能になり、それまではキーワード検索で回答します)。クライアントごとにレート制限を適用し、ブラウザーのオリジンからのリクエストを拒否します。また、6時間ごとにチェックしています。ホストされたインスタンスではこのリポジトリのコードが実行されており、ローカルでも実行できます。
仕組み
この例は、ライブサーバーが回答したチャレンジブリーフの質問例3です。
スイスについて汎用アシスタントに質問すると、誤った州を対象にしたり、古いページや隣国の情報をもとに回答したりすることがあります。Swiss Grounding MCP は、代わりに所管機関自身のデータを提供します。
- ツール呼び出しは1回。 アシスタントは13個の読み取り専用ツールから1つを選択します。場所は、人々が実際に入力する表記で利用できます。 Genf, Ginevra, Genève、Schuls → Scuol、8003、Bahnhofstrasse 1, Zürich。
- 適切な所管機関。 回答は、構築済みインデックスに収録された10,630件の公式ページ(キーワード検索+多言語セマンティック検索)、連邦のライブ API、市町村のオープンデータを通じて、所管するレベル(連邦機関、州、市町村)から取得されます。
- 配慮があり、障害に強い。 robots.txt と利用規約を標準で遵守し、リクエストの間隔を調整してキャッシュします。情報源が停止している場合は、日付付きのコピーを提供するか、情報源を明示します。
- 出典付きの回答は1つ。 すべてのツールは、引用文を一字一句そのまま含む共通の契約と、アシスタントが次に何をすべきかを示す5つのステータスのいずれかを返します。
ok | needs_context | not_covered | not_found | source_error |
|---|---|---|---|---|
| 出典を添えて回答します | 具体的な質問を1つ返します | スイス国外または対象範囲外であると伝えます | 何も見つからなかったと伝え、決して推測しません | 停止している情報源を明示します |
対応範囲
宣言された対応範囲です。サーバーが何について、どの地域を対象に、どの機関の情報に基づいて回答するかを示します。アシスタントも swiss_coverage ツールで確認できます。
| トピックとツール | 地域 | 情報源(管轄機関) | 情報の鮮度 |
|---|---|---|---|
手続き、規則、手数料、期限 — 許可・移住、転居・住民登録、税金、社会保険(AHV/IV)、失業、運転免許・車両、税関・小包、学校、住居、投票、身分事項などsearch_official_info read_official_page | 連邦(ドイツ語/フランス語/イタリア語/ロマンシュ語/英語の ch.ch、連邦機関、AHV/IV、arbeit.swiss)、23 州のポータル(制限については下記参照)、ルツェルン、ルガーノ、ヴィンタートゥール、ビール/ビエンヌ、ザンクト・ガレン、ベルン、ジュネーブ、ローザンヌ、トゥーンの市のページ | 公式ページ 10,630 件/記述 46,952 件の全文インデックス、および任意の公式ページのライブ読み取り | インデックスの構築日:2026-09-25。毎週更新。read_official_page はライブテキストを取得 |
連邦法 — あらゆる法律および条文、現行の統合版swiss_federal_law | 連邦 | Fedlex(連邦官房) | ライブ。今日施行中のバージョン |
義務的な健康保険料 — 自治体、年齢、免責額、モデルごとの最安プランhealth_insurance_premiums | 全 2,110 自治体(保険料地域) | FOPH の保険料オープンデータ(priminfo.admin.ch と同じデータ) | 2026 年の保険料。FOPH が 2027 年分を公開した時点(9 月末)で追加 |
学校休業日と祝日swiss_holidays | 全 26 州。公開されている場合は自治体レベル(例:シュクオル、チューリッヒ) | OpenHolidays(公式一覧の集約)、EDK の一覧、自治体のウェブサイト | 2025~2027 年 |
ごみ収集日waste_collection | チューリッヒ市(郵便番号別)、バーゼル/リーエン/ベッティンゲン(住所別)、ザンクト・ガレン(通り別)。収集区域別:ヴィンタートゥール、ウスター、ヴェッツィコン、デューベンドルフ、ホルゲン、ヴェーデンスヴィル、アドリスヴィル、タールヴィル、その他 12 地域 | 自治体のオープンデータ(OpenERZ 経由の ERZ Zürich、data.bs.ch、daten.stadt.sg.ch) | ライブ、今後 120 日間 |
公共交通機関 — 経路と発車案内public_transport | スイス全土 | 公式時刻表(transport.opendata.ch 経由の opentransportdata.swiss) | ライブ |
連邦の国民投票 — 今後の投票案件、結果(全国および州別)federal_votes | 連邦 | FSO の投票日オープンデータ、連邦官房 | ライブ |
住宅ローン参照金利(家賃)および SNB 為替レートswiss_rates | 連邦 | BWO、スイス国立銀行 | ライブ(6 時間キャッシュ) |
企業登録 — UID、法的所在地、商業登記、VAT 登録状況company_register | スイス全土 | 連邦 UID 登録簿(FSO) | ライブ |
場所の情報 — 自治体、州、BFS 番号、郵便番号、人口、公式ウェブサイトswiss_place_info | 全 2,110 自治体、全 26 州 | BFS 登録簿および STATPOP、swisstopo、Wikidata(ウェブサイト) | 人口:2025 年。登録簿:2026-09-25 |
現在の気象観測値current_weather | 最寄りの MeteoSwiss 自動観測所 | MeteoSwiss オープンデータ | ライブ(10 分ごとの値) |
対象外と既知の制限事項
- スイス国外の内容。たとえば、コンスタンツのドイツの Rundfunkbeitrag については、サーバーがその旨を返します。
- GR、BL、SH の各州は自動クライアントをブロックするか、テキストを提供しないため、州のページはインデックスに含まれません(ch.ch と連邦政府のページは引き続き対象です。
read_official_pageはブロックされたことを正直に報告します)。VS(7 ページ)、TI(45 ページ)、TG(52 ページ)は一部のみインデックス化されています。 - 自治体のウェブページは、上記の 9 都市についてインデックス化されています(各 120~250 ページ、ローザンヌは 66 ページ、トゥーンは 32 ページ)。チューリッヒは数ページのみで、ベリンツォーナとフリブールはまだ対象外です(次回の更新では、フリブールの独自ドメイン ville-fribourg.ch をクロールします)。その他の自治体については、サーバーが公式ウェブサイトを返し、指定されたページをその場で読み取ることができます。
- 廃棄物収集カレンダーは、自治体がオープンデータを公開している場合にのみ利用できます。それ以外の場合、サーバーはその旨を伝え、自治体へのリンクを示します。祝日、保険料、地域の基本情報はすべての自治体を対象としています。
- 州法の本文、個別の税額計算、天気予報は提供していません。
- 学校の休暇は、公式リストを集約する OpenHolidays から取得しています。インデックスに管轄当局独自のカレンダー(例:ge.ch、bern.ch、シュクオルの学校)がある場合は、そのページを最初に引用し、EDK のリストと自治体のサイトも併記します。州が複数の学校種別の期間を公開している場合(ベルン州のドイツ語圏およびフランス語圏の学校など)は、期間に学校種別のラベルを付けます。
- ローザンヌへの到着時の住民登録については、弱点があります。市の住民登録窓口のページがインデックスに含まれていません。
- 言語をまたぐ質問:質問の言語が地域のページの言語と異なる場合、最初にページではなく言語に関するヒントが返され、アシスタントは再検索する必要があります。このような質問(ベルンについてフランス語で質問)のエンドツーエンド実行では、Sonnet はヒントに従ってベルンのページを参照して回答しました。Haiku は 4 回中 1 回で同様に対応しました。
- 検索はデフォルトでキーワードベースです。オプションの
semanticエクストラを使うとハイブリッド検索になり、表現が異なるページや別の言語で書かれたページも見つけられますが、それでも見落としがあります(測定結果)。ロマンシュ語は埋め込みモデルの対象外です。
結果
このサーバーを使う場合と使わない場合。 同じ 28 個の質問(公開済みのサンプル 5 件、独自作成の 12 件、主催者の練習用ケース 11 件)を、使用ツールだけが異なる 3 通りの方法で Claude Code に Sonnet とともに質問しました。
| モード | 17 件の質問 | 練習用ケース | スイスの公的機関へのリンク |
|---|---|---|---|
| このサーバーを使用 | 16/17 | 11/11 | 34 件中 94% |
| ウェブ検索、サーバーなし | 11/17 | 7/11 | 67 件中 72% |
| モデルの知識のみ | 6/17 | 3/11 | 28 件の回答中 1 件 |
サーバーを使うと、回答に必要な呼び出し回数と時間もウェブ検索の半分になります(1 問あたり 1.2 回対 2.4 回、14 秒対 28 秒)。ウェブ検索では正しい数値にたどり着くこともよくありますが、比較サイト、ニュース、観光情報のページが混在し、公式の数値が丸められることもあります。ツールがない場合、モデルはほとんどの場合、回答を控えるか、古い知識に基づいて回答します。
評価設定全体の結果: 2 つの MCP クライアント × 2 つの LLM を、公開済みのサンプル質問 5 件と独自作成の質問 11 件(de/fr/it/rm/en、聞き返し、対象外、未対応のケースを含む)で評価。実行日:2026-09-25
| クライアント + LLM | 公開済みのサンプル | 全 16 問 | ツール呼び出しの平均回数 |
|---|---|---|---|
| Claude Code + Sonnet | 5/5 | 15/16 | 1.0 |
| Claude Code + Haiku | 5/5 | 13/16 | 0.9 |
| OpenCode + gpt-5.4-mini | 5/5 | 15/16 | 1.4 |
| OpenCode + gpt-4.1-mini | 5/5 | 14/16 | 1.0 |
主催者の練習用パックでは、Sonnet は 11/11、Haiku は 10/11 でした。ハイブリッド検索では、ラベル付きの質問 38 件のうち 25 件について関連トピックの公式ページが見つかります(キーワード検索のみでは 19 件)。該当ページがない 5 件について、誤ったページを提示することはありません。すべての失敗例はdocs/evaluation.mdに記載されています。
自分で実行する
uv が必要です(Python 3.13 がインストールされます)。どのソースでも、API キーや認証情報は必要ありません。
git clone https://github.com/Gastaan/swiss-grounding-mcp && cd swiss-grounding-mcp
uv sync --extra semantic # dependencies, with hybrid search
uv run --extra semantic swiss-grounding-mcp # stdio (for local MCP clients)
uv run --extra semantic swiss-grounding-mcp --transport http --port 8000 # HTTP: http://localhost:8000/mcp
curl localhost:8000/health # "search": "hybrid (…)"
事前構築済みのデータ(自治体登録簿、医療保険料、検索インデックス、パッセージベクトル)はリポジトリに含まれており、scripts/ のスクリプトで構築され、毎週更新されます(更新方法)。初回起動時にインデックスを展開し(約 1 秒)、小さな埋め込みモデルを一度だけダウンロードします(約 240 MB、バックグラウンドで実行され、準備が整うまではキーワード検索が使われます)。ハイブリッド検索なしで軽量にインストールするには、コマンドとクライアント設定から --extra semantic を削除してください(変更点)。
Docker: 公開済みイメージ(約 1.4 GB、ハイブリッド検索とそのモデルを含む)は、非特権ユーザーで実行され、実行時にダウンロードを行いません。
docker run -p 8000:8000 ghcr.io/gastaan/swiss-grounding-mcp # HTTP: http://localhost:8000/mcp
docker run -i --rm ghcr.io/gastaan/swiss-grounding-mcp --transport stdio # for a client that starts the server
または、docker build -t swiss-grounding-mcp . でビルドします。信頼できるネットワークの外部からポートにアクセスできる場合は、-e SGM_AUTH_TOKEN=<secret> を追加してください(HTTP セキュリティ)。クローンせずに実行する場合(キーワード検索):uvx --from git+https://github.com/Gastaan/swiss-grounding-mcp swiss-grounding-mcp。
MCP クライアントを接続する
stdio または Streamable HTTP 経由で MCP に対応するクライアントであれば、どれでも動作します。Claude Code、OpenCode、MCP Inspector CLI、FastMCP クライアントで、従来の initialize ハンドシェイク(プロトコル 2025-06-18)とステートレスな 2026-07-28 プロトコルを含めてテスト済みです。ホスト型サーバーの場合は、その /mcp URL をリモート(HTTP)サーバーとして追加してください。クローンを使う場合は、絶対パスを指定し、/path/to/swiss-grounding-mcp を置き換えてください。サーバーは使用方法を示す instructions をクライアントに送信します。
Claude Code
claude mcp add swiss -- uv run --extra semantic --directory /path/to/swiss-grounding-mcp swiss-grounding-mcp
claude mcp add --transport http swiss-http http://localhost:8000/mcp
OpenCode · opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"swiss": {"type": "local", "command": ["uv", "run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"], "enabled": true, "timeout": 30000},
"swiss-http": {"type": "remote", "url": "http://localhost:8000/mcp", "enabled": false, "timeout": 30000}
}
}
Claude Desktop · claude_desktop_config.json
uv の完全なパスを指定してください(例:which uv で確認できます)。
{"mcpServers": {"swiss": {"command": "/full/path/to/uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}
VS Code · .vscode/mcp.json
{"servers": {"swiss": {"type": "stdio", "command": "uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}
Cursor · .cursor/mcp.json
{"mcpServers": {"swiss": {"command": "uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}
ヒント
クライアントのリクエストタイムアウトは 30 秒以上に設定してください。OpenCode のデフォルトは 5 秒ですが、応答の遅い公式ソースではさらに時間がかかることがあります。サーバーはすべてのツール呼び出しを
SGM_TOOL_TIMEOUT(30 秒)以内に終了し、適切なsource_errorを返します。そのため、クライアントのタイムアウトを 30 秒に設定すれば、その応答を受け取れます。
設定
設定は不要です。robots.txt と利用規約の遵守はデフォルトで有効で、無効にすることもできます。
| 変数 | デフォルト | 意味 |
|---|---|---|
SGM_RESPECT_ROBOTS | true | 取得するすべてのウェブサイトについて、リダイレクトの各段階で robots.txt(RFC 9309)を遵守します。無効にするには false を設定します。 |
SGM_RESPECT_TERMS | true | data/source_terms.json に記録された利用規約を遵守します。利用規約で自動アクセスが許可されていないホストにはアクセスしません。無効にするには false を設定します。 |
キャッシュ、タイムアウト、オフラインモード、ベアラートークン、レート制限、許可するオリジン、ログ記録については、docs/configuration.md を参照してください。
ドキュメント
- 応答仕様とツール:各ツールが返す JSON、5 つのステータス、場所の扱い、全 13 個のツール
- 設定と運用:すべての設定、HTTP セキュリティ、キャッシュとソース利用のエチケット、監視、ホスト型インスタンス
- 検索:キーワード検索とセマンティックランキング、および測定済みの品質
- 評価:チャレンジのセルフチェック、エンドツーエンドの実行、既知の見落としすべて
- 開発:アーキテクチャ、データと毎週の更新、ソースの追加、テスト
Zurich 2026 の Swiss AI Weeks で開催された Swisscom myAI チャレンジSwiss Grounding MCP向けに構築されました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。