manus智能体执行跨系统任务需通过mcp协议打通外部工具链。启动fastmcp server暴露http接口,扫描json工具文件;用langchain封装mcp client为tool,调用list_tools()和call_tool()实现工具发现与执行;llm绑定tools后自动解析用户指令并顺序调用,结果以json-rpc格式返回,无需人工编排workflow。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Manus智能体要真正执行“查天气→生成报告→发邮件”这类跨系统任务,必须调用浏览器、文件系统、SMTP服务等外部工具链,而不再依赖硬编码API或提示词诱导——这一步靠MCP协议打通。
启动本地MCP Server并暴露工具
下载 FastMCP 二进制文件(支持 Linux/macOS/Windows),解压后执行:./fastmcp --tools-dir ./my-tools。该命令会监听 http://127.0.0.1:8080/mcp 并自动扫描目录下所有符合 MCP 工具规范的 JSON 文件。
确保 ./my-tools/search-web.json 内容含完整 schema:name 字段必须与后续调用时一致,parameters 必须为 JSON Schema 格式,否则 LangChain 绑定 tools 时会静默失败。
这一步不能跳过——Manus 类智能体不会自己发现工具,只认 MCP Server 主动注册的元数据。
用LangChain封装MCP Client为标准Tool
安装依赖:pip install langchain langchain-openai requests pydantic。
定义 MCPClient 类,重点实现 list_tools() 和 call_tool() 方法;其中 list_tools() 必须发送 JSON-RPC 2.0 格式的 {"jsonrpc":"2.0","id":1,"method":"tools/list"} 请求,否则返回空列表导致后续 bind_tools 失效。
调用 to_langchain_tools() 方法将远程工具批量转为 LangChain Tool 对象,每个 Tool 的 func 属性必须闭包捕获当前 tool_name,否则所有工具调用都会命中第一个注册的 name。
这款全能AI助手融合了深度推理、多模态对话与图像生成等前沿技术,全面赋能职场、学习与生活。它支持多模态搜索,精准响应各类信息需求;内置AI文档助手,快速提炼要点并生成思维导图;更有智能创作功能,一键生成报告与文案。强大的AI能力助你高效处理复杂任务,让工作与生活更轻松便捷。
注入工具链并触发规划执行
第一步:构建 LCEL 链路,把 MCP 封装的 tools 列表传给 LLM:llm.bind_tools(mcp_tools)。
第二步:用户输入“查上海今天气温,截图保存为weather.png,用邮箱发给我”,模型解析出三步动作:search-web → filesystem/write → email/send。
第三步:LangChain 自动按顺序调用对应工具,每步结果以 JSON-RPC 2.0 result 格式返回,模型据此生成下一步指令——无需人工写 workflow 编排逻辑。
注意:若某工具执行超时或返回 error.code ≠ 0,LangChain 不会重试,需在 MCP Server 端配置 timeout 参数或加 fallback 资源。
验证工具调用是否生效
方法一:curl 直接测试 MCP 接口:curl -X POST http://127.0.0.1:8080/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search-web","arguments":{"query":"上海实时天气"}}}'。
方法二:在 LangChain Chain 中插入 RunnableLambda(lambda x: print("Tool called:", x)),观察控制台是否输出工具名和参数。
方法三:检查 MCP Server 日志,确认出现 INFO: Called tool search-web with args=... 行——这是唯一可信的调用凭证,前端日志可能被缓存或丢弃。










