Open Data Model Context Protocol
直接从你的 LLM 应用程序访问许多公共数据集。
README
开放数据模型上下文协议
<p align="center">
<em>几分钟内将开放数据连接到 LLM!</em>
</p>
<p align="center">
<a href="https://github.com/OpenDataMCP/OpenDataMCP/actions/workflows/ci.yml" target="_blank">
<img src="https://github.com/OpenDataMCP/OpenDataMCP/actions/workflows/ci.yml/badge.svg" alt="CI">
</a>
<a href="https://pypi.org/project/odmcp" target="_blank">
<img src="https://img.shields.io/pypi/v/odmcp?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
<a href="https://github.com/OpenDataMCP/OpenDataMCP/blob/main/LICENSE" target="_blank">
<img src="https://img.shields.io/github/license/OpenDataMCP/OpenDataMCP.svg" alt="License">
</a>
<a href="https://pepy.tech/badge/odmcp" target="_blank">
<img src="https://pepy.tech/badge/odmcp?cache-control=no-cache" alt="License">
</a>
<a href="https://github.com/OpenDataMCP/OpenDataMCP/stargazers" target="_blank">
<img src="https://img.shields.io/github/stars/OpenDataMCP/OpenDataMCP.svg?cache-control=no-cache" alt="Stars">
</a>
</p>
实际应用
https://github.com/user-attachments/assets/760e1a16-add6-49a1-bf71-dfbb335e893e
我们实现了两件事:
- 开放数据访问:直接从您的 LLM 应用程序访问许多公共数据集(从 Claude 开始,更多即将推出)。
- 发布:获得社区帮助和分发网络来分发您的开放数据。让每个人都使用它!
我们如何做到这一点?
- 访问:通过我们的 CLI 工具,只需点击 2 次即可在您的 LLM 应用程序中设置我们的 MCP 服务器(从 Claude 开始,请参阅路线图了解后续步骤)。
- 发布:使用提供的模板和指南快速贡献和发布到 Open Data MCP。让您的数据易于发现!
用法
<u>访问</u>:使用 Open Data MCP CLI 工具访问开放数据
前提条件
如果您想将 Open Data MCP 与 Claude Desktop 应用程序客户端一起使用,您需要安装 Claude Desktop 应用程序。
您还需要 uv 才能轻松运行我们的 CLI 和 MCP 服务器。
macOS
# 您需要通过 homebrew 安装 uv,因为使用安装 shell 脚本
# 会将其本地安装到您的用户,这使得它在 Claude Desktop 应用程序上下文中不可用。
brew install uv
Windows
# (未测试)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Open Data MCP - CLI 工具
概述
# 显示可用命令
uvx odmcp
# 显示可用提供商
uvx odmcp list
# 显示有关提供商的信息
uvx odmcp info $PROVIDER_NAME
# 在您的 Claude Desktop 应用程序上设置提供商的 MCP 服务器
uvx odmcp setup $PROVIDER_NAME
# 从您的 Claude Desktop 应用程序中删除提供商的 MCP 服务器
uvx odmcp remove $PROVIDER_NAME
示例
瑞士 SBB(火车公司)提供商的快速入门:
# 确保已安装 claude
uvx odmcp setup ch_sbb
重启 Claude,您应该在聊天窗口的右下角看到一个新的锤子图标。
现在您可以向 Claude 询问有关 SBB 火车网络中断的问题,它将根据 data.sbb.ch 上收集的数据回答。
<u>发布</u>:通过构建和发布公共数据集来贡献
前提条件
-
安装 UV 包管理器
# macOS brew install uv # Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Linux/WSL curl -LsSf https://astral.sh/uv/install.sh | sh -
克隆和设置存储库
# 克隆存储库 git clone https://github.com/OpenDataMCP/OpenDataMCP.git cd OpenDataMCP # 创建并激活虚拟环境 uv venv source .venv/bin/activate # Unix/macOS # 或 .venv\Scripts\activate # Windows # 安装依赖项 uv sync -
安装 Pre-commit 钩子
# 安装 pre-commit 钩子以保证代码质量 pre-commit install
发布说明
-
创建一个新的提供商模块
- 每个数据源都需要自己的 python 模块。
- 在
src/odmcp/providers/中创建一个新的 Python 模块。 - 使用描述性名称,遵循模式:
{country_code}_{organization}.py(例如,ch_sbb.py)。 - 从我们的 模板文件 作为您的基础开始。
-
实现所需的组件
- 按照模板结构定义您的工具和资源
- 每个工具或资源应具有:
- 对其用途的清晰描述
- 使用 Pydantic 模型定义良好的输入/输出模式
- 正确的错误处理
- 文档字符串
-
工具 vs 资源
- 如果您的数据需要以下内容,请选择 Tool 实现:
- 主动查询或计算
- 基于参数的过滤
- 复杂的转换
- 如果您的数据是以下内容,请选择 Resource 实现:
- 静态或很少更改
- 足够小,可以加载到内存中
- 简单的基于文件的内容
- 参考文档或查找表
- 参考 MCP 文档 以获得指导
- 如果您的数据需要以下内容,请选择 Tool 实现:
-
测试
- 在
tests/目录中添加测试 - 遵循现有的测试模式(请参阅其他提供商测试)
- 需要的测试覆盖率:
- 基本功能
- 边缘情况
- 错误处理
- 在
-
验证
- 使用我们的实验客户端测试您的 MCP 服务器:
uv run src/odmcp/providers/client.py - 验证所有端点是否正确响应
- 确保错误消息有帮助
- 检查典型查询负载的性能
- 使用我们的实验客户端测试您的 MCP 服务器:
有关其他示例,请查看 src/odmcp/providers/ 目录中的现有提供商。
贡献
我们有一个雄心勃勃的路线图,我们希望这个项目能够与社区一起发展。 最终目标是让数百万个数据集可供所有 LLM 应用程序公开访问。
为此,我们需要您的帮助!
Discord
我们希望围绕将开放数据引入 LLM 的挑战建立一个互助社区。 加入我们的 discord 开始聊天:https://discord.gg/QPFFZWKW
我们的核心准则
由于我们的目标规模,我们希望首先保持简单和务实。 随着问题的出现,与社区一起解决。
-
简单性和可维护性
- 最小化抽象以保持代码库简单且可扩展
- 专注于清晰、直接的实现
- 避免不必要的复杂性
-
标准化/模板
- 始终如一地遵循提供的模板和指南
- 在提供商之间保持统一的结构
- 对类似功能使用通用模式
-
依赖项
- 尽量减少外部依赖项
- 优先考虑单个存储库/包设置
- 仔细评估新依赖项的必要性
-
代码质量
- 使用 ruff 格式化代码
- 使用 pytest 维护全面的测试覆盖率
- 遵循一致的代码风格
-
类型安全
- 在整个过程中使用 Python 类型提示
- 利用 Pydantic 模型进行 API 请求/响应验证
- 确保数据处理中的类型安全
战术主题(我们当前的优先级)
- [x] 使用指南、测试框架和贡献工作流程初始化存储库
- [x] 使用自动 PyPI 发布实现 CI/CD 管道
- [x] 开发提供商模板和第一个参考实现
- [ ] 集成其他开放数据集(积极寻找贡献者)
- [ ] 建立明确的指南,用于选择资源和工具
- [ ] 开发可扩展的存储库架构以实现长期增长
- [ ] 扩展 MCP SDK 参数支持(身份验证、速率限制等)
- [ ] 实现其他 MCP 协议功能(提示、资源模板)
- [ ] 添加对 stdio (SSE) 之外的替代传输协议的支持
- [ ] 部署托管的 MCP 服务器以提高可访问性
路线图
让我们构建开源基础设施,让所有 LLM 能够一起访问所有开放数据!
访问:
- 使开放数据可用于所有 LLM 应用程序(超越 Claude)
- 以可扩展的方式使开放数据数据源可搜索
- 通过 MCP 远程(SSE)通过公共赞助的基础设施提供开放数据
发布:
- 构建许多 Open Data MCP 服务器,使所有 Open Data 真正可访问(我们需要您!)。
- 在我们这边,我们开始为瑞士 ~12k 开放数据集构建 MCP 服务器!
- 使构建 Open Data MCP 服务器更加容易
我们还处于早期阶段,目前缺乏可用的数据集是瓶颈。 帮助自己! 创建您的 Open Data MCP 服务器,并让用户从他们的 LLM 应用程序中使用它。 让我们将 LLM 连接到来自政府、公共实体、公司和 NGO 的数百万个开放数据集!
随着 Anthropic 的 MCP 的发展,我们将调整和升级 Open Data MCP。
限制
- Open Data MCP 服务器提供的所有数据都应该是开放的。
- 请遵守数据提供商的数据许可证。
- 我们的许可证必须在商业应用中引用。
参考
- 感谢 Anthropic 的开源 MCP 发布,从而实现了像这样的倡议。
许可证
本项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。