Skip to content

⚠️ Important Notice

This post was last updated on: which was . Please pay attention to its timelines.

出现MCP的背景

出现一个新技术必然是现有技术存在局限性,MCP的出现是为了弥补大模型数据库有限的问题。

每家公司推出的大模型都有自己的训练集,但是这个训练集是有限的,并不是什么资料都有,比如公司的隐私资料。想要大模型将公司的隐私资料添加进训练集,现在就几种方案:

  • 微调成本太高,需要重新训练,并且时间周期较长,虽然最后的效果很高;
  • RAG:检索增强生成。相对微调来说要简单很多,但是精准度并不高,最终效果并不理想。
  • Function Call:让大模型能和外部系统交互,从而完成特定任务。

MCP和Function Call非常接近,或者说就是对Function Call的一种规范化的协议。

Funciton Call提供了大模型和外部系统交互的能力,比如大模型遇到无法直接回答的问题,就会调用Function Call(天气查询、位置查询等)获取到信息后再生成回答。

但是每家大模型为了保持独特性,提供的接口各不相同,一个相同的Function Call在A公司的大模型能用,但放到B公司的大模型就不适用了。

所以在这种情况下,MCP就出现了。

MCP基础知识

MCP全称Model Context Protocol模型上下文协议,是由Anthropic公司(Claude大模型)推出的一个开放标准协议。

通过MCP这个统一的规范,让大模型不管是连接数据库、第三方API、或访问本地文件等各种外部资源,都更加的标准化、可复用。

分为三个部分:

  • MCP Host:大模型客户端,一般是AI Agent;
  • MCP Client:一般是在大模型客户端实现的;
  • MCP Server:提供服务的;

通过MCP这个协议将MCP Client和MCP Server连接起来,让MCP Host能访问到MCP Server提供的能力。

开发者按照MCP协议进行开发,不需要再去考虑不同模型的兼容问题,可以节省开发的工作量;另外开发出来的MCP Server,因为是通用协议,所以可以直接开放,推动了AI的发展。

MCP Server

是一个轻量级的应用程序,通过标准化的模型上下文协议即MCP公开特定功能。

简单来说就是让大模型能访问特定的数据源或调用特定工具。

常见的MCP Server如:

  • 文件和数据访问类:让大模型能操作、访问本地文件或数据库
  • Web自动化类:让大模型能操作浏览器,实现自动化流程
  • 第三方工具集成类:让大模型能调用第三方平台暴露的API,如高德的MCP Server;

MCP的简单使用

MCP配置

一个高德的配置如下:

json
{
  "mcp": {
    "servers": {
        "amap-maps": {
            "command": "npx",
            "args": [
                "-y",
                "mcprouter"
            ],
            "env": {
                "SERVER_KEY": "hafb27m98aafxn"
            }
        },
    }
  }
}
  • command:指定在命令行通过什么命令来执行。比如通过npx来执行。
  • args:数组,指定传给command的参数

MCP工作流程

首先用户通过客户端和大模型交互,比如询问大模型今天xx天气怎么样,大模型去数据库中匹配,发现没有,于是会带着问题去MCP Server中查询,调用MCP Server提供的能力,MCP Server响应之后将结果返回到大模型,大模型整理之后再返回给用户。

可以看到,只是一个类似微服务中心的概念,不过MCP将其规范化、标准化了。

类型

  • STDIO:标准输入输出。客户端和服务端通过本地进程的标准输入输出直接通信。比如本地开发时直接和本地的MCP服务器交换数据,不需要网络通信。

  • SSE:服务器推送事件。客户端通过HTTP连接到远程服务器,服务器可以主动推送信息。

简单点理解就是,STDIO就是将一个MCP Server下载到本地,直接调用;SSE就是通过HTTP协议来调用远程的MCP Server。

上一次更新: