在人工智能迅速发展的当下,各类新技术、新协议层出不穷,Model Context Protocol(MCP)便是其中备受瞩目的一个。MCP 作为一种开放协议,致力于实现 LLM 应用与外部数据源及工具的无缝衔接,为人工智能应用开发开拓了新路径。如果你也想踏入 MCP 领域,开启高效的 AI 应用开发之旅,那么这篇文章就是你的绝佳指南,它将助力你从 0 基础起步,逐步成长为 MCP 应用开发的行家。

1、为什么需要MCP?

1.1 LLM 现状

我们都知道LLM只能预测文本,仅仅限于回答,而不做事情。比如让LLM发邮件或者写代码,LLM只会给出一个步骤,而不会帮我们去实现。在这里插入图片描述如果需要LLM能做具体的事情,不只是口头说说,比如实际去发邮件,就需要用到连接工具Tools,比如发邮件的工具。将LLM的输出内容,输入到Email Tool工具中进行发邮件的操作在这里插入图片描述这样我们的AI才更像是贾维斯(钢铁侠中的人工智能),能帮我们做事情的,而不仅仅教我们如何做事情的。如果我们不仅仅需要LLM发邮件,而是做一些其他的事情,比如记一个Todolist,此时就也需要另一个Tool。将LLM的输出内容,输入到Todolist Tool工具中进行记录Todo的操作在这里插入图片描述但是这也仅仅是 FanOne 同学的做法,也就是说在 LLM 和 Tool 交互的这段协议是只有 FanOne 知道,别人如果想要用FanOne同学写的 Email Tools 来发邮件,就要使用FanOne写的协议来连接 LLM 和 Tool。

1.2 Tool 现状

此时FanTwo同学觉得这段FanOne同学写的协议不好,很臃肿,代码逻辑不强,导致发邮件的时候经常出错,于是自己写了一套更好、更快的协议在这里插入图片描述但是FanThree也觉得FanTwo协议也不好,于是又开始一个循环,再次创建新的协议… 这样会导致越来越多的连接协议出现。做一个协议的代价是很大的,既要兼顾LLM的输出输入,也要兼顾Tool的输出输入。

为了规范LLM到Tools协议的连接,MCP就出现了,只要大家都遵守这个协议,做的工具也就能直接复用,FanOne同学基于MCP协议做的Email Tool,FanTwo只要了解过MCP就知道如何使用Email Tool了

在这里插入图片描述

1.3 类比

有点像我们今天的蓝牙协议,USB协议之类的,通过蓝牙协议让各种无线设备进行连接,通过统一的USB接口协议,用一根线就能连接各种设备。通过一个约定俗成的对接协议,统一输入输出源,抽象各种AI应用,防止重复造轮子。在这里插入图片描述我们明白MCP其实是一个协议之后,我们再来讲讲MCP的原理。

2、 MCP 原理是什么?

MCP 全称 Model Context Protocol,模型上下文协议,是 Anturopic 公司在2024年11月推出的一种开放协议,旨在统一规范大语言模型与外部数据源和工具之间的通信。在这里插入图片描述

2.1 MCP 组件分析

MCP 基于CS架构,由多个组件构成

  • Host:宿主程序,用户直接交互的桌面应用程序,一般就是我们的PC电脑服务器。
  • MCP Client:MCP客户端,在主机Host和MCP Server中保持连接,比如Claude客户端,Chatbox,Cline这些应用程序都内置了MCP Client,能配置MCP Server。
  • Local Data Source:本地数据源,比如本地redis、mysql之类的。

在这里插入图片描述读写本地资源

  • Remote Service:远程服务,比如远程的github、gitlab之类的。

在这里插入图片描述读写远程资源

2.2 MCP Server

MCP Server 通过MCP协议连接,提供功能给 Client,可以提供主要的类型功能,分成两种类型:

  • command:需要在本地启动一个MCP Server进程,Client 和 Server 通过 stdio(标准输入输出)传输协议进行交互,主要是实现一些本地执行的功能,比如数据库读取,操作系统命令,文件操作等等。

