《项目统筹与技术选型思考:MCP协议与工具化架构》
【摘要】 一个复杂的系统需要清晰的边界和协议。本文将探讨我们为何选择MCP(Model Context Protocol)作为核心工具协议,以及这种“工具化架构”如何保障项目高效协同与未来扩展。
【正文】
作为项目统筹者,我的一个重要职责是定义模块间的“通信协议”。在调研了多种集成方式后,我们决定采纳CodePlus中使用的MCP协议,来实现AI Agent与底层能力(如沙箱)的解耦。
1. 为什么是MCP?
传统集成方式是直接HTTP API调用。但让AI直接调用HTTP API是笨拙的,需要它理解URL、参数格式等。MCP的出现解决了这个问题。它是一套标准协议,用于将任何能力(函数、API、数据库查询)封装成AI可理解和调用的“工具”。
-
对AI友好:AI只需要知道工具的名字、描述和输入参数格式,无需关心其网络位置和实现细节。
-
解耦与标准化:沙箱团队(泽荣)只需按照MCP Server标准实现并暴露
compile_and_run工具。AI团队(我)只需在Client端声明这个工具,即可直接调用。双方约定好工具接口后,可以并行开发。
2. 我们的工具化架构
受CodePlus启发,我们规划了AlgoTutor的核心工具集:
-
execute_code(MCP工具):由沙箱服务提供,执行代码并返回结果。 -
retrieve_similar_solutions(内部工具):由RAG服务(玥晨)提供,检索相似题解。 -
query_user_profile(内部工具):由用户画像服务(玥晨)提供,查询用户能力。 -
get_personalized_roadmap(内部工具):由推荐算法服务(玥晨)提供,获取学习路径。
ToolRouter(工具路由器)将根据场景动态组装工具列表。例如,在模拟面试的“在线编码”环节,可能只提供execute_code工具;在日常练习的深度复盘环节,则提供全部工具。
3. 个人实践与思考
为了验证MCP的可行性,我首先搭建了一个最简单的MCP示例。我写了一个提供“计算器”和“查时间”两个工具的Server,然后用一个独立的Client程序去调用它。这个过程让我熟悉了MCP的SSE通信方式和Tool的定义格式。
接下来,我与泽荣明确了沙箱工具的接口规范:
{
"name": "execute_code",
"description": "Compiles and executes a given piece of Java code with provided standard input.",
"inputSchema": {
"type": "object",
"properties": {
"code": { "type": "string" },
"stdin": { "type": "string" }
}
}
}
这个明确的约定,是他开发沙箱和我集成工具的“合同”。这种基于协议和接口的协作方式,极大地提升了团队开发效率,降低了联调成本。我坚信,这种工具化的架构设计,不仅是实现当前功能的关键,也为未来集成更多能力(如代码风格检查、图形化算法演示工具)留下了优雅的扩展空间。
更多推荐


所有评论(0)