mcpField
D
Data Gov Il

Data Gov Il

ローカル
github.com/DavidOsherProceedデータ・分析11019 週間前に更新

Data Gov Il について

data-gov-il-mcp は、イスラエル政府のオープンデータポータル data.gov.il 向けの MCP サーバーです。公式 CKAN API を通じて、データセット、リソース、タグ、組織、表形式のレコードに構造化してアクセスできます。ローカルの stdio と、リモートの Streamable HTTP の両方に対応しています。

主な機能

  1. 01カタログ優先のデータセット検索とライブ検索へのフォールバック
  2. 02データセット、リソース、組織のメタデータ取得
  3. 03データストアレコードの全文検索とフィルタリング
  4. 04ヘブライ語の正規化とあいまい検索
  5. 05任意で有効化できる Elicitation と Sampling
  6. 06API キーおよび OAuth 2.1 による認証

活用シーン

  1. 01イスラエル政府のデータセットの検索とレコードの照会
  2. 02組織やタグによる利用可能なデータの閲覧
  3. 03食品、環境、不動産などの分析プロンプトの実行

MCP 対応

このプロジェクトは MCP サーバーであり、既定で 9 個のツール(任意で 1 個追加)、5 個の静的リソースと 1 個のリソーステンプレート、3 個のドメイン別プロンプトをクライアントに公開します。リソースのサブスクリプションにも対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"data-gov-il": {
"command": "npx",
"args": [
"-y",
"git+https://github.com/DavidOsherProceed/data-gov-il-mcp.git"
]
}
}
}
起動コマンドnpx -y 'git+https://github.com/DavidOsherProceed/data-gov-il-mcp.git'

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmgit+https://github.com/DavidOsherProceed/data-gov-il-mcp.git

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

gov-mcp

data-gov-il-mcp

Model Context Protocol (MCP) に準拠した、data.gov.il のイスラエル政府オープンデータ向け本番品質 MCP サーバーです。

このサーバーは、公式 CKAN API を通じて、MCP 対応クライアントがイスラエル政府のデータセット、リソース、タグ、組織、表形式のレコードに構造化された方法でアクセスできるようにします。TypeScript で記述され、Zod で入力と出力を検証し、JSON を優先するツール応答を返します。また、ローカルの stdio とリモートの Streamable HTTP トランスポートの両方に対応しています。

主な特長

項目状況
MCP ツールデフォルトで 9 個のツール、オプションの Sampling を有効にすると 10 個
MCP リソース5 個の静的リソースと 1 個のデータセットリソーステンプレート
MCP プロンプト引数補完機能付きの 3 個のドメインプロンプト
ディスカバリーヘブライ語の正規化、あいまい検索、タグのランキング、共起分析に対応したインメモリカタログスナップショット
トランスポートstdio と Streamable HTTP
認証none、API キーのベアラー認証、OAuth 2.1 JWT/JWKS
HTTP セキュリティ強化Helmet、CORS、レート制限、リクエスト ID、Host/Origin 検証
応答structuredContent と、content[0].text 内の同一 JSON
ランタイム設定環境変数による設定。起動時に Zod で検証

クイックスタート

Claude Desktop / ローカル Stdio

公開済みパッケージを直接使用します。

{
  "mcpServers": {
    "data-gov-il": {
      "command": "npx",
      "args": ["-y", "data-gov-il-mcp"]
    }
  }
}
Streamable HTTP
npm install -g data-gov-il-mcp
data-gov-il-mcp-http

次に、MCP クライアントを設定します。

{
  "mcpServers": {
    "data-gov-il": {
      "url": "http://localhost:3664/mcp"
    }
  }
}
Docker
docker run -p 3664:3664 ghcr.io/davidosherproceed/data-gov-il-mcp:latest

ローカル開発の場合:

npm install
npm run build
npm run start:stdio
# or
npm run start:http

カタログディスカバリーレイヤー

このサーバーには、src/data/catalog/catalog.snapshot.json にコミット済みのカタログスナップショットが含まれています。このスナップショットは data.gov.il から生成され、ビルドにバンドルされます。起動時に検証され、メモリ内でインデックス化されます。

