istat-mcp-suite
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_STORAGE_DIR | No | Directory path where large data files are saved locally. Used by get_data when payloads are large or timeouts occur. | |
| DOWNLOAD_TIMEOUT_SECONDS | No | Timeout in seconds for file downloads when force_file_download is used. Default is 900. | 900 |
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 |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discover_dataflowsA | Search ~4,700 available ISTAT statistical datasets (dataflows) by keywords. Returns dataflow id, Italian name and the datastructure id to feed into get_constraints. |
| get_constraintsA | Single-Call Metadata Tool: retrieves dimensions (with their position), valid constrained code values, and human-readable Italian/English labels for an ISTAT dataset in 1 query. Replaces the separate get_structure and get_codelist_description tools of earlier versions. Call this before get_data to build the key_filter. |
| get_conceptsA | Get semantic definitions for ISTAT SDMX concept IDs (e.g. REF_AREA, FREQ). |
| get_structure_diagramA | Generate a Mermaid.js diagram showing dataset dimensions, codelists, and hierarchies. |
| get_territorial_codesA | Instant offline lookup across 8,039 official ISTAT REF_AREA territorial codes (Comuni, Province, Regioni, Ripartizioni). Case-insensitive on name, REF_AREA code and ISTAT code. Example: search='Grosseto', level='comune' -> 053011. |
| get_dataA | Fetch statistical data from ISTAT. Returns formatted text inline for small queries and automatically downloads to a local disk file for large datasets, for payloads above 1 MB, or when force_file_download=True. The key_filter is a dotted SDMX key string (e.g. 'A.053011.W_SUPPL+W_TOTLOS'), not a dictionary. On dataflows with long time series (e.g. 22_389) pass last_n_observations=1, otherwise ISTAT scans the whole series and the request times out. |
| get_cache_diagnosticsA | Inspect cache hit/miss diagnostics, disk usage, and downloaded files list. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool has a distinct role: dataflow discovery, dataset constraints, concept definitions, structure diagrams, territorial code lookup, data retrieval, and cache diagnostics. Even the metadata-related tools (constraints, concepts, diagram, codes) are clearly separated by their specific inputs and outputs, so an agent should rarely confuse them.
Most tools follow a consistent get_<noun> pattern (get_constraints, get_concepts, get_data, etc.), with one notable deviation: discover_dataflows. This is still acceptable since 'discover' conveys a search action, but it breaks the uniform get_ prefix. Overall the naming is predictable and readable.
7 tools is well within the ideal range for a domain-specific server. Each tool serves a clear purpose in the workflow (discover → constrain → fetch → diagnose), and none are redundant or unnecessary. The count feels intentionally scoped.
The core workflow of discovering datasets, retrieving their constraints, and fetching data is fully covered. Supporting tools for semantic concepts, territorial codes, structure visualization, and cache diagnostics fill out the domain nicely. Minor gaps include an inability to list all dataflows without a keyword and no explicit way to get raw dataflow metadata beyond constraints, but these are workarounds rather than dead ends.