02Bread MCP · 第 5 章
总进度 14 / 33把 MCP server 接到 Bread Agent
原来的示例直接把 Python 函数注册在 Agent 进程里。现在希望工具可以单独维护,Agent 启动时再询问有哪些工具,而不用把每个工具函数都写进自身代码。
2026-09-28约 45 分钟250 行代码难度 ★★★
如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。
1. 让 Agent 从服务端取得工具清单
回想 Bread Agent ch02——所有工具是这样的:
TOOLS_IMPL = {
"read_file": read_file, # 本地 Python 函数
"write_file": write_file,
...
}
原来的示例直接把 Python 函数注册在 Agent 进程里。现在希望工具可以单独维护,Agent 启动时再询问有哪些工具,而不用把每个工具函数都写进自身代码。
MCP 解决的就是这件事。本章的 Agent 启动时:
1. 启动一个 MCP server 子进程(可以是任意语言写的任意 server)
2. 通过协议向它问:"你有哪些工具?参数长啥样?"
3. 把拿到的 schema 翻译成 OpenAI 的格式给 LLM
4. LLM 想调工具 → 我们通过协议远程调用 → 把结果带回
工具名称和说明从服务端的 tools/list 返回。Agent 根据这份清单准备模型请求,不需要预先写死 read_file 等名称。
┌──────────────────┐ ┌────────────────────┐
│ Bread Agent │ stdio MCP │ MCP server │
│ + MCPClient │ ◄────────────► │ (任意进程/语言) │
│ │ │ read_file/list/...│
└──────────────────┘ └────────────────────┘
↑ ↑
主进程跑 子进程跑(也可以是远程)
本章接通的是本机 stdio 服务,并使用文本工具结果。更换服务器时,仍要检查它的协议版本、传输方式和返回类型是否在当前客户端支持范围内。
<!-- bread-visual:start -->
<!-- bread-visual:end -->图解: 本章使用本机 stdio 子进程连接。 工具清单来自 tools/list;stdio 连接本机子进程,不直接连接远程主机。
2. 跑起来
cd ch04_with_agent
python main.py
本章需要
.env。如果你做过 Bread Agent,main.py 已经写好了回退逻辑——会自动找bread-agent/.env。否则在bread-mcp/.env配。
启动后:
已连接 MCP server: bread-mcp-fs v0.1.0
[agent] 已发现 3 个 MCP 工具: get_time, list_dir, read_file
Bread MCP × Bread Agent · v1
输入消息开始对话;Ctrl+C 退出。
你 > 现在几点
[step 0] mcp.call_tool get_time({})
[step 0] -> 2026-05-18 09:15:42
AI > 现在是 2026 年 5 月 18 日 09:15:42。
你 > 列出当前目录都有什么
[step 0] mcp.call_tool list_dir({'path': '.'})
[step 0] -> DIR __pycache__
FILE README.md
FILE agent.py
...
AI > 当前目录下有 5 个文件...
试读到这里 · 后续内容已封存
关注公众号,继续把这章学完
在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。