-
Notifications
You must be signed in to change notification settings - Fork 3
MCP Server.zh CN
phinn edited this page Sep 18, 2026
·
2 revisions
🌐 Language: English | 中文
KinetAios 内置 MCP (Model Context Protocol) Server —— 一个 HTTP+SSE 端点,把你的本地 agent 暴露给远程机器。其他 KinetAios 实例(或任何 MCP 兼容客户端)可以调用 run_agent 在你的机器上跑任务,拥有完整工具权限。
这是 Town 远程协作功能的基础。
远程机器 你的机器(MCP Server)
│ │
│ POST /mcp (JSON-RPC over HTTP) │
│ Authorization: Bearer <token> │
│ ─────────────────────────────────────────> │
│ │ → run_agent(prompt, cwd, engine)
│ │ → TaskManager 分发到引擎
│ │ → 流式推送 AgentEvent
│ <── SSE: data: {type:"token",...} ────── │
│ <── SSE: data: {type:"tool",...} ────── │
│ <── SSE: data: {type:"done"} ────── │
│ │
在 ⚙ 设置 → 行为:
| 设置 | 说明 |
|---|---|
| MCP Server 启用 | 开关 HTTP 监听 |
| 端口 | 默认 0(随机)→ 启动后状态栏显示实际端口 |
| Token | 自动生成;所有请求必须携带 |
服务端绑定 0.0.0.0(局域网可访问)。Token 在服务运行时显示在状态栏。
-
Bearer token 放在
Authorization头(通过 HMAC-SHA256 归一化后恒定时间比较 —— 无长度时序泄漏)。 - SSE 端点拒绝 URL 参数传 token(防止被代理/CDN 日志记录)。
- 每条连接 5 分钟空闲超时。
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/mcp |
JSON-RPC:tools/list、tools/call(run_agent 返回 SSE 流) |
GET |
/mcp |
SSE 事件流(实时 agent 事件,只读) |
GET |
/ |
健康检查:{ ok: true, server, mcp: true }
|
主要的远程工具。接受:
{
"prompt": "修复 src/utils.test.ts 里的失败测试",
"cwd": "/home/user/project",
"engine": "direct",
"model": "glm-4.6"
}返回 SSE 流,推送 AgentEvent(token、tool、cost、status、done、error)—— 与内部使用的统一事件联合类型一致。
-
list_conversations—— 列出本地会话 -
export_session—— 序列化会话用于交接(自动脱敏 API key/密码) -
import_session—— 反序列化会话(验证消息结构、role 白名单、长度限制) -
sync_memories—— 在机器间推送/拉取长期记忆(按 content 去重) -
search_history—— FTS5 全文搜索所有会话
-
导出脱敏:
exportSession在序列化前剥离匹配常见模式的 API key、密码和 token(sk-...、api_key=...等)。 -
导入验证:
importSession验证消息 role(白名单:system/user/assistant/tool)、content 类型,并强制长度限制(500 条消息、每条 50K 字符)。 - 僵尸连接清理:SSE 连接追踪 backpressure;连续 3 次 write 失败 → destroy + 移出活跃列表。
-
src/main/mcp-server.ts—— HTTP 服务、SSE 流、工具分派、鉴权 -
src/main/TaskManager.ts——runAgent、exportSession、importSession、syncMemories -
src/shared/types.ts——AgentEvent联合类型、McpTool类型