vancouver-city-opendata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Host to bind the HTTP transport to. | 127.0.0.1 |
| PORT | No | Port used when MCP_TRANSPORT=http. | 3000 |
| ODS_API_KEY | No | Optional Opendatasoft API key, sent as Authorization: Apikey <key>. Not required for public data. | |
| ODS_BASE_URL | No | Base URL of the Opendatasoft Explore API v2.1 to query. | https://opendata.vancouver.ca/api/explore/v2.1 |
| ALLOWED_HOSTS | No | Comma-separated hostnames allowed to reach the HTTP transport. | |
| MCP_TRANSPORT | No | stdio or http (overridden by the --stdio/--http CLI flags). | stdio |
| EXPORT_ROW_CAP | No | Hard cap on rows export_dataset will return, regardless of the caller's requested limit. | 5000 |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_datasetsA | Search/list datasets in the City of Vancouver Open Data Portal catalog. Supports full-text search (q) and/or an ODSQL boolean filter (where). Returns dataset_id, title, description, theme, license, and record counts for each match. |
| get_datasetA | Get full metadata for a single dataset by its dataset_id, including its field schema (name, type, label, description) needed to write |
| query_recordsA | Query and filter records within a dataset using ODSQL (where/select/order_by/group_by/q/refine), with pagination via limit/offset. For geographic datasets, results may include a |
| get_facetsA | Get facet values and their record counts for a dataset's filterable fields. Call this before query_records to discover valid values for |
| export_datasetA | Export rows from a dataset in csv, json, geojson, or parquet format. Returns the data inline as text (parquet is base64-encoded binary, since this is not a file-download channel) and is hard-capped at 5000 rows regardless of the requested limit. For larger datasets, narrow the export with where/select, or use query_records with offset-based pagination instead. |
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 5 tools
Each tool targets a distinct stage of the open-data workflow: catalog search, metadata/schema retrieval, record querying, facet discovery, and dataset export. Even though query_records and export_dataset both return rows, their intended use cases are clear and non-conflicting.
All tool names follow a consistent verb_noun snake_case pattern: search_datasets, get_dataset, query_records, get_facets, export_dataset. The pattern is predictable and makes it easy to infer tool behavior from the name alone.
Five tools is well-scoped for an open-data portal MCP server. Each tool earns its place by covering a necessary part of the exploration-and-extraction workflow without unnecessary redundancy.
The server covers the full read-only lifecycle for open data: discover datasets, inspect schema, explore facet values, query records, and export in multiple formats. There are no obvious dead ends or missing actions that would prevent an agent from accomplishing the apparent purpose.