io.github.raheb77/saudi-open-data-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CACHE_DIR | No | Directory for cache storage | /var/lib/saudi-open-data-mcp/cache |
| LOG_LEVEL | No | Logging level (e.g., DEBUG, INFO, WARNING, ERROR) | ERROR |
| SNAPSHOT_DIR | No | Directory for snapshot storage | /var/lib/saudi-open-data-mcp/snapshots |
| REGISTRY_PATH | No | Path to the SQLite registry database | /var/lib/saudi-open-data-mcp/registry.sqlite |
| SAMA_BASE_URL | No | Base URL for SAMA data source | https://www.sama.gov.sa |
| HTTP_AUTH_ROLE | No | Role for HTTP authorization | operator |
| HTTP_AUTH_TOKEN | Yes | Bearer token for HTTP authentication (required for HTTP mode) | |
| DATA_GOV_SA_BASE_URL | No | Base URL for data.gov.sa data source | https://open.data.gov.sa |
| HTTP_AUTH_CAPABILITIES | No | Capabilities for HTTP authorization | read,refresh,materialize |
| TIER_A_REFRESH_ENABLED | No | Enable Tier A background refresh | false |
| TIER_A_REFRESH_INTERVAL_SECONDS | No | Interval for Tier A refresh in seconds | 3600 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dataset_metadataC | Exact registry metadata lookup by dataset_id. |
| dataset_healthA | Exact registry-backed health lookup by dataset_id, with local snapshot freshness evidence when available. |
| download_datasetA | Report local raw snapshot availability for an exact dataset_id. Local-only; no remote fetch. |
| materialize_hot_setA | Fetch and persist the fixed Wave 1 SAMA hot-set into local snapshots. Tier B remains opt-in via include_optional. |
| query_datasetA | Query local canonical records for an exact dataset_id using exact-match filters only. Local-only; no remote fetch. |
| search_datasetsA | Search registry-backed dataset metadata using deterministic substring matching only. |
| preview_datasetB | Fetch and preview a dataset for an exact registry dataset_id. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| catalog | Registry-backed summary of the initial seeded dataset catalog. |
| observability | Read-only grouped process-local observability counters for internal operators. This is not a health claim or an external metrics API. |
| policies | Read-only summary of current data-facing MCP semantics, including the decision to keep query local/deterministic and preview hybrid. |
TDQS
Scored across 7 tools
Each tool serves a distinct function: preview, metadata lookup, health check, download availability, materialization, local query, and search. No two tools have overlapping purposes; even preview vs. query are clearly separated by remote vs. local scope.
Most tools follow a verb_noun pattern (preview_dataset, download_dataset, query_dataset, search_datasets, materialize_hot_set), but dataset_metadata and dataset_health are noun_noun, creating a minor inconsistency. Still, the pattern is readable and predictable overall.
Seven tools is well-scoped for a data access server covering search, metadata, preview, health, download, and local query. Each tool has a clear role with no redundancy, fitting the typical 3-15 range.
The surface covers the full lifecycle for a data consumer: discovery (search), inspection (metadata, preview, health), acquisition (download, materialize), and local analysis (query). There are no obvious dead ends, and the server's read-only purpose is fully served.