Advanced MCP server for seamless access to Israeli Government Open Data
# Add to your Claude Code skills
git clone https://github.com/DavidOsherdiagnostica/data-gov-il-mcpGuides for using mcp servers skills like data-gov-il-mcp.
Last scanned: 6/24/2026
{
"issues": [
{
"type": "npm-audit",
"message": "esbuild: esbuild allows arbitrary file read when running the development server on Windows",
"severity": "low"
}
],
"status": "PASSED",
"scannedAt": "2026-06-24T07:39:51.600Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}data-gov-il-mcp is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by DavidOsherdiagnostica. Advanced MCP server for seamless access to Israeli Government Open Data. It has 103 GitHub stars.
Yes. data-gov-il-mcp passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/DavidOsherdiagnostica/data-gov-il-mcp" and add it to your Claude Code skills directory (see the Installation section above).
data-gov-il-mcp is primarily written in TypeScript. It is open-source under DavidOsherdiagnostica on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh data-gov-il-mcp against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Production-grade Model Context Protocol (MCP) server for Israeli Government Open Data from data.gov.il.
This server gives MCP-compatible clients structured access to Israeli government datasets, resources, tags, organizations, and tabular records through the official CKAN API. It is written in TypeScript, validates inputs and outputs with Zod, returns JSON-first tool responses, and supports both local stdio and remote Streamable HTTP transports.
| Area | Status |
|---|---|
| MCP tools | 9 tools by default, 10 with optional Sampling enabled |
| MCP resources | 5 static resources + 1 dataset resource template |
| MCP prompts | 3 domain prompts with argument completions |
| Discovery | In-memory catalog snapshot with Hebrew normalization, fuzzy matching, tag ranking, and co-occurrence |
| Transports | stdio and Streamable HTTP |
| Auth | none, API key bearer auth, OAuth 2.1 JWT/JWKS |
| HTTP hardening | Helmet, CORS, rate limiting, request IDs, Host/Origin validation |
| Responses | structuredContent plus identical JSON in content[0].text |
| Runtime config | Environment-driven, validated at startup with Zod |
Use the published package directly:
{
"mcpServers": {
"data-gov-il": {
"command": "npx",
"args": ["-y", "data-gov-il-mcp"]
}
}
}
npm install -g data-gov-il-mcp
data-gov-il-mcp-http
Then configure your MCP client:
{
"mcpServers": {
"data-gov-il": {
"url": "http://localhost:3664/mcp"
}
}
}
docker run -p 3664:3664 ghcr.io/davidosherproceed/data-gov-il-mcp:latest
For local development:
npm install
npm run build
npm run start:stdio
# or
npm run start:http
The server ships with a committed catalog snapshot at src/data/catalog/catalog.snapshot.json. The snapshot is generated from data.gov.il and bundled into the build. At startup, it is validated and indexed in memory.
The discovery layer powers:
find_datasets catalog-first search with live CKAN fallback.list_all_datasets instant local enumeration with optional organization filter.list_organizations instant local organization list with dataset counts.list_available_tags and search_tags from real CKAN tag/facet data.datagov://dataset/{id}.datagov://tags and datagov://catalog/stats resources.It includes:
Refresh the snapshot:
npm run catalog:refresh
npm run build
A scheduled GitHub Actions workflow (.github/workflows/catalog-refresh.yml) refreshes the snapshot and opens a PR when catalog data changes.
More detail: docs/catalog-discovery-layer.md.
All successful tool responses return:
structuredContent: the typed JSON object.content[0].text: the same object serialized as JSON for text-only clients.| Tool | Purpose |
|---|---|
find_datasets |
Primary dataset discovery tool. Uses the local catalog first, then live CKAN fallback when needed. |
get_dataset_info |
Full CKAN metadata for a dataset, including tags and resources. |
list_all_datasets |
Instant catalog-backed dataset summaries, optionally filtered by organization. |
list_resources |
Lists files/datastores inside a dataset and identifies datastore_active resources. |
search_records |
Queries CKAN datastore records with full-text search, filters, fields, sorting, pagination, and distinct values. |
list_organizations |
Catalog-backed organizations with Hebrew titles and dataset counts. |
get_organization_info |
Live CKAN organization metadata. |
list_available_tags |
Ranked catalog tags with dataset counts and related tags. |
search_tags |
Fuzzy tag search with related tag suggestions. |
| Tool | Enabled By | Purpose |
|---|---|---|
summarize_dataset |
MCP_ENABLE_SAMPLING=true |
Requests MCP Sampling from compatible clients to produce a human-readable dataset summary. Falls back to metadata when Sampling is unavailable. |
find_datasetsfind_datasets can optionally expose an interactive parameter:
{
"query": "תחבורה",
"interactive": true
}
This is only registered when:
MCP_ENABLE_ELICITATION=true
When enabled, compatible clients may show a clarification form for broad searches. For example, the server can ask the user to narrow many matching datasets by publisher organization. If the client does not support Elicitation, the user declines, or the request times out, the tool falls back to normal search results.
This is disabled by default because MCP client support varies.
| URI | Type | Description |
|---|---|---|
datagov://organizations |
Static JSON | Organization list from CKAN, cached. |
datagov://tags |
Static JSON | Ranked tags from the committed catalog snapshot. |
datagov://featured |
Static JSON | Curated high-value datasets with ready-to-use resource_id values and field schemas. |
datagov://guide |
Static text | Usage guide for tools, resources, and recommended workflows. |
datagov://catalog/stats |
Static JSON | Snapshot metadata: generated time, dataset count, tag count, organization count, top organizations. |
datagov://dataset/{id} |
Template JSON | Full dataset metadata by dataset slug or ID. Includes dynamic completions and a catalog-backed resource list. |
The server also implements resource subscriptions in a minimal standards-compliant way:
resources.subscribe.resources/subscribe and resources/unsubscribe.notifications/resources/updated only for resources a client subscribed to.| Prompt | Argument | Purpose |
|---|---|---|
food-nutrition-analysis |
analysis_type |
Food prices, nutrition, kosher, safety, import/export. |
environmental-sustainability-analysis |
analysis_focus |
Air quality, green buildings, waste, water, contaminated sites. |
real-estate-market-analysis |
market_focus |
Housing, urban renewal, subsidized housing, city/property analysis. |
Prompt arguments use MCP completions. Domain focus suggestions are curated, and organization completions are catalog-backed.
These features are off by default. Enable them only when your target MCP client supports them and you want the server to expose them.
| Variable | Default | Effect |
|---|---|---|
MCP_ENABLE_ELICITATION |
false |
Adds interactive to find_datasets and allows server-initiated clarification forms. Works in clients such as Cursor and Claude Code. |
MCP_ENABLE_SAMPLING |
false |
Registers summarize_dataset, which requests client-side model generation through MCP Sampling. |
Client support differs:
Copy .env.example to .env:
cp .env.example .env
| Variable | Default | Description |
|---|---|---|
TRANSPORT |
stdio |
Default transport when using the generic entry point. Dedicated binaries are also available. |
PORT |
3664 |
HTTP port. |
HOST |
0.0.0.0 |
HTTP bind host. |
CORS_ORIGIN |
* |
Allowed CORS origins. Avoid wildcard in production browser deployments. |
LOG_LEVEL |
info |
fatal, error, warn, info, debug, or trace. |
NODE_ENV |
production |
development, production, or test. |
| Variable | Default | Description |
|---|---|---|
CKAN_BASE_URL |
https://data.gov.il/api/3/action |
CKAN action API base URL. |
CKAN_TIMEOUT_MS |
10000 |
Default CKAN request timeout. |
CKAN_SEARCH_TIMEOUT_MS |
15000 |
Timeout for heavier datastore/search requests. |
CACHE_TTL_MS |
300000 |
Default cache TTL. |
CACHE_MAX_ITEMS |
500 |
Max entries per in-memory cache. |
| Variable | Default | Description |
|---|---|---|
TRUST_PROXY |
false |
Trust reverse proxy headers. Set when behind nginx/Caddy/ALB. |
RATE_LIMIT_WINDOW_MS |
60000 |
Rate limit window. Set 0 to disable. |
RATE_LIMIT_MAX |
120 |
Requests per IP per window. Set 0 to disable. |
ALLOWED_HOSTS |
empty | Host allowlist for DNS rebinding protection. Defaults to loopback/local hosts when unset. |
ALLOWED_ORIGINS |
empty | Browser Origin allowlist. Falls back to CORS_ORIGIN when appropriate. |
| Variable | Default | Description |
|---|---|---|
AUTH_MODE |
none |
none, apikey, or oauth. |
API_KEYS |
empty | Comma-separated bearer tokens for AUTH_MODE=apikey. |
OAUTH_ISSUER |
unset | Expected JWT issuer for AUTH_MODE=oauth. |
OAUTH_AUDIENCE |
unset | Expected JWT audience for AUTH_MODE=oauth. |
OAUTH_JWKS_URI |
unset | JWKS URL for JWT verification. |
OAUTH_RESOURCE_SERVER |
unset | Canonical MCP resource URL for OAuth protected resource metadata. Usually includes /mcp. |
| Variable | Default | Description |
|---|---|---|
| `SERVICE_ |