modelscope·@pickleton89/mutation-clinical-trial-matching-mcp
暂无描述。
一个 Model Context Protocol (MCP) 服务器,使 Claude Desktop 能够基于突变在 clincialtrials.gov 上搜索匹配项。
目前处于开发的第一阶段。它可以根据 Claude 查询中提供的突变来检索试验。但是,仍然存在一些 bug,并且需要进一步的改进和添加功能。
该项目遵循 Agentic 编码原则,创建了一个将 Claude Desktop 与 clinicaltrials.gov API 集成的系统。该服务器允许进行关于基因突变的自然语言查询,并返回相关临床试验的摘要信息。
mermaid flowchart LR Claude[Claude Desktop] <-->|MCP Protocol| Server[MCP Server]
subgraph Flow[PocketFlow]
QueryNode[Query Node] -->|trials_data| SummarizeNode[Summarize Node]
end
Server -->|mutation| Flow
QueryNode -->|API Request| API[Clinicaltrials.gov API]
API -->|Trial Data| QueryNode
Flow -->|summary| Server
Server -->|Return| Claude
流程中的每个节点都遵循 PocketFlow 节点模式,具有 prep、exec 和 post 方法:
该项目按照 Agentic 编码范式组织:
需求(由人类主导):
流程设计(协作):
实用工具(协作):
clinicaltrials/query.py:处理对 clinicaltrials.gov 的 API 调用utils/call_llm.py:与 Claude 工作的实用工具节点设计(由 AI 主导):
utils/node.py:实现具有 prep/exec/post 模式的基类 Node 和 BatchNode 类clinicaltrials/nodes.py:定义用于查询和总结的专门节点clinicaltrials_mcp_server.py:协调流程执行实现(由 AI 主导):
clinicaltrials_mcp_server.py)主服务器实现了 Model Context Protocol 接口,使用官方 Python SDK。它:
clinicaltrials/query.py)负责查询 clinicaltrials.gov API,包括:
llm/summarize.py)处理并格式化临床试验数据:
该项目实现了 PocketFlow 节点模式,为构建 AI 工作流提供了一种模块化、可维护的方法:
utils/node.py)prep、exec 和 post 方法的基类,用于处理数据clinicaltrials/nodes.py)QueryTrialsNode: python
def prep(self, shared): return shared["mutation"] def exec(self, mutation): return query_clinical_trials(mutation) def post(self, shared, mutation, result): shared["trials_data"] = result shared["studies"] = result.get("studies", []) return "summarize"
SummarizeTrialsNode: python
def prep(self, shared): return shared["studies"] def exec(self, studies): return format_trial_summary(studies) def post(self, shared, studies, summary): shared["summary"] = summary return None # 流程结束### 流程执行
MCP 服务器创建并运行流程:
python
query_node = QueryTrialsNode() summarize_node = SummarizeTrialsNode()
flow = Flow(start=query_node) flow.add_node("summarize", summarize_node)
shared = {"mutation": mutation} result = flow.run(shared)
这种模式将准备、执行和后处理分开,使代码更易于维护和测试。更多细节请参阅设计文档。
使用 uv 安装依赖项:
uv pip install -r requirements.txt
配置 Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json 应该已经设置好启动 Claude Desktop 并提出如下问题:
通过提问来使用资源:
您可以将此项目配置为 Claude Desktop MCP 工具。在您的配置中使用路径占位符,并用实际路径替换它们:
json "mutation-clinical-trials-mcp": { "command": "{PATH_TO_VENV}/bin/python", "args": [ "{PATH_TO_PROJECT}/clinicaltrials_mcp_server.py" ], "description": "将基因突变与相关的临床试验匹配,并提供摘要。" }
路径变量:
{PATH_TO_VENV}: 您虚拟环境目录的完整路径。{PATH_TO_PROJECT}: 包含您项目文件的目录的完整路径。安装说明:
将仓库克隆到本地机器。
如果还没有安装 uv,请先安装: bash curl -LsSf https://astral.sh/uv/install.sh | sh # macOS/Linux
iwr -useb https://astral.sh/uv/install.ps1 | iex # Windows PowerShell
创建一个虚拟环境并在一步中安装依赖项: bash uv venv .venv uv pip install -r requirements.txt
在需要时激活虚拟环境: bash source .venv/bin/activate # macOS/Linux .venvScriptsactivate # Windows
确定您的虚拟环境和项目目录的完整路径。
使用这些特定路径更新您的配置。
示例:
在 macOS/Linux 上: json "command": "/Users/username/projects/mutation_trial_matcher/.venv/bin/python"
在 Windows 上: json "command": "C:\Users\username\projects\mutation_trial_matcher\.venv\Scripts\python.exe"
查找路径提示:
which python (macOS/Linux)where python (Windows, 在激活 venv 后)clinicaltrials_mcp_server.py 的目录的完整路径。有关计划中的增强功能和未来工作的全面列表,请参阅 future_work.md 文档。
该项目依赖于以下关键依赖项:
pocketflow>=0.0.1) - 用于构建基于 Node 模式的模块化 AI 工作流的框架mcp[cli]>=1.0.0) - 用于构建 Claude Desktop 工具的官方 Model Context Protocol SDKrequests==2.31.0) - 用于向 clinicaltrials.gov 发送 API 请求的 HTTP 库python-dotenv==1.1.0) - 用于从 .env 文件加载环境变量所有依赖项都可以按照安装说明使用 uv 进行安装。
如果 Claude Desktop 与 MCP 服务器断开连接:
~/Library/Logs/Claude/mcp-server-clinicaltrials-mcp.log这些AI助手在将高层次的设计需求转化为功能性代码、API集成以及根据最佳实践来构建项目方面发挥了重要作用。
.windsurfrules 字符限制来自模板仓库的PocketFlow .windsurfrules 文件包含了全面的项目规则,但Windsurf对规则文件设定了6,000字符的限制。这意味着你不能直接在项目中包含整套指南,重要的规则可能会被省略或截断。
为了解决这个问题,有以下两种推荐方案:
你可以利用Windsurf的记忆功能来存储完整的PocketFlow规则集,即使它们超过了.windsurfrules文件的限制。这种方法允许你在与Windsurf对话时引用所有项目惯例和最佳实践,确保不会因为截断而丢失任何内容。有关逐步说明及内存与规则文件之间的详细比较,请参阅 docs/memory_vs_windsurfrules.md。
重要提示:本项目基于PocketFlow-Template-Python仓库,该仓库包含一个全面的.windsurfrules文件。然而,Windsurf对规则文件设置了6,000字符的限制,这意味着无法将完整的PocketFlow指南完全加载到Windsurf的记…
与Google地图集成,以在紧急情况下定位和评估医疗设施,帮助用户根据医疗需求、紧急程度和设施能力找到合适的医院和诊所。
一个模型上下文协议服务器,为语言模型提供对Strava API数据的访问,使它们能够查询和分析Strava上的运动员活动。
一个连接性测试服务器,通过克劳德模型上下文协议支持DICOM网络操作(如C-ECHO),并支持节点配置管理。
一个模型上下文协议服务器,通过使用SMART on FHIR将人工智能工具与电子健康记录连接起来,允许对兼容电子健康记录中的患者数据进行安全的搜索、查询和分析。
提供了对ClinicalTrials.gov AACT数据库的访问, enables分析临床试验数据、跟踪发展趋 势以及生成治疗景观洞察。
暂无描述。