|
|
@@ -708,6 +708,8 @@ mcp_tool = MCPTool(
|
|
|
|
|
|
这段代码做了什么呢?首先,`command`和`args`指定了如何启动 MCP 服务器。`npx -y @sugarforever/amap-mcp-server`会从 npm 仓库下载并运行`amap-mcp-server`这个包。`env`参数传递了环境变量,这里我们传递了高德地图的 API 密钥。
|
|
|
|
|
|
+**注意:**本文档中部分示例使用 `npx` 启动 MCP(Model Context Protocol)服务。而在本节代码仓中,我们实际采用的是 `uvx` 方式。需要说明的是,`npx` 和 `uvx` 在设计理念上高度一致,区别仅在于所处的生态系统,`npx` 面向 JavaScript/Node.js(包来自 npm),而`uvx` 面向 Python(包来自 PyPI)。两种方式并无优劣之分,请大家在使用时按需进行选择。
|
|
|
+
|
|
|
当我们创建`MCPTool`对象时,它会在后台启动 MCP 服务器进程,并通过标准输入输出(stdin/stdout)与服务器通信。这是 MCP 协议的一个特点:使用进程间通信而不是 HTTP,这样更高效,也更容易管理。
|
|
|
|
|
|
最关键的是`auto_expand=True`这个参数。当设置为 True 时,`MCPTool`会自动查询 MCP 服务器提供了哪些工具,然后为每个工具创建一个独立的 Tool 对象。这就是为什么我们只创建了一个`MCPTool`,但 Agent 却获得了 16 个工具。让我们看看这个过程:
|