跳到主要内容

连接自定义 MCP 工具

案例演示 通过本地 MCP 查询公开 QC 表

本例通过小型本地 MCP 服务提供公开 RNA-seq QC 表。它读取固定 CSV,提供两个操作,不联网、不安装包、不修改数据。

阅读平台
选择会在章节间保留。

下载真实示例

保存到本地并记下完整路径。服务只用 Python 标准库,启动时读取 CSV;替换输入后应明确重启/重连。

在应用中添加

  1. Settings → Connectors → Add connector → Local command
  2. Display nameGSE60450 QC
  3. Command 选择 python3 — script file;Windows 也可选择 Other… 并填写实际 Python 程序路径。
  4. 展开 Advanced settings,名称/ID 填 gse60450-qc,描述为只读访问 QC 表。
  5. Arguments 第一行写脚本绝对路径,第二行写 CSV 绝对路径。每行是一个参数,路径有空格也不要额外添加 Shell 引号。
  6. 本例 Environment 留空,检查脚本后勾选 I trust this connector,点击 Add
  7. 搜索 GSE60450,确认 Connected 及 Main Agent 可用性。

实际本地 MCP 配置

/absolute/path/qc-mcp-server.py
/absolute/path/rnaseq-sample-qc.csv

这是路径模板,不能原样粘贴。若应用找不到 python3,选择 Other 填实际解释器路径;启动器必须在当前电脑存在。

工具输入与实际输出

工具输入实际内容
get_dataset_summary空对象GSE60450、来源 URL、文件名、12 行与完整样本 ID
get_sample_qcsample_id 字符串指定样本的四个 QC 指标

可以请求:

Use the connected gse60450-qc Connector. Call get_dataset_summary, then get_sample_qc for MCL1-DG_BC2CTUACXX_ACTTGA_L002_R1. Report only actual responses and preserve the CSV.

本例中,原生应用返回该样本总计数 23,227,641、零基因 8,664、检出基因 18,515、中位数 237,汇总返回 12 行,与保存的 QC 表一致。

成功连接的自定义 Connector

服务与错误行为

脚本通过 stdio 实现 MCP 初始化、ping、工具发现与调用,两个工具结构都在下载源码中。标准输出是协议通道,普通调试打印可能破坏连接,诊断应写入标准错误。

直接协议测试对 NOT_A_SAMPLE 返回了明确服务错误;同一负例在应用中显示为 connector_unavailable。正常调用已验证,业务错误的清晰传递没有验证通过,应保留区别。

不要把协议 tools/list 当业务工具交给 host.mcp。应用在连接时发现工具;尝试 gse60450-qc/tools/list 实际被拒绝为 unknown tool。使用已发现的操作名,或检查服务源码结构。

导出与迁移

选择 Actions → Export,检查格式与预览。实际导出提示两个参数为本地路径。Save configuration 只保存配置,不包含 Python、脚本或 CSV。单独复制文件、更新路径、确认本地信任,再复测两个正常操作。

失败检查
命令无法启动解释器、脚本路径及权限
CSV 不可读第二参数和真实文件位置
已连接但工具不可用Agent 分配、当前目录和操作名
输入错误必填 sample_id 和完整原始 ID,不使用绘图短标签替代
失败后出现 Connector 错误检查应用/服务详情,按情况重连
终端可用、应用不可用应用可见环境及 stdout 是否只输出协议

扩展时定义范围明确的输入,返回来源编号,验证正常、空结果和错误输入,让用户能检查每次读取或修改什么。

实现依据: ConnectorAddForm.tsx, service.ts

需要在脚本中管理同一份自定义 MCP 配置时,使用 Connector CLISDK 方法。连接测试成功只证明工具发现,仍需单独完成一个有边界的业务调用。