§ 01
托管连接提供什么
在现有 MCP 客户端中提交运行、查询状态和查看可用产物。托管服务返回的工具列表是当前能力参考。
模型运行完成不代表代码库检查已执行。请查看运行记录及可用验证结果;共享托管命令验证默认禁用。
协议版本默认为 2025-11-25;同时支持 2024-11-05、2025-03-26 与 2025-06-18。
§ 02
推荐:连接托管服务
使用支持 HTTP 的 MCP 客户端。创建账户和 AdaptOrch 密钥后配置端点,无需克隆私有核心仓库。
1 · 创建密钥
在 /app/signup 注册,在 /app/api-keys 创建 API 密钥。直接 HTTP 指南统一使用 ADAPTORCH_API_KEY。请勿将真实密钥提交到仓库。
export ADAPTORCH_API_KEY="ado_..."
2 · 确认认证,不运行模型
这个只读 tools/list 请求检查端点和凭据。它不提交任务,不验证所有客户端配置,也不证明代码检查能力可用。
: "${ADAPTORCH_API_KEY:?Set your AdaptOrch API key first}"
curl --fail --silent --show-error https://adaptorch.com/mcp \
-H "Authorization: Bearer $ADAPTORCH_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
有效密钥会返回包含 adaptorch_run 的 result.tools 数组。不带密钥时同一请求返回 {"code":-32001,"message":"Missing bearer token"} 与 HTTP 401 — 这个响应本身就证明端点可达。
端点:https://adaptorch.com/mcp · 通过 POST 发送 JSON-RPC。GET 按设计返回 405 — 没有可订阅的 SSE 流。令牌可通过 Authorization: Bearer 或 X-API-Key 传递。
执行还需要你的模型服务商密钥
AdaptOrch API 密钥用于服务认证。模型执行还需要供应商、模型及供应商密钥。配置下面三个变量,并用 X-Provider 请求头传递。模型令牌费由供应商另行收取。
托管模型完成不等于代码库测试通过。代码检查需要独立执行环境;只有记录显示相关检查实际运行时,才将其算作验证。
Set these only in your local environment; never in a shared transcript or committed file.
export ADAPTORCH_PROVIDER="openai"
export ADAPTORCH_PROVIDER_MODEL="YOUR_SUPPORTED_MODEL"
export ADAPTORCH_PROVIDER_KEY="YOUR_PROVIDER_KEY"§ 03
3 · 推荐客户端连接
先使用下面完整的 Claude Code HTTP 示例。其他配置块只展示各客户端的认证语法;模型执行前请按登录后仪表盘的指南添加供应商请求头。
Claude Code — 一条命令
: "${ADAPTORCH_API_KEY:?Set your AdaptOrch API key}"
: "${ADAPTORCH_PROVIDER:?Set a supported provider}"
: "${ADAPTORCH_PROVIDER_MODEL:?Set the provider model ID}"
: "${ADAPTORCH_PROVIDER_KEY:?Set your provider key}"
claude mcp add --transport http adaptorch https://adaptorch.com/mcp \
--header "Authorization: Bearer ${ADAPTORCH_API_KEY}" \
--header "X-Provider: ${ADAPTORCH_PROVIDER}" \
--header "X-Provider-Model: ${ADAPTORCH_PROVIDER_MODEL}" \
--header "X-Provider-Key: ${ADAPTORCH_PROVIDER_KEY}"
Cursor — <code>~/.cursor/mcp.json</code>
{
"mcpServers": {
"adaptorch": {
"url": "https://adaptorch.com/mcp",
"headers": { "Authorization": "Bearer ${ADAPTORCH_API_KEY}" }
}
}
}
Codex CLI — <code>~/.codex/config.toml</code>(TOML,不是 JSON)
[mcp_servers.adaptorch]
url = "https://adaptorch.com/mcp"
bearer_token_env_var = "ADAPTORCH_API_KEY"
env_http_headers = { "X-Provider" = "ADAPTORCH_PROVIDER", "X-Provider-Model" = "ADAPTORCH_PROVIDER_MODEL", "X-Provider-Key" = "ADAPTORCH_PROVIDER_KEY" }
Gemini CLI — <code>~/.gemini/settings.json</code>(键名为 <code>httpUrl</code>)
{
"mcpServers": {
"adaptorch": {
"httpUrl": "https://adaptorch.com/mcp",
"headers": { "Authorization": "Bearer ${ADAPTORCH_API_KEY}" }
}
}
}
VS Code — <code>.vscode/mcp.json</code>(顶层键为 <code>servers</code>)
{
"servers": {
"adaptorch": {
"type": "http",
"url": "https://adaptorch.com/mcp",
"headers": { "Authorization": "Bearer ${env:ADAPTORCH_API_KEY}" }
}
}
}
Windsurf — <code>~/.codeium/windsurf/mcp_config.json</code>(键名为 <code>serverUrl</code>)
{
"mcpServers": {
"adaptorch": {
"serverUrl": "https://adaptorch.com/mcp",
"headers": { "Authorization": "Bearer ${ADAPTORCH_API_KEY}" }
}
}
}
认证不等于执行。直接 HTTP 指南使用 ADAPTORCH_API_KEY;本地桥接用 ADAPTORCH_CONTROL_PLANE_TOKEN 表示同一个服务凭据。二者都不是模型供应商密钥。 Shell 会展开环境变量,客户端可能保存展开后的请求头。请私密保存配置,切勿提交密钥。
4 · 提交一次有界任务并检查记录
让连接的客户端使用下面的单任务输入调用 adaptorch_run 一次。此步骤可能消耗运行额度和供应商费用。查询状态时不要重复提交。
{
"payload": {"subtasks": [{"id": "ping", "description": "Reply exactly PONG", "estimated_tokens": 16}]},
"synthesis_mode": "paper",
"budget_policy": {"global_timeout_budget_seconds": 20}
}用返回的 run_id 调用 adaptorch_get_run、adaptorch_get_artifacts,或打开 /app/runs。确认模型和输出,再检查验证命令是否真正运行;SUCCEEDED 本身不能证明这一点。
401:检查服务认证和供应商密钥。429:检查额度和速率限制。供应商计费失败、验证环境不支持都属于配置阻碍,而不是成功激活。
§ 04
维护者:本地桥接与引擎开发
本地 Python 包装器委托给 AdaptOrch 引擎,适用专有许可。下载本身不授予更广的使用权;请查看条款及发行包内的许可。此维护路径要求引擎已可用,不是托管客户的快速开始步骤。
pip install adaptorch-mcp
export ADAPTORCH_CONTROL_PLANE_TOKEN="$ADAPTORCH_API_KEY"
export ADAPTORCH_MCP_PROVIDER="$ADAPTORCH_PROVIDER"
export ADAPTORCH_MCP_PROVIDER_MODEL="$ADAPTORCH_PROVIDER_MODEL"
export ADAPTORCH_MCP_PROVIDER_API_KEY="$ADAPTORCH_PROVIDER_KEY"
adaptorch-mcp --transport stdio --base-url https://adaptorch.com
本地桥接的 ADAPTORCH_CONTROL_PLANE_TOKEN 接收 AdaptOrch API 密钥。ADAPTORCH_MCP_PROVIDER、ADAPTORCH_MCP_PROVIDER_MODEL、ADAPTORCH_MCP_PROVIDER_API_KEY 配置进程内供应商凭据。请勿把密钥作为工具参数发送。
本地客户端不等于自托管控制平面。独立执行环境可通过代码库验证 PoC另行商定。普通客户可直接使用上面的托管 HTTP 指南,无需私有核心仓库。
§ 05
工具参考
托管 tools/list 响应决定当前可用工具。结果和错误遵循返回的模式。工具列表响应不是模型运行或验证结果。
adaptorch_run
向 AdaptOrch 控制平面提交任务负载,可选择等待完成。
WRITEnon-destructivenon-idempotentOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
prompt |
string | conditional | — |
context |
string | no | — |
payload |
object | no | — |
connector_name |
string | no | "mcp" |
synthesis_mode |
string (enum) | no | "robust" |
model |
string | no | — |
trace |
boolean | no | false |
budget_policy |
object | no | — |
wait_for_terminal |
boolean | no | true |
timeout_seconds |
number | no | 120.0 |
poll_interval_seconds |
number | no | 1.0 |
verification_commands |
string[] | no | — (gated) |
prefer_ensemble_singleton |
boolean | no | false |
output_extractor |
string (enum) | no | — |
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "adaptorch_run",
"arguments": { "prompt": "${TASK_PROMPT}", "synthesis_mode": "robust",
"wait_for_terminal": true, "timeout_seconds": 120.0 } } }
adaptorch_get_run
按 run_id 获取运行摘要。
READ-ONLYnon-destructiveIDEMPOTENTOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
run_id |
string | yes | — |
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": { "name": "adaptorch_get_run", "arguments": { "run_id": "${RUN_ID}" } } }
adaptorch_get_artifacts
按 run_id 获取运行产物。
READ-ONLYnon-destructiveIDEMPOTENTOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
run_id |
string | yes | — |
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": { "name": "adaptorch_get_artifacts", "arguments": { "run_id": "${RUN_ID}" } } }
adaptorch_list_runs
列出最近的 AdaptOrch 控制平面运行,最新的排在前面。
READ-ONLYnon-destructivenon-idempotentOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
limit |
integer (1–100) | no | 20 |
status |
string | no | — |
{ "jsonrpc": "2.0", "id": 4, "method": "tools/call",
"params": { "name": "adaptorch_list_runs", "arguments": { "limit": 20, "status": "SUCCEEDED" } } }
adaptorch_get_traces
按 run_id 获取运行的执行追踪。
READ-ONLYnon-destructiveIDEMPOTENTOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
run_id |
string | yes | — |
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call",
"params": { "name": "adaptorch_get_traces", "arguments": { "run_id": "${RUN_ID}" } } }
adaptorch_cancel_run
按 run_id 请求取消正在执行的运行。
WRITEDESTRUCTIVEnon-idempotentOPEN-WORLD
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
run_id |
string | yes | — |
{ "jsonrpc": "2.0", "id": 6, "method": "tools/call",
"params": { "name": "adaptorch_cancel_run", "arguments": { "run_id": "${RUN_ID}" } } }
adaptorch_route_topology
使用本地 TopologyRouter 为任务 DAG 推荐执行拓扑(不调用控制平面)。
READ-ONLYnon-destructiveIDEMPOTENTclosed-world
| 参数 | 类型 | 必填 | 默认值 |
|---|---|---|---|
subtasks |
object[] | yes | — |
dependencies |
object[] | no | — |
{ "jsonrpc": "2.0", "id": 7, "method": "tools/call",
"params": { "name": "adaptorch_route_topology",
"arguments": { "subtasks": [ { "id": "t1" }, { "id": "t2" } ],
"dependencies": [ { "from": "t1", "to": "t2" } ] } } }
adaptorch_server_metrics
返回脱敏后的 MCP 工具调用计数与延迟分位数。
READ-ONLYnon-destructivenon-idempotentclosed-world
无参数。
{ "jsonrpc": "2.0", "id": 8, "method": "tools/call",
"params": { "name": "adaptorch_server_metrics", "arguments": {} } }
adaptorch_capabilities
返回支持的综合模式、连接器与服务器能力。
READ-ONLYnon-destructiveIDEMPOTENTclosed-world
无参数。
{ "jsonrpc": "2.0", "id": 9, "method": "tools/call",
"params": { "name": "adaptorch_capabilities", "arguments": {} } }
adaptorch_plan_catalog
返回当前 AdaptOrch 托管云套餐目录:Starter $0、Pro $39、Team $149。
READ-ONLYnon-destructiveIDEMPOTENTOPEN-WORLD
无参数。
{ "jsonrpc": "2.0", "id": 10, "method": "tools/call",
"params": { "name": "adaptorch_plan_catalog", "arguments": {} } }
§ 06
鉴权
stdio 依赖本地信任模型加控制平面令牌。HTTP+SSE 额外提供 bearer 鉴权、来源允许列表、协议版本校验与负载大小上限。
| 环境变量 | 默认值 | 用途 |
|---|---|---|
ADAPTORCH_CONTROL_PLANE_TOKEN |
required | Control-plane bearer token (stdio + http) |
ADAPTORCH_CONTROL_PLANE_BASE_URL |
http://127.0.0.1:8000 |
Control-plane base URL |
ADAPTORCH_MCP_HTTP_AUTH_TOKEN |
falls back to control-plane token | Bearer expected on HTTP requests |
ADAPTORCH_MCP_ALLOWED_ORIGINS |
localhost, 127.0.0.1, ::1 | Allowed Origin header values |
ADAPTORCH_MCP_MAX_PAYLOAD_SIZE_BYTES |
1048576 |
Max HTTP request body (else 413) |
ADAPTORCH_MCP_ALLOW_VERIFICATION_COMMANDS
|
off | Gate for verification_commands |
HTTP 响应:缺失或无效 bearer 令牌返回 401,来源不被允许返回 403,负载超过上限返回 413。令牌使用 hmac.compare_digest 比较,且从不写入日志。
§ 07
工作流
以下三种常见流程覆盖了大多数代理集成场景。
1 · 运行并收集
调用 adaptorch_run 并带上 wait_for_terminal,然后用 adaptorch_get_run、adaptorch_get_artifacts 与 adaptorch_get_traces 读取结果。
{ "name": "adaptorch_run",
"arguments": { "prompt": "${TASK_PROMPT}", "wait_for_terminal": true } }
{ "name": "adaptorch_get_artifacts", "arguments": { "run_id": "${RUN_ID}" } }
2 · 预先路由 DAG
adaptorch_route_topology 在本地计算推荐拓扑 — 它不会调用控制平面。
{ "name": "adaptorch_route_topology",
"arguments": { "subtasks": [ { "id": "t1" }, { "id": "t2" } ],
"dependencies": [ { "from": "t1", "to": "t2" } ] } }
3 · 运维
用 adaptorch_list_runs 列出近期运行,用 adaptorch_cancel_run 停止正在执行的运行。adaptorch_run_prompt 与 adaptorch_get_run_prompt 提示词封装了这两条路径。
§ 08
故障排查
- 找不到启动器:请使用
adaptorch-mcp控制台脚本或scripts/run_adaptorch_mcp.sh。 - 缺少令牌:设置
ADAPTORCH_CONTROL_PLANE_TOKEN,或传入--api-token。 - 分帧不匹配:stdio 使用换行分隔的 JSON-RPC;请勿混用 Content-Length 分帧。
- HTTP 401 / 403:检查 bearer 令牌与 Origin 允许列表。
- HTTP 413:负载超过大小上限;请调高上限或缩小请求体。
- verification_commands 被拒绝:该数组会按允许列表校验;请移除不被允许的命令。
- 冒烟测试:
GET /mcp/health与GET /mcp/sse?once=true。
§ 09