ディスカバリーレイヤーは次の機能を提供します。

  • find_datasets:カタログを優先して検索し、必要に応じて CKAN にライブフォールバックします。
  • list_all_datasets:組織による任意のフィルターに対応した、ローカルでの即時一覧表示。
  • list_organizations:データセット数を含む、ローカル組織一覧の即時表示。
  • 実際の CKAN タグ/ファセットデータに基づく list_available_tags と search_tags。
  • datagov://dataset/{id} の動的補完。
  • datagov://tags と datagov://catalog/stats のリソース。

次の機能が含まれます。

  • ニクードの削除や語末形の正規化を含む、ヘブライ語の正規化。
  • あいまい一致と誤字への対応のための、トークン化とトライグラムインデックス。
  • データセット、タグ、組織のマップ。
  • タグからデータセット、および組織からデータセットへのインデックス。
  • 関連タグの提案に使うタグの共起情報。
  • 完全一致、トークン、タグ、組織、あいまい検索のシグナルに基づく重み付きランキング。

スナップショットを更新します。

npm run catalog:refresh
npm run build

スケジュール実行される GitHub Actions ワークフロー(.github/workflows/catalog-refresh.yml)がスナップショットを更新し、カタログデータに変更がある場合は PR を作成します。

詳細:docs/catalog-discovery-layer.md。

ツール

成功したツール応答はすべて、次の内容を返します。

  • structuredContent:型付き JSON オブジェクト。
  • content[0].text:テキストのみのクライアント向けに JSON としてシリアライズされた同一のオブジェクト。
デフォルトのツール
ツール目的
find_datasets主要なデータセット検索ツールです。まずローカルカタログを使用し、必要に応じて CKAN にライブでフォールバックします。
get_dataset_infoタグやリソースを含む、データセットの CKAN メタデータ全体を取得します。
list_all_datasetsカタログに基づくデータセットの概要をすばやく一覧表示します。任意で組織による絞り込みもできます。
list_resourcesデータセット内のファイル/データストアを一覧表示し、datastore_active リソースを特定します。
search_recordsCKAN データストアのレコードを、全文検索、フィルター、フィールド、並べ替え、ページネーション、一意の値を指定して検索します。
list_organizationsヘブライ語のタイトルとデータセット数を含む、カタログに基づく組織一覧を取得します。
get_organization_infoCKAN の組織メタデータをライブで取得します。
list_available_tagsデータセット数と関連タグを含む、順位付けされたカタログタグを取得します。
search_tags関連タグの候補を提示する、あいまいタグ検索を行います。
オプションのツール
ツール有効化の条件目的
summarize_datasetMCP_ENABLE_SAMPLING=true互換性のあるクライアントに MCP Sampling をリクエストし、データセットの読みやすい要約を生成します。Sampling を利用できない場合は、メタデータにフォールバックします。
find_datasets での Elicitation

find_datasets では、任意で interactive パラメーターを公開できます。

{
  "query": "תחבורה",
  "interactive": true
}

これは、次の場合にのみ登録されます。

MCP_ENABLE_ELICITATION=true

有効にすると、互換性のあるクライアントでは、検索範囲が広い場合に確認フォームを表示できます。たとえば、サーバーは多数の一致するデータセットを、公開元の組織で絞り込むようユーザーに求めることができます。クライアントが Elicitation をサポートしていない場合、ユーザーが辞退した場合、またはリクエストがタイムアウトした場合、ツールは通常の検索結果にフォールバックします。

MCP クライアントによってサポート状況が異なるため、これはデフォルトで無効になっています。

リソース

URI種類説明
datagov://organizations静的 JSONキャッシュされた CKAN の組織一覧です。
datagov://tags静的 JSONコミット済みカタログスナップショットの順位付けされたタグです。
datagov://featured静的 JSONすぐに使える resource_id の値とフィールドスキーマを含む、厳選された価値の高いデータセットです。
datagov://guide静的テキストツール、リソース、おすすめのワークフローの使用ガイドです。
datagov://catalog/stats静的 JSONスナップショットのメタデータです。生成時刻、データセット数、タグ数、組織数、上位の組織が含まれます。
datagov://dataset/{id}テンプレート JSONデータセットのスラッグまたは ID による、データセットのメタデータ全体です。動的補完と、カタログに基づくリソース一覧が含まれます。

