返回市场
开放数据MCP

开放数据MCP

作者:OpenDataMCP141 星标更新:2024-12-21

项目介绍

开放数据模型上下文协议

vc3598_Hyper-realistic_Swiss_landscape_pristine_SBB_red_train_p_40803c2e-43f5-410e-89aa-f6bdcb4cd089

<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收集的数据进行回答。

发布:通过构建和发布公共数据集来贡献

前提条件

  1. 安装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
    
  2. 克隆并设置仓库

    # 克隆仓库
    git clone https://github.com/OpenDataMCP/OpenDataMCP.git
    cd OpenDataMCP
    
    # 创建并激活虚拟环境
    uv venv
    source .venv/bin/activate  # Unix/macOS
    # 或
    .venv\Scripts\activate     # Windows
    
    # 安装依赖项
    uv sync
    
  3. 安装预提交钩子

    # 安装预提交钩子以保证代码质量
    pre-commit install
    

发布说明

  1. 创建新的提供者模块

    • 每个数据源都需要自己的Python模块。
    • src/odmcp/providers/目录下创建一个新的Python模块。
    • 使用描述性名称,遵循模式:{国家代码}_{组织}.py(例如,ch_sbb.py)。
    • 以我们的模板文件为基础。
  2. 实现所需组件

    • 根据模板结构定义你的工具及资源
    • 每个工具或资源应有:
      • 清晰地描述其目的
      • 使用Pydantic模型定义良好的输入/输出模式
      • 合适的错误处理
      • 文档字符串
  3. 工具 vs 资源

    • 如果你的数据需要:
      • 主动查询或计算
      • 参数化过滤
      • 复杂转换 请选择工具实现。
    • 如果你的数据是:
      • 静态或很少变化
      • 小到足以加载到内存中
      • 简单的基于文件的内容
      • 参考文档或查找表 请选择资源实现。
    • 参考MCP文档获取指导。
  4. 测试

    • tests/目录下添加测试
    • 遵循现有的测试模式(查看其他提供者的测试)
    • 必要的测试覆盖率包括:
      • 基础功能
      • 边缘案例
      • 错误处理
  5. 验证

    • 使用我们的实验客户端测试你的MCP服务器:uv run src/odmcp/providers/client.py
    • 验证所有端点响应正确
    • 确保错误消息有用
    • 使用典型查询负载检查性能

对于其他示例,请检查src/odmcp/providers/目录下的现有提供者。

贡献

我们有一个雄心勃勃的路线图,并希望这个项目能够随着社区的发展而扩展。最终目标是使数百万的数据集对所有LLM应用程序公开可用。

为此我们需要您的帮助!

Discord

我们希望围绕将开放数据带到LLM的挑战建立一个互助社区。加入我们的Discord开始聊天:https://discord.gg/QPFFZWKW

我们的核心准则

由于我们的目标规模,我们首先希望保持事情简单且实用。与社区一起解决出现的问题。

  1. 简洁性和可维护性

    • 最小化抽象以保持代码库简单和可扩展
    • 关注清晰、直接的实现
    • 避免不必要的复杂性
  2. 标准化 / 模板

    • 一致地遵循提供的模板和准则
    • 维持提供者之间的统一结构
    • 对于相似的功能使用通用模式
  3. 依赖项

    • 尽可能减少外部依赖项
    • 优先考虑单一仓库/包设置
    • 认真评估新依赖项的必要性
  4. 代码质量

    • 使用ruff格式化代码
    • 使用pytest保持全面的测试覆盖
    • 遵循一致的编码风格
  5. 类型安全

    • 在整个过程中使用Python类型提示
    • 利用Pydantic模型进行API请求/响应验证
    • 确保数据处理中的类型安全

战术主题(当前优先事项)

  • 初始化包含准则、测试框架和贡献流程的仓库
  • 实现带有自动化PyPI发布的CI/CD流水线
  • 开发提供者模板和第一个参考实现
  • 集成额外的开放数据集(积极寻求贡献者)
  • 建立选择资源和工具之间的明确准则
  • 开发支持长期增长的可扩展仓库架构
  • 扩展MCP SDK参数支持(认证、速率限制等)
  • 实现额外的MCP协议特性(提示、资源模板)
  • 添加对stdio之外的替代传输协议的支持(SSE)
  • 部署托管的MCP服务器以提高可访问性

路线图

让我们共同建设开源基础设施,使所有LLM都能够访问所有开放数据!

访问:

  • 使开放数据对所有LLM应用程序可用(超越Claude)
  • 以可扩展的方式搜索开放数据源
  • 通过MCP远程(SSE)提供开放数据,由公共资助的基础设施支持

发布:

  • 构建众多开放数据MCP服务器,使所有开放数据真正可访问(我们需要您!)
  • 我们正在开始构建瑞士的MCP服务器,约12K开放数据集!
  • 进一步简化构建开放数据MCP服务器的过程

我们还处于早期阶段,目前数据集的缺乏是一个瓶颈。自助吧!创建你的开放数据MCP服务器,并让用户从他们的LLM应用程序中使用它。让我们将LLM连接到政府、公共实体、公司和非政府组织的数百万开放数据集中!

随着Anthropic的MCP发展,我们将适应并升级开放数据MCP。

限制

  • 由开放数据MCP服务器提供的所有数据都应该是开放的。
  • 请遵守数据提供商的数据许可。
  • 商业应用必须引用我们的许可证。

参考资料

许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。