跳转到主要内容

概览

ChatGPT Apps 通过与外部 MCP 服务器对话来扩展 ChatGPT 的能力。Mirobody 开箱即是一个支持 OAuth 的 HTTP Remote MCP server —— 你需要做的,仅仅是把一个公网 HTTPS URL 指向你的 Mirobody 实例。

工作原理

Mirobody 的 MCP 服务器是一个一等的 HTTP 服务。当你在配置里设置 MCP_PUBLIC_URL 时,Mirobody 会把它作为其 /mcp 端点对外可达的 URL。ChatGPT(或任何远程 MCP 客户端)连过来后走 OAuth 验证,然后就可以开始调工具了。

前置要求

你需要一个能转发到 Mirobody 实例的公网 HTTPS URL。独立二进制监听 HTTP_HOST:HTTP_PORT(默认 0.0.0.0:8080)。
1

确认 Mirobody 正在运行

本地 http://localhost:8080/mcp 应该返回 MCP JSON。可用以下命令验证:
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
2

选择公网 URL 方案

方案 A —— 临时演示(隧道到笔记本):
# ngrok
ngrok http 8080

# 或者 cloudflared
cloudflared tunnel --url http://localhost:8080
用得到的 HTTPS URL(如 https://abc123.ngrok.io)。方案 B —— 生产部署(自己的域名): 在反向代理(Caddy / nginx / 托管 LB)上做 TLS 终止,转发到你的 Mirobody 实例。
3

设置 MCP_PUBLIC_URL

config.yml 里加:
MCP_PUBLIC_URL: "https://abc123.ngrok.io/mcp"   # or your production domain + /mcp
重启 Mirobody。公网 MCP 端点现在就是 https://abc123.ngrok.io/mcp
这个 URL 等同于秘密 —— 拿到它的人都可以尝试 OAuth 登录你的 Mirobody 实例。

创建 ChatGPT App

MCP_PUBLIC_URL 配好、隧道/域名可达之后,去 ChatGPT 注册 App:
1

进入 ChatGPT Apps

打开 ChatGPT,进入 Apps 页面。你会看到已有的 App 以及新增入口。
ChatGPT Apps main interface showing available apps
2

启用开发者模式

点击”创建你自己的”或进入开发者模式,开始构建自定义 App。这会打开 App 创建界面,你可以在其中配置到 Mirobody 的连接。
ChatGPT Developer Mode for creating custom apps
3

填入 MCP 端点

在 App 配置里:
  1. App 名称:例如 “Mirobody”
  2. MCP 端点:你的 MCP_PUBLIC_URL/mcp(如 https://abc123.ngrok.io/mcp
  3. 描述(可选):简述这个 App 能做什么
  4. 测试连接:ChatGPT 会校验连通性并发现工具
Adding a new ChatGPT app with MCP endpoint configuration
ChatGPT 会自动发现你 Mirobody 实例中注册的每一个工具 —— 九个内置工具 外加你在 res/mcp_tools/ 中添加并重新构建的任何 C++ 工具。
4

OAuth 登录

首次调用时 ChatGPT 会跳转到 Mirobody 内置的 OAuth 登录页。登录一次即可,token 会被复用整个 ChatGPT 会话。
5

开始使用

连接好后,这个 ChatGPT 会话可以:
  • 通过 family_health 读取用户的健康记录(FHIR Observation
  • 通过 list_files / read_file 列出并读取用户上传的文件
  • 通过 remember / recall_memory 存储与检索长期记忆
  • 调用你在 res/mcp_tools/ 中添加并重新构建的任何自定义工具
你的 ChatGPT App 已接入 Mirobody。

可用能力

接入后,ChatGPT 可以访问 Mirobody 的 内置 MCP 工具

健康记录

用户或已共享护理圈成员的近期 FHIR Observationfamily_health

上传文件

列出并读取上传文件,包括从图片和 PDF 中抽取的文本(list_filesread_file

长期记忆

存储与检索关于用户的持久事实(rememberrecall_memory

图表

在聊天中渲染 Apache ECharts 可视化(render_chart

自定义工具

你在 res/mcp_tools/ 中添加并重新构建的任何 C++ 工具

对话标题

为当前对话设置一个简短标签(summarize_conversation

示例用例

ChatGPT 能跨设备、病历和上传文件做整体合成。一些真实示例:

简单查询

对于简单的问题,你可以问:
"我最近睡得怎么样?"
"昨天我的心率是多少?"
"总结我最近的化验结果"
"画出我上个月的体重"

进阶分析:糖尿病管理

Prompt: “总结我糖尿病的历史和近期进展。使用 Theta 从设备、记录和其他相关来源查找数据。”

查看完整对话

完整的糖尿病分析对话

交互式图表

交互式血糖趋势可视化

进阶分析:疼痛模式识别

Prompt: “帮我理解膝盖疼痛的全貌和进展。使用所有相关数据并找到潜在驱动因素。如果有帮助的话,使用可视化说明。”

查看完整分析

ChatGPT 如何用多源数据分析复杂的疼痛模式
同一个 MCP 端点也能接 Claude Desktop、Cursor 等任意 MCP 客户端 —— 参见 MCP 集成

安全注意事项

OAuth 是内置的。 任何对 MCP 端点的调用都必须先走完 Mirobody 的 OAuth 流程,所以即便 URL 泄露,没有合法会话也无法被使用。
额外加固建议:
  • MCP_PUBLIC_URL 当作机密,不要公开
  • 在反向代理或 Mirobody 的 src/server/ 中间件层加限流
  • 监控 /mcp 的访问日志
  • 仅在确实需要使用时再开隧道
  • 生产环境:托管代理上做 TLS 终止、尽量做 IP 白名单、对 /mcp 做可观测性
  • OAuth token 会过期 —— 用户需要周期性重新登录

故障排查

连接失败

  1. 验证隧道 / 域名可达:curl -I https://<your-domain>/mcp
  2. 确认 Mirobody 绑定的是 0.0.0.0:8080(或你配置的 HTTP_PORT
  3. 确认 MCP_PUBLIC_URL 与你填给 ChatGPT 的 URL 一致
  4. 改了配置之后重启 Mirobody —— 它只在启动时重新读取一次

工具不显示

  1. 直接用 tools/list 调用 /mcp,确认有工具返回
  2. 检查 Mirobody 启动日志里有没有工具加载错误
  3. 如果你添加了一个 C++ 工具,确认该文件位于 res/mcp_tools/ 下,并已用 ./build.sh 重新构建(参见 添加工具