サーバーは、標準に準拠した最小限の方法でリソースサブスクリプションも実装しています。

  • resources.subscribe を通知します。
  • resources/subscribe と resources/unsubscribe を処理します。
  • クライアントがサブスクライブしたリソースについてのみ、notifications/resources/updated を送信します。
  • CKAN をリアルタイムでポーリングしません。

プロンプト

プロンプト引数目的
food-nutrition-analysisanalysis_type食品価格、栄養、コーシャ、安全性、輸出入。
environmental-sustainability-analysisanalysis_focus大気質、グリーンビルディング、廃棄物、水、汚染地域。
real-estate-market-analysismarket_focus住宅、都市再開発、補助付き住宅、都市/不動産分析。

プロンプトの引数では、MCP の補完機能を使用します。分野別の焦点の候補は厳選されており、組織の補完候補はカタログに基づいています。

オプションの MCP クライアント機能

これらの機能はデフォルトで無効です。対象の MCP クライアントが対応しており、サーバーで公開したい場合にのみ有効にしてください。

変数デフォルト効果
MCP_ENABLE_ELICITATIONfalsefind_datasets に interactive を追加し、サーバーから開始する確認フォームを使用できるようにします。Cursor や Claude Code などのクライアントで動作します。
MCP_ENABLE_SAMPLINGfalseMCP Sampling を通じてクライアント側のモデル生成を要求する summarize_dataset を登録します。

クライアントによって対応状況は異なります。

  • Cursor は Elicitation に対応していますが、現在 Sampling は公開していません。
  • Claude Code は最近のバージョンで Elicitation に対応しています。
  • Claude Desktop は多くの MCP 機能に対応していますが、Elicitation の対応状況は安定していないか、利用できません。
  • Sampling の利用可否は異なりますが、サーバーは常に安全にフォールバックします。

設定

.env.example を .env にコピーします。

cp .env.example .env
コア設定
変数デフォルト説明
TRANSPORTstdio汎用エントリーポイントを使用する場合のデフォルトのトランスポートです。専用バイナリも利用できます。
PORT3664HTTP ポートです。
HOST0.0.0.0HTTP のバインド先ホストです。
CORS_ORIGIN*許可する CORS オリジンです。本番環境のブラウザー向けデプロイではワイルドカードを避けてください。
LOG_LEVELinfofatal、error、warn、info、debug、または trace です。
NODE_ENVproductiondevelopment、production、または test です。
CKAN
変数デフォルト説明
CKAN_BASE_URLhttps://data.gov.il/api/3/actionCKAN アクション API のベース URL です。
CKAN_TIMEOUT_MS10000CKAN リクエストのデフォルトのタイムアウトです。
CKAN_SEARCH_TIMEOUT_MS15000より負荷の高いデータストア/検索リクエストのタイムアウトです。
CACHE_TTL_MS300000デフォルトのキャッシュ TTL です。
CACHE_MAX_ITEMS500インメモリーキャッシュごとの最大エントリー数です。
HTTP の強化
変数デフォルト説明
TRUST_PROXYfalseリバースプロキシのヘッダーを信頼します。nginx/Caddy/ALB の背後に配置する場合に設定します。
RATE_LIMIT_WINDOW_MS60000レート制限の期間です。無効にするには 0 を設定します。
RATE_LIMIT_MAX120期間内に IP ごとに許可されるリクエスト数です。無効にするには 0 を設定します。
ALLOWED_HOSTSemptyDNS リバインディング対策のホスト許可リストです。未設定の場合は、ループバック/ローカルホストがデフォルトで許可されます。
ALLOWED_ORIGINSemptyブラウザーの Origin 許可リストです。適切な場合は CORS_ORIGIN にフォールバックします。
認証
変数デフォルト説明
AUTH_MODEnonenone、apikey、または oauth です。
API_KEYSemptyAUTH_MODE=apikey 用の、カンマ区切りのベアラートークンです。
OAUTH_ISSUERunsetAUTH_MODE=oauth 用の、想定される JWT 発行者です。
OAUTH_AUDIENCEunsetAUTH_MODE=oauth 用の、想定される JWT オーディエンスです。
OAUTH_JWKS_URIunsetJWT 検証用の JWKS URL です。
OAUTH_RESOURCE_SERVERunsetOAuth 保護リソースメタデータ用の、正規の MCP リソース URL です。通常は /mcp を含みます。
サービス ID
変数デフォルト説明
SERVICE_NAMEpackage/server defaultMCP サーバー名の上書き値です。
SERVICE_VERSIONpackage versionMCP サーバーのバージョンの上書き値です。
SERVICE_DESCRIPTIONbuilt-in descriptionMCP サーバーのセマンティックな説明の上書き値です。

