开放数据连接协议

Open Data Model Context Protocol (ODMCP) 是一个快速将开放数据连接到大型语言模型(LLM)的工具,提供开放数据访问和发布功能,适用于需要将公共数据集集成到LLM应用中的场景。

  • by OpenDataMCP
  • Python
  • 本地部署
  • 156 星标
  • 更新于
在 GitHub 查看 OpenDataMCP/OpenDataMCP

使用说明

开放数据模型上下文协议

Connect Open Data to LLMs in minutes!

看看它在行动

https://github.com/user-attachments/assets/760e1a16-add6-49a1-bf71-dfbb335e893e

我们实现了两件事:

  • 开放数据访问:直接从LLM应用程序访问许多公共数据集(从Claude开始,以后会有更多)。
  • 出版:获得社区帮助和分发网络来分发您的开放数据。让每个人都使用它!

我们该怎么做?

  • 访问:通过我们的CLI工具,只需点击2次即可在LLM应用程序中设置我们的MCP服务器(从Claude开始,请参阅路线图了解下一步)。
  • 发布:使用提供的模板和指南在开放数据MCP上快速贡献和发布。让您的数据易于发现!

用法

访问:使用开放数据MCP CLI工具访问开放数据

先决条件

如果你想在Claude Desktop应用程序客户端上使用开放数据MCP,你需要安装 克劳德桌面应用程序.

您还需要 uv 轻松运行我们的CLI和MCP服务器。

macOS
# you need to install uv through homebrew as using the install shell script 
# will install it locally to your user which make it unavailable in the Claude Desktop app context.
brew install uv
视窗
# (UNTESTED)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

开放数据MCP-CLI工具

概述
# show available commands
uvx odmcp 

# show available providers
uvx odmcp list

# show info about a provider
uvx odmcp info $PROVIDER_NAME

# setup a provider's MCP server on your Claude Desktop app
uvx odmcp setup $PROVIDER_NAME

# remove a provider's MCP server from your Claude Desktop app
uvx odmcp remove $PROVIDER_NAME
示例

瑞士SBB(火车公司)供应商的快速入门:

# make sure claude is installed
uvx odmcp setup ch_sbb

重新启动Claude,您应该会在聊天的右下角看到一个新的锤子图标。

现在,您可以向Claude询问有关SBB列车网络中断的问题,Claude将根据收集到的数据回答 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. 克隆和设置存储库

    # 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
    
  3. 安装预提交挂钩

    # Install pre-commit hooks for code quality
    pre-commit install
    

出版说明

  1. 创建新的提供者模块

    • 每个数据源都需要自己的python模块。
    • 在中创建一个新的Python模块 src/odmcp/providers/.
    • 按照模式使用描述性名称: {country_code}_{organization}.py (例如。, ch_sbb.py).
    • 从我们的开始 模板文件 作为你的基地。
  2. 实施所需组件

    • 按照模板结构定义您的工具和资源
    • 每个工具或资源应具有:
      • 明确说明其目的
      • 使用Pydantic模型定义良好的输入/输出模式
      • 正确的错误处理
      • 文档字符串
  3. 工具与资源

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

    • 在中添加测试 tests/ 目录
    • 遵循现有的测试模式(请参阅其他提供程序测试)
    • 所需测试覆盖率:
      • 基本功能
      • 边缘案例
      • 错误处理
  5. 验证

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

有关其他示例,请查看我们现有的提供商 src/odmcp/providers/ 目录。

贡献

我们有一个雄心勃勃的路线图,我们希望这个项目能够与社区一起扩展。最终目标是将数百万个数据集公开给所有LLM应用程序。

为此,我们需要您的帮助!

Discord 的中文翻译是“不和谐”或“纷争”。

我们希望围绕将开放数据引入法学硕士的挑战建立一个帮助社区。加入我们,开始聊天: https://discord.gg/QPFFZWKW

我们的核心指导方针

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

  1. 简单性和可维护性

    • 尽量减少抽象,以保持代码库的简单性和可扩展性
    • 专注于清晰、直接的实施
    • 避免不必要的复杂性
  2. 标准化/模板

    • 始终如一地遵循提供的模板和指南
    • 在供应商之间保持统一的结构
    • 使用通用模式实现类似功能
  3. 依赖项

    • 将外部依赖性保持在最低限度
    • 优先考虑单个存储库/包设置
    • 仔细评估新依赖关系的必要性
  4. 代码质量

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

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

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

  • [x] 使用指南、测试框架和贡献工作流初始化存储库
  • [x] 使用自动化的PyPI版本实现CI/CD管道
  • [x] 开发提供者模板和首次参考实现
  • [ ] 整合额外的开放数据集(积极寻找贡献者)
  • []为在资源和工具之间进行选择制定明确的指导方针
  • []开发可扩展的存储库架构,以实现长期增长
  • []扩展MCP SDK参数支持(身份验证、速率限制等)
  • []实现其他MCP协议功能(提示、资源模板)
  • []添加对stdio(SSE)之外的替代传输协议的支持
  • []部署托管MCP服务器以提高可访问性

路线图

让我们构建一个开源基础设施,让所有LLM一起访问所有开放数据!

访问权限:

  • 使开放数据可用于所有LLM应用程序(克劳德除外)
  • 以可扩展的方式使开放数据数据源可搜索
  • 通过MCP远程(SSE)和公共赞助的基础设施提供开放数据

发布:

  • 构建许多开放数据MCP服务器,使所有开放数据真正可访问(我们需要你!)。
  • 在我们这边,我们开始为瑞士构建MCP服务器~12k开放数据集!
  • 使构建开放数据MCP服务器变得更加容易

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

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

局限性

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

参考文献

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 详细信息文件