Skip to content

38. Agent 应该如何接入 MCP 工具? ​

难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min

本题阅读地图 ​

  1. 💡 简要回答
  2. 📝 详细解析
  3. 🎯 面试总结

👔面试官:Agent 应该如何接入 MCP 工具?

🙋‍♂️我:把 MCP Tools 转成 Agent 能用的工具格式。

👔面试官:对,但还有:发现 MCP Server 的能力 → 转换 schema → 工具注册 → 执行时调用。而且关键不是"接通",而是"接通后仍然可控"(权限、超时、重试、审计)。你能系统讲吗?

🙋‍♂️我:还要做权限检查和治理?

👔面试官:对。MCP 做权限检查,还要和环境级安全沙箱一起工作。容器、只读挂载、系统级隔离都是必要的。

💡 简要回答 ​

接入流程:

  1. 发现:查询 MCP Server 暴露的 Tools/Resources
  2. 转换:转成 Agent 能消费的工具描述和 schema
  3. 注册:纳入 Agent 的工具注册和调度体系
  4. 执行:模型决定调用 → Host 发起 MCP 请求 → 结果回传

关键治理:

  • 权限:鉴权、白名单、最小权限
  • 超时:防止长时间挂起
  • 重试:失败处理策略
  • 审计:调用日志、追踪

安全:MCP 权限检查 + 环境沙箱(容器、只读挂载、系统隔离)

📝 详细解析 ​

接入流程 ​

发现阶段:

python
# 连接 MCP Server,获取能力列表
tools = await mcp_client.list_tools()

转换阶段:

python
# 把 MCP Tool 转成 Agent 内部格式
agent_tools = [
    {
        "name": tool.name,
        "description": tool.description,
        "parameters": tool.inputSchema
    }
    for tool in tools
]

注册阶段:

python
# 绑定到 Agent
agent = Agent(tools=agent_tools, llm=llm)

执行阶段:

用户提问 → 模型决策 → 输出 tool_calls → Host 调用 MCP → 结果回传 → 模型继续

治理要点 ​

权限:

  • 每个 MCP Tool 配置鉴权信息
  • 用户级权限隔离
  • 敏感操作二次确认

超时:

  • 设置调用超时(如 30 秒)
  • 超时后友好降级

重试:

  • 网络错误自动重试(最多 3 次)
  • 业务错误不自动重试

审计:

  • 记录每次调用(时间、参数、结果、耗时)
  • 支持 tracing

安全沙箱 ​

MCP 权限:协议层控制"能不能调"

环境隔离:沙箱控制"调了也跑不出边界"

  • 容器:Docker 隔离
  • 只读挂载:防止修改宿主机
  • 网络隔离:限制外网访问
  • 资源限制:CPU、内存上限

🎯 面试总结 ​

接入:发现 → 转换 → 注册 → 执行。治理:权限、超时、重试、审计。安全:MCP + 沙箱两层。


章节首页 · ← Q37 · Q39 →

最后更新2026-05-01
难度P1
频率medium
阅读5 min
主题agent / tool-use / protocol
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题