在这里插入图片描述stdio

  • SSE:Server-Send Events Client和远端的Server通过SSE传输协议进行交互。基于HTTP,通过长连接的方式持续获取消息。也就是客户端建立TCP链接后,向服务端发起一个HTTP请求,服务端接收到请求后把要返回的内容,按照事件流的方式,不断推送给客户端。跟下载文件一样,所有内容推送完了,连接才关闭。

在这里插入图片描述

目前社区已经有很多的开源 MCP Server了 mcp server examples

2.3 其他概念
  • Resources 资源:可以被客户端读取的静态资源,类文件数据,比如日志、数据库、图像等等。

在这里插入图片描述本地资源

  • Tools 工具:可以被LLM调用的工具,但需要用户批准,每个Tool都由一个唯一标识的名称,具体描述以及功能参数组成。 Tool 使得模型可以与外部系统交互,通过调用API或者执行计算。

在这里插入图片描述Tool 访问远程服务资源

{
  name: string;          // 工具的唯一标识的名称
  description?: string;  // 具体描述
  inputSchema: {         // 工具的输入参数
    type: "object",
    properties: { ... }  // 工具特定的输入参数
  }
}
  • Prompts 提示: 预先编写的提示词模版,帮助用户完成特定的任务
{
  name: string;              // 提示词的唯一标识
  description?: string;      // 具体描述
  arguments?: [              // 可选的参数
    {
      name: string;          // 参数标识名称
      description?: string;  // 参数描述
      required?: boolean;    // 参数是否必须
    }
  ]
}
2.3 基础协议 & 数据结构

MCP 是采用JSON RPC 2.0 来进行通信的。

  • Requests 请求数据结构:
interface Request {
  method: string;
  params?: { ... };
}
  • Results 成功的响应数据结构
interface Result {
  [key: string]: unknown;
}
  • Errors 失败的响应结果数据结构
interface Error {
  code: number;
  message: string;
  data?: unknown;
}

在这里插入图片描述

3. MCP 怎么用?

我们了解完MCP之后,我们再来看看如何使用MCP。根据上文介绍我们知道,需要以下:

  1. MCP Client:这里就使用Cline了,因为vscode中插件就有。
  2. MCP Server:平时Go用的多,本文就基于Go语言实现一个发邮件的Server吧
3.1 配置MCP Client

下载vscode,并且在插件中找到 Cline在这里插入图片描述点击上方配置MCP Server,我们可以使用第三方的,也可以使用自己编写的。在这里插入图片描述点击 installed 进行配置

在这里插入图片描述在这里插入图片描述点击Done即可,这个服务地址就是我们编写的MCP Server,下面我们来讲讲MCP Server的构建

3.2 编写MCP Server

新建一个MCP Server,并添加对应的工具

// 定义服务
s := server.NewMCPServer("Email Sender", "1.0.0") // 定义服务
tool := mcp.NewTool("hello_world",                // 定义工具
 mcp.WithDescription("Say hello to someone"),
 mcp.WithString("email", mcp.Required(), mcp.Description("The email address to send")),
 mcp.WithString("content", mcp.Required(), mcp.Description("The email content to send")),
)
s.AddTool(tool, emailHandler) // 添加工具
if err := server.ServeStdio(s); err != nil {
 fmt.Printf("Server error: %v\n", err)
}

具体的校验函数和发送邮箱逻辑

func emailHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// 校验参数
 email, ok := request.Params.Arguments["email"].(string)
if !ok {
returnnil, errors.New("email must be a string")
 }
 content, ok := request.Params.Arguments["content"].(string)
if !ok {
returnnil, errors.New("content must be a string")
 }
// 具体的发送逻辑
 emailSender := NewEmailSender()
 err := emailSender.Send(email, content, content)
if err != nil {
returnnil, err
 }
return mcp.NewToolResultText(fmt.Sprintf("Send %s with content about %s Successfully", email, content)), nil
}

我们只需要执行 go build main.go 获取可执行文件,这个可执行文件,就是上面配置的服务地址。

具体的email发送逻辑就不过多展开了,源码在github上https://github.com/CocaineCong/mcp-server-email ,感兴趣的同学可以试试。

3.3 实验

当我们让LLM发邮件的时候在这里插入图片描述LLM获取了我们的批准后便开始发邮件。在这里插入图片描述发送成功的返回在这里插入图片描述效果:在这里插入图片描述

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