如何构建MCP风格的路由AI代理系统:动态工具暴露、规划、执行与上下文注入
本教程从零构建了一个完整的MCP风格路由代理系统,集成了工具发现、智能路由、结构化规划和执行。系统包含模块化工具服务器(提供网页搜索、本地检索、数据集加载和Python执行),混合路由器结合启发式和LLM推理动态选择工具,以及一个能够规划工具使用、安全调用并合成最终答案的代理。最终演示了多个真实任务,展示了上下文注入、路由策略和受限工具访问如何共同构建可扩展、可解释且高效的代理系统。
本教程将带领读者从零构建一个功能完整的MCP(Model Context Protocol)风格路由代理系统,该系统融合了工具发现、智能路由、结构化规划与执行,形成一个统一的工作流。整个系统基于Python实现,利用OpenAI的API提供LLM推理能力,并集成了DuckDuckGo搜索、scikit-learn数据集、TF-IDF本地检索以及沙盒化Python执行等工具。
首先,我们搭建一个模块化工具服务器。该服务器通过结构化的schema暴露多种能力,包括网页搜索、本地知识检索、内置数据集加载以及安全的Python代码执行。每个工具都通过Pydantic模型定义,包含名称、描述、输入schema和标签,以便后续路由。工具服务器负责注册和调用这些工具,并返回标准化的结果。
接下来,我们实现一个混合路由器。路由器结合启发式规则(如任务关键词匹配)和大语言模型的推理能力,动态决定针对当前任务应该暴露哪些工具。这种方式确保代理只看到最相关的工具,从而提升安全性、减少干扰并降低工具选择熵。路由器输出一个RouteDecision对象,包含选中的工具名称列表和决策理由。
然后,我们设计代理的核心逻辑,分为三个阶段:规划阶段,代理分析任务并决定是否需要使用工具以及调用的顺序;执行阶段,代理依次调用工具,并捕获输出结果;综合阶段,代理将工具输出、检索到的文档以及策略提示注入到提示词中,最终合成回答。上下文注入是MCP的重要原则,它使模型在生成回复时能够充分利用工具返回的信息。我们使用专门的PlanOutput结构来规划工具调用序列,每个ToolCall包含工具名和参数。
为了支持本地知识检索,我们构建了一个基于TF-IDF的向量检索器,预先索引了关于MCP、动态能力暴露、上下文注入、路由策略等概念的文档。代理可以通过vector_retrieve工具获取相关文档片段,增强回答的事实准确性。我们还实现了安全的Python执行沙箱,限制内置函数并捕获标准输出和错误,确保代码执行不会影响系统稳定性。数据集加载工具允许代理快速检查sklearn内置数据集(如iris、wine、breast_cancer、diabetes)的schema、预览和统计信息。
最后,我们通过多个真实任务演示了系统的能力:例如回答关于MCP的问题(使用本地检索)、搜索最新AI新闻(网页搜索)、进行数据分析(Python执行+数据集加载)。整个系统展示了MCP原则——上下文注入、路由策略、受限工具访问——如何结合以构建一个可扩展、可解释且高效的代理系统。代码实现中还包括环境检查、API密钥安全加载、全局配置等准备工作,确保教程可复现。