data-bs-mcp
MCP server for querying Huwise/Opendatasoft data portals. Enables dataset search, metadata retrieval, record filtering with ODSQL, and data export.
README
data-bs-mcp
MCP server for any Huwise/Opendatasoft data portal.
Installation
uv sync
Usage
uv run main.py
Debug
npx @modelcontextprotocol/inspector uv run main.py
Install with uvx
uvx --from git+https://github.com/DCC-BS/mcp-data-bs data-bs-mcp
Selecting a catalog
The catalog is chosen by whoever deploys the server via the .env file next to
main.py. All Huwise/Opendatasoft portals share the same API
path, so you only set the domain:
# .env
DATA_PORTAL_DOMAIN=data.bl.ch
The full API base URL is built as
https://<domain>/api/explore/v2.1.
The .env file is committed, so a fork carries its
catalog choice through uvx installs as well.
Configuration
OpenCode
Add to your OpenCode config:
{
"mcpServers": {
"data-bs": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/data-bs-mcp",
"run",
"main.py"
]
}
}
}
Cursor
Add to your Cursor config (~/.cursor/mcp.json):
{
"mcpServers": {
"data-bs": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/data-bs-mcp",
"run",
"main.py"
]
}
}
}
Tools
get_datasets
Search and list available datasets.
Two search modes:
semantic(default): ranks the catalog by meaning using thevector_similarityexplore endpoint from Huwise. Best for natural-language / conceptual queries. Matches synonyms and other languages.lexical: classic full-text match on the exact terms.
# semantic (default) — natural language, ranked by relevance
get_datasets(search="air quality measurements")
# lexical — exact full-text match
get_datasets(search="luft", search_mode="lexical")
# combine with facet filters
get_datasets(search="bevölkerung", refine="publisher:Statistisches Amt")
get_dataset
Get detailed metadata for a specific dataset.
get_dataset(dataset_id="100113")
get_records
Query records from a dataset with ODSQL filtering.
get_records(dataset_id="100113", where="pm25 > 10", limit=100, order_by="time DESC")
get_facets
Get available facet values for filtering.
get_facets(facet="publisher") # Options: publisher, keyword, theme, features, modified, language
export_dataset_url
Get download URL for dataset export.
export_dataset_url(dataset_id="100113", format="csv", where="sensornr=240")
Formats: csv, json, geojson, xlsx, shp, parquet, gpx, kml, rdfxml, jsonld, turtle
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.