云计算百科
云计算领域专业知识百科平台

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: calculatorassistant
    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\\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)想要解决的问题。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!