推奨ワークフロー

データセットの検索とクエリ
  1. find_datasets を使い、自然なヘブライ語または英語の用語で検索します。
  2. 選択したデータセットに対して get_dataset_info または list_resources を使います。
  3. datastore_active=true のリソースを選びます。
  4. まず limit=5 を指定して search_records を使い、フィールドを確認します。
  5. 必要に応じて filters、fields、sort、distinct、またはページネーションを追加します。

使用例:

find_datasets({ "query": "מחיר למשתכן" })
get_dataset_info({ "dataset": "mechir-lamishtaken" })
search_records({
  "resource_id": "7c8255d0-49ef-49db-8904-4cf917586031",
  "limit": 5,
  "include_total": true
})
タグの検出
search_tags({ "keyword": "דיור", "limit": 5 })
find_datasets({ "query": "תחבורה", "tags": "תחבורה ציבורית" })
インタラクティブな検出の使用

必要な設定:

MCP_ENABLE_ELICITATION=true

その後、エージェントは次のように呼び出せます。

find_datasets({ "query": "תחבורה", "interactive": true })

互換性のあるクライアントでは、ユーザーに結果を絞り込むよう求めるフォームが表示される場合があります。

クライアント側の要約の使用

必要な設定:

MCP_ENABLE_SAMPLING=true

その後:

summarize_dataset({ "dataset": "mechir-lamishtaken", "language": "he" })

Sampling が利用できない場合、ツールはデータセットのメタデータを返し、sampling.used=false となります。

開発

npm install

# Type-check
npm run typecheck

# Lint
npm run lint

# Test
npm test

# Build
npm run build

# Refresh local catalog snapshot
npm run catalog:refresh

ローカルで実行する場合:

# stdio
npm run build
npm run start:stdio

# HTTP
npm run build
npm run start:http

オプション機能をローカルで有効にする場合:

MCP_ENABLE_ELICITATION=true MCP_ENABLE_SAMPLING=true npm run start:http

PowerShell の場合:

$env:MCP_ENABLE_ELICITATION="true"
$env:MCP_ENABLE_SAMPLING="true"
npm run start:http

プロジェクト構成

src/
  auth/           Authentication providers and Express middleware
  bin/            stdio and HTTP entry points
  cache/          In-memory TTL/LRU cache
  catalog/        Snapshot validation, indexing, fuzzy search, CatalogService
  ckan/           Typed CKAN API client and CKAN response types
  config/         Zod env config, constants, server identity
  core/           Dependency container, MCP server factory, lifecycle
  data/catalog/   Committed catalog snapshot artifact
  formatting/     JSON response builders and guidance text
  observability/  Pino logger
  prompts/        MCP prompt definitions, templates, registration
  resources/      MCP resources, templates, subscriptions
  services/       Domain services for CKAN data access
  tools/          MCP tool definitions and Zod schemas
  transports/     stdio and Streamable HTTP transports
tests/
  fixtures/       Test fixtures
  unit/           Unit tests
scripts/
  refresh-catalog.ts
docs/
  catalog-discovery-layer.md
  MIGRATION.md

Docker

docker build -t data-gov-il-mcp .
docker run -p 3664:3664 data-gov-il-mcp

オプション機能を使用する場合:

docker run -p 3664:3664 \
  -e MCP_ENABLE_ELICITATION=true \
  -e MCP_ENABLE_SAMPLING=true \
  data-gov-il-mcp

品質

プロジェクトでは、以下のテストに合格することが求められます。

npm run typecheck
npm run lint
npm test
npm run build

現在の実装には、環境変数の解析、認証プロバイダー、CKAN エラー、キャッシュ、フォーマット、カタログのテキスト正規化/あいまい検索/インデックス/検索ロジック、スナップショットの検証、サービス、リソース、サブスクリプション、および HTTP Host/Origin ガードの単体テストが含まれています。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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