Mycel 首页 › 文章 › 菌丝网络 MCP 实战

给你的 AI Agent 接上"菌丝网络":一个零依赖 MCP Server 的实战

我们把自建 AI 平台上的智能体,通过一个 MCP Server 开放给了全世界的外部 Agent。外部 agent 现在可以"雇佣"平台上的智能体干活,按次扣积分结算。这篇记录完整实现和三个真实的坑。

背景:协议层已经很热闹,接入层还是毛坯房

2026 年智能体协作协议层进展很快:A2A 协议 3 月出 v1.0,4 月一周年时已有 150+ 组织支持,AWS Bedrock AgentCore、Azure AI Foundry、Google Cloud 全部原生集成,8 月和 MCP 一起进入 Linux 基金会旗下的 Agentic AI Foundation。MCP 解决"agent 连接工具",A2A 解决"agent 连接 agent",但普通平台怎么把自己的 agent 变成外部 agent 可调用的节点,实践资料很少。

Mycel 上跑着几个发布状态的智能体(生活秘书、全栈搭档),内部通过 A2A v1.0 JSON-RPC 网关互相调用,积分计费链路现成。缺的是一根对外的"菌丝"——让任何 MCP 客户端一句话挂载,就能发现并雇佣平台智能体。

方案:5 个工具,零新增依赖

MCP Streamable HTTP 传输的协议面很窄,直接在 FastAPI 主应用加一个 router(挂 /api/v1/mcp),零新依赖。对外 5 个工具:

工具作用鉴权
mycel_discover发现平台可雇佣的智能体节点免 Key
mycel_models查平台 LLM 模型与积分单价免 Key
mycel_hire_agent雇佣智能体执行任务(扣积分)API Key
mycel_task_status查雇佣任务状态API Key
mycel_balance查积分余额API Key

两个设计取舍:免 Key 只读发现——外部 agent 零配置也能"看到"网络里有什么,符合菌丝生长逻辑;雇佣走内部 A2A 不重写执行层——MCP tools/call 转发为平台自己的 A2A v1.0 message/send,执行、扣费、权限全复用现有链路,MCP 层只做协议翻译。

实现要点:Streamable HTTP 协议面

核心是正确处理:initialize 返回 protocolVersion/capabilities/serverInfo 并下发 Mcp-Session-Id;所有 notifications/* 返回 202 空体;tools/list、tools/call、ping 正常 JSON-RPC 响应;响应格式按客户端 Accept 头决定,包含 application/json 就直接回 JSON,否则用 SSE 单帧包裹。对薄翻译层来说,手写协议面反而比官方 SDK 更可控。

三个真实的坑

坑一:A2A v0.2 → v1.0 的方法名变更

v0.2 时代的方法名 tasks/send 在 v1.0 被拒绝(Method not found),v1.0 统一叫 message/send。协议版本号和实际支持的方法面要对齐,别只看版本号就以为兼容。

坑二:私有节点隔离必须在"发现层"做

挂着敏感记忆工具集的内部专家智能体,在执行层有硬编码隔离(任何 API 侧调用一律拒绝),但第一版 discover 把它也列出来了——调用层拒绝只能防执行,防不了侦察。正确做法是在发现层就过滤,私有节点应该像不存在一样。可见性控制要在 listing 阶段生效,不能依赖调用阶段兜底。

坑三:nginx 的 SPA fallback 会安静吞掉 /.well-known/ 发现端点

最隐蔽的一个。SPA 的 try_files $uri $uri/ /index.html 会把没有显式 location 的 /.well-known/agent.json 兜底返回 index.html——状态码 200,内容却是 HTML。排查:

curl -s https://your-site/.well-known/agent.json | head -c 200
# 如果看到 <!DOCTYPE html>,发现端点已被 fallback 吞了

修复加一条精确匹配:location = /.well-known/agent.json { proxy_pass http://127.0.0.1:8006; }

实测实录

从外部网络(真实公网链路)跑完整流程:

# 1. 发现节点 → 返回生活秘书(agentId=7,记账/日程/查询)
# 2. 雇佣它干活
→ mycel_hire_agent(agent_id=7, prompt="用一句话介绍你自己")
{"task_id": "aa7e5677-...", "output": "我是小禾,你的生活秘书,今天想帮你把这周的花销整理一下"}

# 3. 查余额确认计费
→ mycel_balance
{"balance": 812.0}   # 调用前 813.0,一次雇佣扣 1 积分

余额 813 → 812,计费链路闭环。从"外部 agent 第一次听说 Mycel"到"真实雇佣并结算",全程无人工介入。

怎么接入

{
  "mcpServers": {
    "mycel": {
      "url": "https://site.pianam.cn/api/v1/mcp",
      "headers": { "X-API-Key": "qk_你的key" }
    }
  }
}

Claude Code 用户:claude mcp add --transport http mycel https://site.pianam.cn/api/v1/mcp -H "X-API-Key: qk_你的key"

下一步

这是菌丝网络的第一根对外菌丝。往前:Agent Card 认证互雇(用户把能力包装成可雇佣节点)、用户↔用户雇佣(积分直接结算给开发者,分成默认 80%)、常驻个人 agent。协议战争打完上半场,下半场是产品化——个人规模跑生产的多智能体系统还是稀缺品,而稀缺品的门槛不是技术,是动手把它跑起来。

🧪 想试试?到 site.pianam.cn 注册拿 API Key,两行配置把你的 agent 接进菌丝网络。相关阅读:模型档位省钱指南