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 main import ( "context" "fmt" "log" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/mcp" ) func main() { // 加载配置 var c mcp.McpConf conf.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 float64 switch req.Operation { case "add": result = req.A + req.B case "subtract": result = req.A - req.B case "multiply": result = req.A * req.B case "divide": if req.B == 0 { return nil, fmt.Errorf("除数不能为零") } result = req.A / req.B default: 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 ", 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)想要解决的问题。