Intelligently query, analyze, and retrieve datasets from Toronto's open data.
Toronto MCP Server: Toronto Open Data Tools
This project implements a Model Context Protocol (MCP) server for Toronto Open Data, deployable on Cloudflare Workers. It exposes a comprehensive set of tools for intelligently querying, analyzing, and retrieving datasets from Toronto's CKAN-powered open data portal, making them accessible to MCP-compatible clients like Claude Desktop, Cursor, and other AI assistants.
๐ Live Server
Deployed at: https://toronto-mcp.s-a62.workers.dev
- SSE Endpoint:
https://toronto-mcp.s-a62.workers.dev/sse(for Claude Desktop) - MCP Endpoint:
https://toronto-mcp.s-a62.workers.dev/mcp(for other clients)
What does it do?
- Provides a remote MCP server exposing tools for Toronto's Open Data via the CKAN API
- Intelligently discovers relevant datasets using advanced relevance scoring
- Analyzes data freshness patterns with comprehensive update frequency tracking
- Provides deep data structure insights including field analysis and schema information
- Enables natural language querying of Toronto's 500+ open datasets
- Supports comprehensive data analysis combining multiple analytical dimensions
๐ ๏ธ Features
Basic CKAN Tools
list_datasets: List all available datasetssearch_datasets: Search datasets by keywordget_package: Retrieve complete metadata for a datasetget_first_datastore_resource_records: Get records from the first active resourceget_resource_records: Get records from a specific resource by ID
๐ง Advanced Analysis Tools
find_relevant_datasets: Intelligently find and rank datasets using relevance scoring (title, description, tags, organization)analyze_dataset_updates: Analyze update frequencies with categorization (daily, weekly, monthly, quarterly, annually, irregular)analyze_dataset_structure: Deep-dive into dataset structure with field definitions, data types, record counts, and optional data previewsget_data_categories: Explore all available organizations and topic groupsget_dataset_insights: Comprehensive analysis combining relevance ranking, update frequency, and data structure insights
๐ก Use Cases
For AI Assistants & Researchers
- "What traffic data is available in Toronto?" โ Ranked datasets with relevance scores and update frequencies
- "How current is Toronto's environmental data?" โ Update frequency analysis across environmental datasets
- "What fields are in the building permits dataset?" โ Complete schema analysis with data types and sample records
- "Give me insights about Toronto's budget data" โ Comprehensive analysis with relevance, freshness, and structure
- "Which datasets update daily?" โ Frequency-based filtering and categorization
For Data Scientists & Analysts
- Discover datasets relevant to specific research questions
- Assess data quality and reliability through update patterns
- Understand data structure before detailed analysis
- Find related datasets across different city departments
- Evaluate data completeness and field availability
๐๏ธ Tech Stack
- Cloudflare Workers: Serverless deployment platform
- Model Context Protocol (MCP): Standard for AI tool integrations
- TypeScript: Type safety and modern development
- Zod: Runtime parameter validation
- CKAN API: Direct integration with Toronto Open Data
๐ Project Structure
toronto-mcp/
โโโ src/
โ โโโ index.ts # MCP server setup and routing
โ โโโ ckanTools.ts # Toronto Open Data tools implementation
โโโ test-runner.ts # Automated testing framework
โโโ test-deployment.ts # Deployment validation script
โโโ claude-mcp-config.json # Claude Desktop configuration
โโโ evaluation-guide.md # Comprehensive testing strategies
โโโ example-usage.md # Usage examples and patterns
โโโ testing-guide.md # Automated testing documentation
โโโ README.md # This file
๐ Quick Start
1. Deploy Your Own Instance
# Clone and deploy
git clone <your-repo>
cd toronto-mcp
npm install
wrangler deploy
2. Test Deployment
# Install testing dependencies
npm install tsx
# Test your deployment
npx tsx test-deployment.ts https://your-worker.workers.dev
3. Connect to Claude Desktop
Create or edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"toronto-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://toronto-mcp.s-a62.workers.dev/sse"]
}
}
}
Restart Claude Desktop and start asking questions about Toronto's open data!
๐งช Testing & Validation
Quick Connectivity Test
npx tsx test-deployment.ts https://toronto-mcp.s-a62.workers.dev
Automated Testing Framework
# Run mock tests (validates framework)
npm test
# Test specific deployment
npm run test
Tools (10)
list_datasetsList all available datasetssearch_datasetsSearch datasets by keywordget_packageRetrieve complete metadata for a datasetget_first_datastore_resource_recordsGet records from the first active resourceget_resource_recordsGet records from a specific resource by IDfind_relevant_datasetsIntelligently find and rank datasets using relevance scoringanalyze_dataset_updatesAnalyze update frequencies with categorizationanalyze_dataset_structureDeep-dive into dataset structure with field definitions and data typesget_data_categoriesExplore all available organizations and topic groupsget_dataset_insightsComprehensive analysis combining relevance ranking, update frequency, and structure insightsConfiguration
{
"mcpServers": {
"toronto-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://toronto-mcp.s-a62.workers.dev/sse"]
}
}
}