Appearance
38. Agent 应该如何接入 MCP 工具?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:Agent 应该如何接入 MCP 工具?
🙋♂️我:把 MCP Tools 转成 Agent 能用的工具格式。
👔面试官:对,但还有:发现 MCP Server 的能力 → 转换 schema → 工具注册 → 执行时调用。而且关键不是"接通",而是"接通后仍然可控"(权限、超时、重试、审计)。你能系统讲吗?
🙋♂️我:还要做权限检查和治理?
👔面试官:对。MCP 做权限检查,还要和环境级安全沙箱一起工作。容器、只读挂载、系统级隔离都是必要的。
💡 简要回答
接入流程:
- 发现:查询 MCP Server 暴露的 Tools/Resources
- 转换:转成 Agent 能消费的工具描述和 schema
- 注册:纳入 Agent 的工具注册和调度体系
- 执行:模型决定调用 → 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 + 沙箱两层。