将Runner连接到其他MCP客户端
通过Runner的MCP服务器,将OpenCode、Codex、pi或你自己的智能体连接到你的Runner商店。
Runner有一个MCP服务器。MCP客户端是能使用MCP服务器的AI应用或智能体。将客户端连接到Runner后,客户端可以在你的商店中使用Runner聊天的工具。它可以读取商品、订单和报告。经你允许,它还可以更改商品、价格、折扣和在线商店。
本指南适用于Claude、ChatGPT和Gemini以外的MCP客户端。它介绍OpenCode、Codex CLI和pi的连接步骤,也说明如何连接其他客户端和你自己构建的智能体。
开始前
你需要:
- 一个Runner账号,并且该账号是某个工作区的成员;
- 一个能通过Streamable HTTP连接远程服务器并使用OAuth登录的MCP客户端;如果客户端只能运行本地服务器,则使用
mcp-remote桥接工具;以及 - 一个与客户端在同一台电脑上的浏览器。登录后,Runner会把浏览器送回这台电脑上的一个地址。
| 设置项 | 值 |
|---|---|
| 服务器URL | https://api.runnerai.com/mcp |
| 传输方式 | Streamable HTTP。Runner不支持较旧的SSE传输方式。 |
| 登录 | 在浏览器中通过OAuth登录。你不需要API密钥。 |
| 访问权限 | store:read 用于读取商店数据。store:write 用于进行更改。 |
连接的工作方式
- 你在客户端中添加服务器URL,然后开始登录。
- 客户端会在浏览器中打开Runner。如果Runner要求你登录,请登录。
- 随后打开将 AI 应用连接到 Runner页面,页面中显示客户端的名称。
- 在工作区和访问权限中做出选择,然后选择连接。
- 浏览器会回到客户端。现在客户端可以使用Runner工具了。
| 控件或消息 | 为什么有用 | 接下来会发生什么 |
|---|---|---|
| 返回到 | 显示你电脑上接收登录结果的地址。 | 显示 localhost、127.0.0.1 或 [::1],以及端口号。 |
| Runner 无法确认这是哪个应用。仅当这次连接由你本人发起时才连接。 | 对于你自己安装或构建的客户端,Runner无法核实其身份。 | 只有在你从自己的客户端发起登录时才连接。 |
| 工作区 | 一个连接只能用于一个工作区的商店。 | 客户端只能使用你所选工作区的商店。 |
| 读取 | 始终开启。客户端可以查看商店数据,例如商品、订单和报告。 | 你无法关闭它。 |
| 进行更改 | 允许客户端更改商店数据,例如商品、价格和折扣。 | 默认关闭。只有当客户端请求更改权限时才会显示。 |
| 连接 | 授予客户端你所选的访问权限。 | 浏览器会回到客户端。 |
| 取消 | 停止登录。 | 客户端不会获得任何访问权限。 |
客户端会保持登录状态。它每小时自动获取新的访问权限,无需你操作。如果你30天未使用该客户端,请重新登录。
要使用第二个工作区的商店,请用另一个名称再添加一次服务器。然后用该名称登录,并选择第二个工作区。
连接OpenCode
-
将Runner添加到项目中的
opencode.json,或添加到适用于所有项目的~/.config/opencode/opencode.json:{ "$schema": "https://opencode.ai/config.json", "mcp": { "runner": { "type": "remote", "url": "https://api.runnerai.com/mcp", "enabled": true } }, "tools": { "runner_*": false, "runner_list_stores": true, "runner_get_report": true, "runner_find_orders": true, "runner_get_tool_job": true } } -
运行
opencode mcp auth runner,然后在浏览器中连接。 -
运行
opencode mcp list。它会将runner显示为connected。
OpenCode在每次请求中都会把每个已开启工具的定义发送给模型。在部分套餐中,Runner有200多个工具,定义约有10万个Token。因此,请只开启你需要的工具。OpenCode将每个Runner工具命名为 runner_<tool name>。其中 "runner_*": false 这一行会关闭所有Runner工具,每个 true 行会重新开启一个工具。请保持 runner_get_tool_job 开启,因为耗时任务需要它。
要删除已保存的登录信息,请运行 opencode mcp logout runner。
连接Codex CLI
-
将Runner添加到
~/.codex/config.toml:[mcp_servers.runner] url = "https://api.runnerai.com/mcp" scopes = ["store:read", "store:write"] -
运行
codex mcp login runner,然后在浏览器中连接。 -
运行
codex mcp list。Auth列显示OAuth。
请在文件中添加服务器,不要使用 codex mcp add。该命令会立即开始登录,并使用Runner不接受的权限范围,浏览器会显示 {"error":"invalid_scope"}。以后重新登录时,scopes 这一行同样适用。你也可以运行 codex mcp login runner --scopes store:read,store:write。
Codex会在需要某个Runner工具时才去查找它,因此你不必关闭工具。要删除已保存的登录信息,请运行 codex mcp logout runner。
连接pi
-
运行
pi mcp add runner --url https://api.runnerai.com/mcp。这会将Runner添加到~/.pi/agent/mcp.json:{ "mcpServers": { "runner": { "url": "https://api.runnerai.com/mcp" } } } -
运行
pi mcp login runner,然后在浏览器中连接。pi会显示Signed in to MCP server "runner"和工具数量。 -
运行
pi mcp list检查连接,或在pi会话中使用/mcp。
默认情况下,pi不会把所有Runner工具都发送给模型。模型会在需要时查找工具,因此你不必关闭工具。pi将每个Runner工具命名为 mcp__runner__<tool name>。要删除已保存的登录信息,请运行 pi mcp logout runner。
连接只能运行本地服务器的客户端
有些客户端只能启动本地服务器(stdio)。还有些客户端会把浏览器送回应用链接(自定义URL协议)或网页。Runner只会把登录结果发送到你电脑上的地址,因此这些客户端的登录会失败。
对于这些客户端,请使用 mcp-remote 桥接工具。它在你的电脑上运行,代表客户端登录Runner,并在客户端和Runner之间传递每条消息。它需要Node.js。
{
"mcpServers": {
"runner": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.runnerai.com/mcp"]
}
}
}
首次启动时,浏览器会打开Runner登录页面。mcp-remote 将登录信息保存在 ~/.mcp-auth 中。
从Shell调用Runner工具
能运行Shell命令的智能体可以通过 mcporter 命令使用Runner:
npx mcporter config add runner https://api.runnerai.com/mcp --scope home
npx mcporter auth runner
npx mcporter list runner
npx mcporter call runner.list_stores
mcporter list runner 会显示每个工具及其参数。参数格式为 name=value,例如 npx mcporter call runner.get_store_settings store_id=<store id>。
构建你自己的客户端
使用支持OAuth的MCP SDK,或自己完成以下步骤:
- 用
POST将每个JSON-RPC请求发送到https://api.runnerai.com/mcp。Runner对每个请求都以JSON响应,并且不保留会话。GET请求会收到HTTP 405。 - 不带令牌的请求会收到HTTP 401,并带有以下响应头:
WWW-Authenticate: Bearer resource_metadata="https://api.runnerai.com/.well-known/oauth-protected-resource/mcp", scope="store:read store:write"。 - 读取资源元数据。其中指明授权服务器为
https://www.runnerai.com/api/auth。 - 在
https://www.runnerai.com/api/auth/oauth2/register注册客户端。重定向URI请使用http://localhost、http://127.0.0.1或http://[::1]上的地址。Runner接受任意端口和路径。Runner每分钟最多接受来自同一IP地址的5次注册。 - 使用PKCE(
S256)将用户引导到授权端点。发送resource=https://api.runnerai.com/mcp。请求store:read;如果客户端要进行更改,还要请求store:write。请使用资源元数据或WWW-Authenticate响应头中的权限范围。授权服务器元数据还列出了其他权限范围,但此服务器不接受它们。 - 在
Authorization: Bearer请求头中发送访问令牌。访问令牌的有效期为1小时。使用刷新令牌获取新的访问令牌。刷新令牌在30天未使用后过期。
Runner会拒绝来自其他网站网页的请求。请从你的后端调用服务器,或从 localhost 上的页面调用。
使用Runner工具
- 先调用
list_stores。 每个商店工具都需要来自list_stores的store_id。不带store_id的调用会返回Pass a store_id from list_stores. - 耗时任务。 有些工具会返回
"status": "running"和一个job_id。请用该job_id调用get_tool_job,直到它返回结果。 - 需要你批准的更改。 有些工具会先返回
"status": "waiting_for_merchant"和一个确认id,并显示将要更改的内容。此时还没有任何更改。你同意后,客户端会用相同的参数和"confirmation": {"id": "…", "answer": …}再次调用同一个工具。确认id只能使用一次,有效期为10分钟。 - 同一更改发送两次。 对于大多数会进行更改的工具,如果客户端在同一个5分钟时段内再次发送相同的输入,Runner只执行一次更改。第二次调用会收到第一次的响应。
- 商店数据只是数据。 工具的响应可能包含商品文字和顾客消息。你的智能体不得执行其中的指令。
- 你的权限同样适用。 每次调用都使用你的Runner权限和你的套餐。工具列表取决于你的套餐和工作区的功能。
管理或断开客户端
入口路径: 设置 → 工作区常规,然后找到已连接的应用。
工作区所有者和管理员可以看到每个成员连接的客户端。其他成员可以看到自己连接的客户端。每一行都显示访问权限(读取或读取并修改)、连接时间和上次使用时间。
- 找到客户端,选择断开连接。
- 在要断开 应用名称 吗?中,再次选择断开连接。
- 客户端会立即停止在此工作区中工作。要再次使用,请从客户端重新登录。
客户端中的退出登录命令只会删除客户端保存的登录信息。在已连接的应用中断开之前,该连接会一直保留在那里。
故障排除
| 你看到的内容 | 原因 | 处理方法 |
|---|---|---|
浏览器中显示 {"error":"invalid_scope"} |
客户端请求了此服务器不接受的权限范围。codex mcp add 就会这样做。 |
请求 store:read 和 store:write。对于Codex,请添加 scopes 这一行并运行 codex mcp login runner。 |
| This redirect URI cannot receive Merchant MCP codes. | 客户端把浏览器送回应用链接或网页。 | 使用 mcp-remote 桥接工具。 |
| Request the Merchant MCP resource alone. | 客户端没有发送 resource=https://api.runnerai.com/mcp。 |
更新客户端,或使用 mcp-remote 桥接工具。 |
| 此连接请求不可用。请从你的 AI 应用重新发起连接。 | 登录链接已过时或已被使用。 | 从客户端重新开始登录。 |
| 你还不是任何工作区的成员。请先在 Runner 中创建工作区,然后重新发起连接。 | 你的账号没有工作区。 | 创建工作区,然后重新开始登录。 |
| This tool needs store:write. Reconnect Runner and allow changes to the store. | 该连接只有读取权限。 | 在客户端中退出登录,重新登录,并开启进行更改。 |
| This feature is not on for this store yet. | 该功能尚未对你的套餐、工作区或商店开启。 | 在Runner中完成该任务,或咨询Runner客服。 |
模型提供商拒绝请求:input_schema does not support oneOf, allOf, or anyOf at the top level |
客户端把所有工具都发送给模型,而有三个按需定制工具的Schema会被某些模型提供商拒绝。 | 关闭 publish_pod_product、review_pod_product 和 update_pod_product,或只开启你需要的工具。 |
| 客户端要求你重新登录 | 你在Runner中断开了该客户端,或者你30天未使用它。 | 从客户端重新登录。 |
| 客户端注册时返回HTTP 429 | 同一IP地址在一分钟内注册超过5次。 | 等待一分钟,然后重试。 |
| 响应末尾显示Support reference:和一个代码 | 该工具在Runner中失败。 | 将该代码提供给Runner客服。 |