nl-opendata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TRANSPORT | No | Transport mode: stdio (default), http, or sse | stdio |
| USE_PYTHON_ANALYSIS | No | Set to 'true' to enable Python analysis tools (disabled by default for security) | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cbs_list_datasetsB | Lists available datasets from the CBS OData Catalog. Args: params: ListDatasetsInput containing: - top (int): Number of records to return (default: 10, max: 1000) - skip (int): Number of records to skip (default: 0) Returns: str: CSV string containing dataset list with columns: Identifier, Title, Summary |
| cbs_search_datasetsA | Searches for datasets in the CBS OData Catalog by keyword. Args: params: SearchDatasetsInput containing: - query (str): Search term (e.g., "Bevolking", "Inflation") - top (int): Number of records to return (default: 10) - skip (int): Number of records to skip (default: 0) - search_field (str): Where to search - "all", "title", or "summary" Returns: str: CSV string containing matching datasets |
| cbs_check_dataset_availabilityA | Checks if a dataset is available via CBS OData (queryable) or data.overheid.nl (download-only). Args: params: DatasetIdInput containing: - dataset_id (str): Dataset ID (e.g., '83583NED') Returns: str: Availability status and source information |
| cbs_inspect_dataset_detailsA | Compact dataset overview: title, dimensions, measures, and sample data. Use this first to understand a dataset's structure. Args: params: DatasetIdInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') Returns: str: Compact report with title, column list, and 3-row sample |
| cbs_get_metadataA | Unified metadata tool for detailed info, structure, dimension values, or custom endpoints. Args: params: GetMetadataInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') - metadata_type (str): Type of metadata: - 'info': Dataset description (TableInfos) - 'structure': Column definitions (DataProperties) - 'endpoints': Available metadata endpoints - 'dimensions': Dimension values with codes for filtering (requires endpoint_name) - 'custom': Custom endpoint query (requires endpoint_name) - endpoint_name (str, optional): Required for 'dimensions' and 'custom' types (e.g., 'Geslacht', 'Perioden', 'Luchthavens') Returns: str: CSV for info/structure/dimensions, JSON for endpoints/custom Examples: - Get columns: metadata_type="structure" - Get dimension codes: metadata_type="dimensions", endpoint_name="Geslacht" - Get raw endpoint: metadata_type="custom", endpoint_name="CategoryGroups" IMPORTANT - Finding Dimension Codes: Use metadata_type="dimensions" to find codes for OData filtering. CBS uses coded values (e.g., 'A043591') that map to names (e.g., 'Eindhoven Airport'). |
| cbs_query_datasetA | Queries data from a dataset with optional filtering and column selection. Args: params: QueryDatasetInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') - top (int): Number of records (default: 10) - skip (int): Records to skip (default: 0) - filter (str, optional): OData filter (e.g., "Perioden eq '2023JJ00'") - select (List[str], optional): Column names to return - compact (bool): Return summary for large results (default: True) - translate (bool): Translate coded dimension values to text (default: True) Returns: str: CSV data with human-readable dimension values Note: Use cbs_get_metadata with metadata_type="dimensions" to find filter codes. |
| cbs_estimate_dataset_sizeA | Estimates the size of a dataset before fetching. Args: params: DatasetIdInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') Returns: str: Size estimation with row count, column count, and recommended fetch strategy |
| cbs_save_datasetB | Saves a dataset to a CSV file. Args: params: SaveDatasetInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') - file_name (str): File name to save the dataset - top (int): Records per request (default: 1000) - skip (int): Records to skip (default: 0) - fetch_all (bool): Fetch all records with pagination (default: False) - translate (bool): Translate coded values to text (default: True) Returns: str: Success message with file path and record count |
| cbs_save_dataset_to_duckdbB | Saves a dataset to a DuckDB database for efficient querying. Args: params: SaveToDuckDBInput containing: - dataset_id (str): Dataset ID (e.g., '85313NED') - table_name (str, optional): Table name (default: dataset_id) - fetch_all (bool): Fetch all records (default: True) - select (List[str], optional): Column names to fetch Returns: str: Success message with database path, table name, and row count |
| cbs_list_local_datasetsA | Lists all locally saved CSV datasets in the downloads directory. Returns: str: List of CSV files with sizes and row counts. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| generate_odata_filter | Generates an OData filter string based on the table structure and user query. |
| explore_dataset | Explores a specific dataset based on the user query. |
| generate_chart | Guide for creating charts/visualizations from CBS data. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soulnai/nl-opendata-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server