开放数据模型上下文协议
观看实际操作
https://github.com/user-attachments/assets/760e1a16-add6-49a1-bf71-dfbb335e893e
我们实现了两件事:
开放数据访问:直接从您的 LLM 应用程序访问许多公共数据集(从 Claude 开始,接下来会有更多)。
发布:利用社区帮助和分发网络来发布您的开放数据。让每个人都能使用它!
我们该怎么做呢?
访问:通过我们的 CLI 工具,只需单击两次即可在您的 LLM 应用程序中设置我们的 MCP 服务器(从 Claude 开始,请参阅路线图了解后续步骤)。
发布:使用提供的模板和指南,快速在 Open Data MCP 上贡献和发布数据。让您的数据更容易被发现!
用法
访问:使用 Open Data MCP CLI 工具访问 Open Data
先决条件
如果您想将 Open Data MCP 与 Claude Desktop 应用客户端一起使用,则需要安装Claude Desktop 应用程序。
您还需要uv
来轻松运行我们的 CLI 和 MCP 服务器。
macOS
视窗
开放数据 MCP - CLI 工具
概述
例子
瑞士 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克隆和设置存储库
# Clone the repository git clone https://github.com/OpenDataMCP/OpenDataMCP.git cd OpenDataMCP # Create and activate virtual environment uv venv source .venv/bin/activate # Unix/macOS # or .venv\Scripts\activate # Windows # Install dependencies uv sync安装预提交钩子
# Install pre-commit hooks for code quality pre-commit install
发布说明
创建新的提供程序模块
每个数据源都需要自己的 python 模块。
在
src/odmcp/providers/
中创建一个新的 Python 模块。使用以下模式��描述性名称:
{country_code}_{organization}.py
(例如,ch_sbb.py
)。以我们的 模板文件作为基础开始。
实现所需的组件
按照模板结构定义您的工具和资源
每个工具或资源应该具有:
清晰描述其目的
使用 Pydantic 模型定义明确的输入/输出模式
正确的错误处理
文档字符串
工具与资源
如果您的数据需要,请选择工具实现:
主动查询或计算
基于参数的过滤
复杂的变换
如果您的数据属于以下情况,请选择资源实施:
静态或很少变化
足够小,可以加载到内存中
简单的基于文件的内容
参考文档或查找表
参考MCP 文档获取指导
测试
在
tests/
目录中添加测试遵循现有的测试模式(参见其他提供商的测试)
所需测试覆盖率:
基本功能
边缘情况
错误处理
验证
使用我们的实验客户端测试您的 MCP 服务器:
uv run src/odmcp/providers/client.py
验证所有端点正确响应
确保错误消息有用
使用典型查询负载检查性能
有关其他示例,请检查src/odmcp/providers/
目录中现有的提供程序。
贡献
我们制定了雄心勃勃的路线图,希望这个项目能够与社区一起发展壮大。最终目标是将数百万个数据集公开提供给所有法学硕士(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)
发布:
构建许多开放数据 MCP 服务器,使所有开放数据真正可访问(我们需要您!)。
我们这边正开始为瑞士构建 MCP 服务器~12k 开放数据集!
让构建开放数据 MCP 服务器变得更加容易
我们处于非常早期的阶段,缺乏可用的数据集是目前的瓶颈。请自便!创建您的开放数据多方协作平台 (MCP) 服务器,并让用户在其法学硕士 (LLM) 申请中使用它。让我们将法学硕士 (LLM) 与来自政府、公共实体、公司和非政府组织的数百万个开放数据集连接起来!
随着 Anthropic 的 MCP 的发展,我们将调整和升级开放数据 MCP。
限制
Open Data MCP 服务器提供的所有数据都应该是开放的。
请遵守数据提供商的数据许可。
商业应用中必须引用我们的许可证。
参考
对Anthropic 的开源 MCP发布支持此类举措表示赞赏。
执照
该项目采用 MIT 许可证 - 有关详细信息,请参阅LICENSE文件
Related MCP Servers
- -securityAlicense-qualityEnables integration with DuckDuckGo search capabilities for LLMs, supporting comprehensive web search, regional filtering, result types, and safe browsing with caching and customizable search parameters.Last updated -303MIT License
- -securityFlicense-qualityProvides read-only access to MongoDB databases for LLMs to inspect collection schemas and execute aggregation pipelines.Last updated -226
- AsecurityAlicenseAqualityEnhances LLM capabilities with location-based services and geospatial data, enabling users to geocode addresses, find nearby points of interest, get directions, optimize meeting points, and analyze neighborhoods.Last updated -12117MIT License
- -securityAlicense-qualityEnhances LLM applications with deep autonomous web research capabilities, delivering higher quality information than standard search tools by exploring and validating numerous trusted sources.Last updated -249MIT License