Open Targets MCP 服务器
使用说明
- 项目简介 该仓库实现了一个基于 MCP(Model Context Protocol)的服务端组件,能够与 MCP 客户端(如 Claude Desktop 等)通过标准的 JSON-RPC 风格请求/响应进行交互。核心功能包括:将 Open Targets Platform 的 GraphQL API 结果通过工具暴露给客户端、将查询结果以结构化方式托管为可检索的资源、以及提供可组合的 Prompts/模板来支持 LLM 的交互模式。实现了多传输协议(Streamable HTTP、SSE)的通信能力,并具备会话管理、能力声明和数据托管能力。
- 主要功能点
- MCP 服务器实现与协议对接:通过 MCP Server 框架注册工具、处理请求并返回 MCP/Code Mode 兼容响应。
- 工具 (Tools) 案例:opentargets_graphql_query、opentargets_query_sql、get_target_info、get_disease_associated_targets 等,涵盖 GraphQL 查询、数据获取和后续分析。
- 数据托管与查询能力:通过 OpenTargets 的 GraphQL API 获取数据,支持将查询结果自动托管为可分析的 SQLite 表结构,提供 query_data/ get_schema 等查询工具。
- 数据分层与分段存储:内置 Chunking/Staging 机制,将大文本和结构化数据分块存储以优化上下文/传输成本。
- 支持多传输协议:Streamable HTTP(推荐)和 SSE(向后兼容)两种传输路径。
- Durable Object 方案:通过 Cloudflare Durable Objects 实现对托管数据的分布式存储与调用隔离,确保数据安全和并发处理能力。
- 安装与运行步骤
- 依赖与构建
- 将代码部署到支持的运行环境(如 Cloudflare Workers/类似边缘计算平台),并确保可访问的 MCP 入口点。
- 部署与配置
- 部署后确保可以通过以下入口与 MCP 客户端建立连接:Streamable HTTP Endpoint /mcp,以及备用的 SSE Endpoint /sse。
- 客户端连接示例
- MCP 客户端需使用服务器的入口地址进行连接,首选 Streamable HTTP 端点,若使用 Claude Desktop 等工具则按客户端配置要求提供服务器地址。
- 使用场景
- 使用 opentargets_graphql_query 工具查询 Open Targets GraphQL API,客户端可选择将结果托管为可检索的表、并基于 query_data 提供对数据的 SQL 查询能力。
- 依赖与构建
- 服务器配置(用于 MCP 客户端连接的 JSON 配置描述,非客户端代码)
{
"server_name": "open-targets-worker",
"command": "npx",
"args": [
"mcp-remote",
"https://open-targets-mcp-server.quentincody.workers.dev/mcp"
]
// 注释说明:该配置用于 MCP 客户端在本地或开发环境通过一个命令启动对远程 MCP 服务器的连接。实际连接参数应与部署地址匹配。
}
说明:
- server_name:在 MCP 客户端侧用于标识要连接的 MCP 服务器条目名(如同示例中的 open-targets-worker)。
- command / args:用于客户端如何启动与远端 MCP 服务器的连接的指令集合。客户端需要读取此信息以便建立连接,具体执行方式以客户端实现文档为准。
- 基本使用方法
- 连接与注册工具:通过 MCP 客户端将 opentargets_graphql_query、opentargets_query_sql 等工具注册到服务器,进行 GraphQL 查询、数据托管及后续 SQL 查询。
- 数据托管与查询:在 GrafQL 查询后,若结果较大,则会自动分块托管(chunking/staging),客户端应使用 data_access_id 结合 query_data / get_schema 等工具对数据进行分析。
- 传输协议切换:如需使用 SSE 兼容,请切换到 /sse 端点;如需更稳定的连接,优先使用 /mcp 的 Streamable HTTP 传输。
- 安全与扩展性:服务端实现包含会话管理、能力声明和多种传输协议的支持,能为 LLM 应用提供安全、可扩展的上下文服务框架。