StatCan Web Data Service MCP Server

StatCan Web Data Service MCP Server

一个使用加拿大统计局 (StatCAN) 数据的 MCP 服务器

Aryan-Jhaveri

研究与数据
访问服务器

README

加拿大统计局网络数据服务 MCP 服务器

<div align="center"> <img src="./assets/StatCan-Header.png" alt="加拿大统计局 Logo" width="600"/> </div>

一个 MCP (模型上下文协议) 服务器,提供对加拿大统计局网络数据服务 (Web Data Service) 的访问,使 AI 助手能够通过自然语言发现、探索、分析和引用加拿大统计数据。

项目概述

该服务器解决了访问加拿大统计局网络数据服务 (WDS) API 的几个技术挑战:

  1. API 格式要求: 确定了加拿大统计局 WDS API 端点的正确格式,以解决 406 错误
  2. 弹性数据访问: 实现了多层缓存和回退,以应对 API 限制
  3. 增强的元数据: 为统计解释和正确引用提供丰富的上下文
  4. 分析能力: 包括统计分析、可视化和预测功能
  5. MCP 集成: 与其他 MCP 服务器连接以扩展功能

特性

  • 🔍 数据集发现: 按关键词、主题或地理位置搜索和浏览加拿大统计局数据集
  • 📊 数据检索: 提取时间序列数据,并为关键向量提供正确的格式
  • 📝 元数据探索: 访问有关数据集结构和内容的详细信息
  • 💾 持久存储: 使用 SQLite 后端存储数据集以供将来使用
  • 📊 高级分析: 执行全面的统计分析、趋势检测、季节性分析和预测
  • 📈 可视化: 通过与 Vega-Lite 的集成生成数据可视化
  • 📑 引用: 为加拿大统计局数据生成格式正确的引用
  • 🖼️ 图表引用: 跟踪和引用从加拿大统计局数据创建的图表
  • 🔄 API 弹性: 强大的错误处理,并为 API 限制提供回退

当前限制

加拿大统计局 WDS API 有几个限制,此服务器解决了这些限制:

  • 数据检索约束: 尽管格式正确,但某些 API 端点仍然存在问题
  • 格式敏感性: 向量 ID 必须是数字,没有 'v' 前缀,并且有效负载必须是数组格式
  • 坐标访问: 基于向量的查询比基于坐标的查询更可靠
  • 性能问题: 对于大型请求或高峰时段,某些 API 调用可能会超时
  • 速率限制: 大量查询可能会受到加拿大统计局 WDS API 的限制

当前的实现使用以下策略来解决这些限制:

  • 元数据、向量和立方体级别的多层缓存系统
  • 常见统计指标的本地回退
  • 自动格式调整和指数退避重试
  • 当 API 端点失败时,优雅地降级到缓存数据

有关详细信息,请参见 docs/implementation_status.mddocs/api_connection_guide.md

快速开始

# 克隆存储库
git clone https://github.com/yourusername/mcp-statcan.git
cd mcp-statcan

# 创建一个虚拟环境
python -m venv venv
source venv/bin/activate  # 在 Windows 上: venv\Scripts\activate

# 安装依赖
pip install -e .

# 启动 MCP 服务器
python -m src

依赖

pip install sqlitedict aiohttp mcp pydantic python-dotenv pandas numpy

与 Claude 一起使用

  1. 打开 Claude 桌面应用程序
  2. 转到设置 > MCP 服务器
  3. 添加一个新服务器,配置如下:
    • 名称:StatCan Data
    • 命令:path/to/venv/bin/python -m src
  4. 开始与 Claude 聊天,询问有关加拿大统计数据的问题!

可用的示例查询

以下是一些在当前实现中可靠工作的查询:

基本数据发现

  • "查找有关加拿大消费者价格的数据集"
  • "你们有哪些关于就业的数据集?"
  • "显示最新的 CPI 数据"

基于向量的数据检索

  • "获取 CPI 向量 41690973 的数据"
  • "从向量 21581063 检索 GDP 数据"
  • "获取就业向量 111955426 的最新值"

分析和可视化

  • "生成过去 5 年 CPI 数据的折线图"
  • "分析过去 10 个季度的 GDP 趋势"
  • "创建失业率变化的图表"

引用

  • "为消费者价格指数数据集生成引用"
  • "我应该如何以 APA 格式引用加拿大统计局的 GDP 数据?"
  • "为劳动力调查创建一个参考"

测试

要验证 API 客户端是否正常工作:

python -m tests.api.api_connection_steps

这将运行以下步骤的逐步测试:

  • API 连接性
  • 元数据检索
  • 向量数据访问
  • 格式要求

项目结构

  • /src - 核心服务器实现
  • /docs - 文档和指南
  • /tests - API 和功能的测试套件
  • /docs/references - API 规范和代码集

许可证

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参见 LICENSE 文件。

致谢

该项目使用来自 加拿大统计局 的数据,通过他们的 网络数据服务 API 访问。 它不隶属于加拿大统计局,也没有得到加拿大统计局的认可。

加拿大统计局的徽标仅用于提供信息,以指示数据来源。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python