AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
AI是当下最热的风。在当今AI技术飞速发展的时代,AI的应用已经渗透到我们日常生活的方方面面。然而,随着AI系统的复杂性不断增加,如何让AI具备更强的自主性和灵活性成为了业界关注的焦点。这就引出了Model Context Protocol(MCP)的概念。
题外话
今天没有开始的事,明天绝不会完成 ——歌德。
真正的高手并非都等准备好了再启程,而是在行进中不断完善装备。
“准时出摊”的力量不在于一时的辉煌,而在于持续累积的复利效应。每一次看似微不足道的坚持,都在暗中重塑我们的能力边界和可能性空间。
我们等待灵感,却不知灵感常常诞生于行动之中;我们追求完美开始,却忘了完美本身就是行动路上的幻象;我们希望风险最小,却不明白最大的风险恰恰是从不冒险。
什么是MCP?
MCP(Model Context Protocol) 是一种为 AI 应用设计的开放协议,它让模型在推理过程中,能主动请求外部数据、调用外部工具,甚至管理长时间的对话上下文。
简单理解,MCP 赋予了模型三大超能力:
• 能力扩展 :模型可以调用各种外部系统,比如搜索引擎、数据库、计算工具。
• 实时交互 :模型能够拿到实时数据,而不是靠旧知识硬答。
• 持续对话 :用户和模型之间保持流畅的、有上下文感知的沟通。
MCP 使用 Server-Sent Events (SSE) 保持持久连接,基于 JSON-RPC 进行标准化通信,让开发者可以非常方便地接入。
一句话总结:MCP 让你的AI应用变得聪明且灵活!
MCP有什么用?
MCP赋予了AI应用三大超能力:
- 能力扩展:通过MCP,AI模型可以调用各种外部系统,如搜索引擎、数据库、计算工具等,大大提升了模型的能力边界。
- 实时交互:MCP允许AI模型获取实时数据,而非依赖旧有的知识库,确保了模型的反馈和决策能够基于最新、最准确的信息。
- 持续对话:用户与AI之间的沟通不再局限于简单的问答,而是能够通过流畅、上下文感知的对话,进行更深层次的交流和互动。
可以用来做什么?
- 多智能体协作系统:通过MCP,多个AI智能体可以协同工作,完成复杂任务。
- 任务规划与执行:AI可以根据上下文信息,自主规划和执行任务,提高任务完成效率。
- 自主决策能力:增强AI的自主决策能力,使其能够根据不同的场景和数据做出更为合理的判断。
- 环境感知与适应:MCP让AI能够感知环境变化,并作出相应的适应调整,提升其适应性和智能性。
预测未来有哪些方向?
- 基于MCP开发高度自主的AI智能体:随着技术的发展,AI将更加自主,能够更好地理解和处理复杂的现实世界问题。
- 构建基于MCP的开发者工具:开发更便捷的IDE插件、代码生成工具、调试测试工具和文档生成工具,简化开发流程。
- 面向特定行业的MCP解决方案:根据不同行业的需求,开发定制化的AI解决方案,比如金融风控助手、医疗诊断支持、教育个性化学习和法律智能顾问。
- 智能数据处理与分析工具:通过MCP,AI能够更好地处理和分析数据,如数据清洗、智能报表生成、数据可视化和异常检测。
- 智能知识库与文档管理:帮助构建智能知识库,支持知识图谱构建、语义搜索引擎和自动知识更新。
- 创新的人机交互方式:探索多模态交互、自然语言界面、AR/VR集成和情境感知交互等新型交互方式,提升用户体验。
使用go-zero MCP SDK快速搭建MCP服务
为了帮助开发者更便捷地构建支持MCP协议的AI应用,go-zero团队推出了MCP SDK。go-zero MCP SDK的主要特点包括:
- 实时通信:基于Server-Sent Events (SSE) 实现低延迟、稳定的连接。
- 工具系统支持:动态注册外部工具,支持超时和错误处理。
- 动态提示:支持静态和动态Prompt,参数验证方便快捷。
- 资源管理:外部资源的注册、访问和变更订阅一条龙服务。
- JSON-RPC标准规范:按照JSON-RPC标准处理请求和响应,确保兼容性。
下面通过一个简单的例子,展示如何使用go-zero MCP SDK搭建一个智能计算器。
快速上手示例:打造一个智能计算器
-
写配置文件
config.yaml
:name: calculator-assistant port: 8080
-
写服务端逻辑
main.go
:package mainimport ("context""fmt""log""github.com/zeromicro/go-zero/core/conf""github.com/zeromicro/go-zero/mcp" )func main() {// 加载配置var c mcp.McpConfconf.MustLoad("config.yaml", &c)// 创建 MCP 服务器server := mcp.NewMcpServer(c)defer server.Stop()// 注册计算器工具calculatorTool := mcp.Tool{Name: "calculator",Description: "执行基础数学运算",InputSchema: mcp.InputSchema{Properties: map[string]any{"operation": map[string]any{"type": "string","description": "要执行的操作 (add, subtract, multiply, divide)","enum": []string{"add", "subtract", "multiply", "divide"},},"a": map[string]any{"type": "number","description": "第一个操作数",},"b": map[string]any{"type": "number","description": "第二个操作数",},},},Required: []string{"operation", "a", "b"},Handler: func(ctx context.Context, params map[string]any) (any, error) {var req struct {Operation string `json:"operation"`A float64 `json:"a"`B float64 `json:"b"`}if err := mcp.ParseArguments(params, &req); err != nil {return nil, fmt.Errorf("参数解析失败: %v", err)}// 执行操作var result float64switch req.Operation {case "add":result = req.A + req.Bcase "subtract":result = req.A - req.Bcase "multiply":result = req.A * req.Bcase "divide":if req.B == 0 {return nil, fmt.Errorf("除数不能为零")}result = req.A / req.Bdefault:return nil, fmt.Errorf("未知操作: %s", req.Operation)}// 返回格式化结果return map[string]any{"expression": fmt.Sprintf("%g %s %g", req.A, getOperationSymbol(req.Operation), req.B),"result": result,}, nil},}// 注册工具到服务器if err := server.RegisterTool(calculatorTool); err != nil {log.Fatalf("注册计算器工具失败: %v", err)}fmt.Printf("启动 MCP 服务器,端口: %d\n", c.Port)server.Start() }func getOperationSymbol(op string) string {switch op {case "add":return "+"case "subtract":return "-"case "multiply":return "×"case "divide":return "÷"default:return op} }
-
启动MCP服务器:
在终端中运行以下命令:go run main.go
如果配置正确,您将看到类似以下的输出:
启动 MCP 服务器,端口: 8080
此时,MCP 服务器已经成功运行,您可以通过指定的端口与其交互。
-
配置MCP(Claude Desktop为例):
- 首先确保您已安装最新版本的Claude Desktop。
- 在macOS上,点击菜单栏中的Claude图标,选择"Settings…" -> “Developer” -> “Edit Config”。
- 编辑配置文件,添加MCP服务器信息:
{"mcpServers": {"calculator": {"command": "npx","args": ["mcp-remote", "http://localhost:8080/sse"]}} }
- 重启Claude Desktop应用后,连接成功,输入框右下角将显示工具图标。
交互流程
结语
MCP作为一种开放协议,旨在增强AI模型的能力,使其能够更好地服务于现实世界的需求。随着技术的发展,MCP的应用场景将更加广泛,能够帮助开发者构建更加智能、灵活的AI应用。欢迎任何基于MCP的创新想法!
在AI应用越来越复杂、需求越来越高的今天,单纯靠模型本身已经远远不够了。要想让AI真正成为一个有“行动力”的智能体,它必须能够动态调用外部工具、实时访问最新数据,并与用户持续交互。这,就是Model Context Protocol(MCP)想要解决的问题。