项目介绍
开放数据模型上下文协议

<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="包版本">
</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="许可证">
</a>
<a href="https://pepy.tech/badge/odmcp" target="_blank">
<img src="https://pepy.tech/badge/odmcp?cache-control=no-cache" alt="下载量">
</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="星标数">
</a>
</p>
实际应用
https://github.com/user-attachments/assets/760e1a16-add6-49a1-bf71-dfbb335e893e
我们实现了两件事:
- 开放数据访问:从你的LLM应用程序中直接访问许多公共数据集(从Claude开始,更多即将推出)。
- 发布:获得社区帮助和分发网络来分发你的开放数据。让每个人都能使用它!
我们是如何做到的?
- 访问:通过我们的CLI工具在你的LLM应用程序中点击两次即可设置我们的MCP服务器(从Claude开始,参见路线图了解下一步计划)。
- 发布:使用提供的模板和指南快速贡献并发布到开放数据MCP。让你的数据易于发现!
使用方法
访问:使用开放数据MCP CLI工具访问开放数据
前提条件
如果你想使用Claude桌面应用程序客户端与开放数据MCP一起工作,你需要安装Claude桌面应用程序。
你还需要安装uv以便轻松运行我们的CLI和MCP服务器。
macOS
# 你需要通过homebrew安装uv,因为使用安装shell脚本会将其安装到本地用户,这使得它在Claude桌面应用程序环境中不可用。
brew install uv
Windows
# (未经测试)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
开放数据MCP - CLI工具
概览
# 显示可用命令
uvx odmcp
# 显示可用提供者
uvx odmcp list
# 显示关于提供者的详细信息
uvx odmcp info $PROVIDER_NAME
# 在你的Claude桌面应用程序中设置一个提供者的MCP服务器
uvx odmcp setup $PROVIDER_NAME
# 从你的Claude桌面应用程序中移除一个提供者的MCP服务器
uvx odmcp remove $PROVIDER_NAME
示例
瑞士SBB(铁路公司)提供者的快速入门:
# 确保已安装claude
uvx odmcp setup ch_sbb
重启Claude,你应该会在聊天窗口右下角看到一个新的锤子图标。
你现在可以向Claude询问有关SBB铁路网络中断的问题,它将基于data.sbb.ch收集的数据进行回答。
发布:通过构建和发布公共数据集来贡献
前提条件
-
安装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 install
发布说明
-
创建新的提供者模块
- 每个数据源都需要自己的Python模块。
- 在
src/odmcp/providers/目录下创建一个新的Python模块。
- 使用描述性名称,遵循模式:
{国家代码}_{组织}.py(例如,ch_sbb.py)。
- 以我们的模板文件为基础。
-
实现所需组件
- 根据模板结构定义你的工具及资源
- 每个工具或资源应有:
- 清晰地描述其目的
- 使用Pydantic模型定义良好的输入/输出模式
- 合适的错误处理
- 文档字符串
-
工具 vs 资源
- 如果你的数据需要:
- 主动查询或计算
- 参数化过滤
- 复杂转换
请选择工具实现。
- 如果你的数据是:
- 静态或很少变化
- 小到足以加载到内存中
- 简单的基于文件的内容
- 参考文档或查找表
请选择资源实现。
- 参考MCP文档获取指导。
-
测试
- 在
tests/目录下添加测试
- 遵循现有的测试模式(查看其他提供者的测试)
- 必要的测试覆盖率包括:
-
验证
- 使用我们的实验客户端测试你的MCP服务器:
uv run src/odmcp/providers/client.py
- 验证所有端点响应正确
- 确保错误消息有用
- 使用典型查询负载检查性能
对于其他示例,请检查src/odmcp/providers/目录下的现有提供者。
贡献
我们有一个雄心勃勃的路线图,并希望这个项目能够随着社区的发展而扩展。最终目标是使数百万的数据集对所有LLM应用程序公开可用。
为此我们需要您的帮助!
Discord
我们希望围绕将开放数据带到LLM的挑战建立一个互助社区。加入我们的Discord开始聊天:https://discord.gg/QPFFZWKW
我们的核心准则
由于我们的目标规模,我们首先希望保持事情简单且实用。与社区一起解决出现的问题。
-
简洁性和可维护性
- 最小化抽象以保持代码库简单和可扩展
- 关注清晰、直接的实现
- 避免不必要的复杂性
-
标准化 / 模板
- 一致地遵循提供的模板和准则
- 维持提供者之间的统一结构
- 对于相似的功能使用通用模式
-
依赖项
- 尽可能减少外部依赖项
- 优先考虑单一仓库/包设置
- 认真评估新依赖项的必要性
-
代码质量
- 使用ruff格式化代码
- 使用pytest保持全面的测试覆盖
- 遵循一致的编码风格
-
类型安全
- 在整个过程中使用Python类型提示
- 利用Pydantic模型进行API请求/响应验证
- 确保数据处理中的类型安全
战术主题(当前优先事项)
路线图
让我们共同建设开源基础设施,使所有LLM都能够访问所有开放数据!
访问:
- 使开放数据对所有LLM应用程序可用(超越Claude)
- 以可扩展的方式搜索开放数据源
- 通过MCP远程(SSE)提供开放数据,由公共资助的基础设施支持
发布:
- 构建众多开放数据MCP服务器,使所有开放数据真正可访问(我们需要您!)
- 我们正在开始构建瑞士的MCP服务器,约12K开放数据集!
- 进一步简化构建开放数据MCP服务器的过程
我们还处于早期阶段,目前数据集的缺乏是一个瓶颈。自助吧!创建你的开放数据MCP服务器,并让用户从他们的LLM应用程序中使用它。让我们将LLM连接到政府、公共实体、公司和非政府组织的数百万开放数据集中!
随着Anthropic的MCP发展,我们将适应并升级开放数据MCP。
限制
- 由开放数据MCP服务器提供的所有数据都应该是开放的。
- 请遵守数据提供商的数据许可。
- 商业应用必须引用我们的许可证。
参考资料
许可证
本项目采用MIT许可证 - 详情请参阅LICENSE文件。