admin管理员组

文章数量:1436933

MCP介绍 &使用案例

1、概述

2025 年是智能体的元年,也注定了是智能体集中爆发的一年。 但是,在AI智能体的世界里,有两个互联领域的重大挑战。

  • 第一个,就是智能体 Agent如何与外部的工具进行交互:比如如何访问数据库,执行代码......
  • 第二个,就是同一个平台的不同的Agent之间。以及不同平台的不同的Agent之间如何通过协作的方式共同来完成任务。

这两个挑战,就涉及到了标准化的协议。 在计算机的世界里,标准化的协议是实现高效沟通的基础。 这里mcp就是用来解决第一个挑战的。 最近谷歌发布了 A2A 协议,它就是用来解决第二个问题的。 可以说!MCP 的出现必然的会大幅加快智能体普及的进程。 甚至说大语言模型,尤其是像 DeepSeek + MCP 就约等于智能体。

img

如果大模型不能够使用外部的工具,那大语言模型其实就是一个简单的聊天机器人。甚至连查询天气,查询当前的时间的功能都做不到。

所以调用工具是大模型进化为智能体的一个关键。 那MCP就是大语言模型连接万物的一个接口,我们只需要简单的几行代码就可以去接入这样的海量的外部的工具。那这样智能体的开发门槛大大的降低了。特别是现在还有cursor ,windsurf 这些 AI coding 工具的崛起。也可以让我们一些不是程序员的普通人,小白也可以通过代码去开发自己的智能体。

img

如何理解LLM 和MCP?

LLM 就是相当于你有一个超级聪明的机器人朋友,名字叫“语言大师”,它读了全世界的书和文章,能用中文、英文跟你聊天,帮你写文章、回答问题、编故事。

这个“语言大师”就是LLM(大语言模型)。它靠以前读过的东西,猜测你想说什么,帮你写出很合理的内容。

今天你让它写一封请假邮件,它就会根据它学过的写邮件的套路,帮你写出一封很合适的请假邮件。 但是现在你不只是想让它写邮件,你还想让它发邮件。可惜的是这个“语言大师”有个小问题:它只能用脑子里的知识回答问题。 这时候,你需要一个“万能助手接口”,让“语言大师”可以去调用其他工具,比如帮你发邮件。 这个“万能助手接口”就是MCP(模型上下文协议)。

总之,

LLM 就是那个聪明的机器人朋友,能用语言帮你写东西、回答问题。 MCP 就像给这个机器人装了一个万能的“遥控器”,让它能去调用其他工具,帮你做更多事情。

2、MCP 能干什么?

接下来就来说第一个问题MCP到底能干什么?通过程序员的视角和大众用户的视角呢进行讲解。

2.1 程序员视角

举几个例子。

比如说第一个例子叫做开发部署。

1 开发部署

作为程序员,我们每开发完一个项目,需要把这个项目的版本部署到对应的测试环境中去。 这里就涉及到了比如说GitHub API (代码合并), Jenkins API (构建镜像), Slack API (通知团队) 这些平台的使用,这些平台使用起来都有一些门槛。

那现在我们有了mcp以后啊,我们就可以使用自然语言把需求发给大模型,然后大模型去调用MCP的server。通过链式的方式,去调用相关的这种API,实现项目部署就非常的方便了。

2 数据库查询

那么第二个例子呢?叫做SQL语句的查询,那不管是后端开发程序员还是数据库开发的程序员,以前呢,都需要学习SQL语法是吧,甚至说呢,不同的人编写的这个SQL语句,质量也是不同,然后查询的效率千差万别。

以前,如果我们做这样一个需求:查询某集团部门上个季度的销售额。那你就需要编写精准的SQL语句。

而现在,只需要把这句话发送给大模型,然后大模型再去调用mcp的server。它就可以精准的转化为对应的SQL语句了,进而实现我们的需求。

通过刚才这两个例子。大家能看到mcp的出现能够大大的降低了程序员的一个入行门槛。那作为程序员也需要呢掌握该如何呢去使用MCP,

3 Manus 智能体

第三个例子: Manus 智能体

img

这个Manus前段时间非常火,大家应该也有所关注,至于这个Manus 功能强大与否,这里就不做探讨了。

至少它这个方向是对的,以后会涌现出非常多的类似于Manus,甚至强于Manus的一些智能体。

Manus的一次任务的执行需要进行网页搜索,网页的访问,信息的获取等等,几十个外部的工具。

那么在整个的过程当中,就暴露出来非常致命的问题:调用工作量很大。

Manus 在执行的过程中会使用到很多外部的工具,如果我们用平常的开发方式,发现就需要编写几十个外部的函数(方法),而每一个函数呢,轻轻松松都得几百行的代码。如果做过这个事儿的程序员同行应该比较有共鸣。

那我们编写这些函数以及大模型去调用这些外部工具,这个架构就会非常的复杂。

那如果有了mcp,只要支持对应的这个协议了,我们就可以非常轻松的借助于LLM 大模型 和 各种各样的AI 客户端去访问各种各样的数据源和工具。

2.2 大众用户视角

1 旅游规划

当我们要去旅行了,我们就可以借助 MCP 去访问天气的API,交通的API,地图的API,然后去帮我们去生成一个带实时数据的一个行程方案。

哎! 每逢放假休息的时候,如果有这样的一个智能助手的话呢,是不是省去了大量的时间呢?不过节假日出去玩基本也是人山人海哈。还是推荐错峰出行比较好。

当然了,如果没有mcp的话呢,也并非我们做不了这个事儿啊,只不过这个过程当中啊,需要程序员在代码当中预先编写好如何去调取天气API,交通的API和地图的API,这个难度的话呢,就非常大了。

2 联网搜索

这个大模型,比如像 DeepSeek,在交互的时候经常是需要联网去检索最新的信息。但这时候可能会存在这样的问题,

第一个并非所有的LLM 大模型都支持联网的功能,有的时候这个大模型是不具备联网功能,有的呢,是你对应的这个客户端不支持,比如像以前的这个版本的 ChatGPT就不支持联网。

第二就是即使知识联网,它也有可能不包含你习惯使用的搜索引擎,比如说你习惯使用这个谷歌去搜索资料,但是它就没有这个功能,那就很烦恼是吧?

这举个类似的例子,大家看这个图。

img

如果没有mcp的情况下用户只能够去等待开发者添加特定的搜索引擎的支持。

那现在如果有了mcp以后呢?我们只需要进行简单的配置就可以了。

img

不管你是什么,只要你基于这个MCP的协议,我们去访问什么样的搜索引擎都可以。

3 业绩的查询

你是公司的一个员工啊,现在需要查询上一个季度的营业额。那我们就可以借助mcp,让大模型调用CRM系统 API ( 获取客户数据) + 财务系统的API (调取报表)和邮件的API (发送总结报告),组合起来把这个事给完成了。

3、MCP 是什么?

官网 :Introduction - Model Context Protocol

img

3.1 MCP 的理解

MCP (Model Context Protocol,模型上下文协议)。2024年11月底由Anthropic公司推出, Anthropic 大家可能不熟悉,但是 Claude 大家获取多多少少都知道,这个Claude 系列的模型就是 由 Anthropic 公司推出的。

MCP 目的就是为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具进行通信,类似于电脑的USB接口标准,通过统一接口访问各种外设 (鼠标,音箱,耳机)

img

以前传统AI 集成外部工具,需要为每个数据源构建独立连接,可以被视为一个M * N 的问题。就是 M 个大模型 和 N 个插件

img

那有了这个MCP 协议之后呢,就可以转换成 M + N 的问题。

img

我们只需要基于这套协议去访问各种各样的工具就ok。

3.2 推广时间线

img

4、哪些平台支持MCP查询

随着越来越多的Server接入MCP协议,未来AI能够直接调用的工具将呈现指数级增长,这能从根源上打开Agent能力的天花板。未来 AI 生态系统将变得更加开放和强大。 然后就是目前社区的 MCP Server 还是比较混乱,有很多缺少教程和文档,很多的代码功能也有问题,大家只能凭经验和参考官方文档了。 换一个角度讲这也是第一个吃螃蟹的代价啊,当然红利你也会吃到。

4.1 GitHub

官方:GitHub - modelcontextprotocol/servers: Model Context Protocol Servers

img

热门:awesome-mcp-servers/README-zh.md at main · punkpeye/awesome-mcp-servers · GitHub

img

4.2 其他平台

Glama:MCP servers | Glama

img

Smithery:Smithery - Model Context Protocol Registry

img

Cursor: MCP Servers for Cursor

img

MCP.so :MCP Server(MCP 服务器)

img

阿里云百炼:百炼控制台

img

5、 MCP 应用场景 & 通信机制

5.1 应用场景

img

5.2 通信机制

根据 MCP 的规范,当前支持3种通信机制。什么是通信机制呢?说得直白一些就是信息的传输方式。

1 stdio (标准输入输出)

这种方式就是客户端(比如Cursor) 和服务端(MCP Server) 都运行在你本地电脑上。客户端通过程序的标准输入(stdin)发送消息给服务端,服务端从标准输入接收请求,处理后通过标准输出(stdout)把结果返回给客户端。整个过程不需要网络,通信简单、快速且稳定。这也是MCP 默认的通信方式。

  • 优点:
    • 无需外部网络依赖
      • 通信速度快
      • 可靠性高且易于调试
  • 缺点:
    • 配置复杂,需提前安装命令行工具
      • 单进程通信,无法并行处理多个请求
      • 进程资源开销大,不适合本地运行大量服务

2 SSE(Server-Sent Events, 服务器发送事件)

这种大家应该也能猜到了,就是我们的客户端和服务端,就不再一起了,这些MCP服务器并不需要运行在用户本地,而是部署在云端或远程服务器上。用户只需通过配置一个URL地址,就能让本地的客户端应用(例如Cusror)通过网络调用这些远程的MCP服务,完全不用自己搭建和维护服务器。

img

像阿里百炼的MCP服务市场中提供很多MCP 服务。 例如高德的MCP ,就是通过 SSE 协议通信的。

  • 优点:
    • 支持服务器主动推送消息,适合实时数据流
    • 基于HTTP,易于穿透防火墙和代理
    • 适合远程单向推送
    • 配置方式非常简单,基本上一个链接就能解决。
  • 缺点:
    • 需要保持长连接,服务器资源消耗较大
    • 断线后不能自动恢复连接,稳定性欠佳
    • 不支持无状态服务器,扩展性有限
    • 如果使用的是其他人提供的服务端,那安全性有待商榷

3 Streamable HTTP(可流式HTTP)

这是MCP最新支持的传输方式,可以理解成升级版的HTTP通信。它不像SSE那样必须一直保持连接,而是你可以随时发消息给服务器,服务器也可以随时回复你,支持双向流式传输。双方像在“对话”一样灵活高效。相比 SSE,它更适合需要双向互动和更复杂通信的远程场景。

  • 优点
    • 支持双向实时通信,客户端和服务器都能随时发消息
    • 基于标准HTTP,兼容性好,支持无状态服务器
    • 资源利用更高效,适合高并发和云端部署
    • 解决了SSE的断线恢复和单向通信问题
  • 缺点:
    • 实现稍复杂,需要支持HTTP流式传输和动态升级
    • 作为新机制,生态和工具支持还在完善中

6、UVX 和 NPX 指令对应环境的安装

我们要开发 MCP 服务 和使用 MCP服务,大部分都是选择了 stdio 这种方式。 那在开始前也做一些准备工作。

stdio 的本地环境目前流行的有两种:

  • 一种是python 编写的服务,要安装 uvx
  • 一种是TypeScript 编写的服务,要安装 npx

像还有其他的编程语言例如 Java ,Go 现在也可以编写MCP 服务。大家可以去搜索一下相关的资料。

6.1 安装 uvx

有两种安装方式,一种是如果你的电脑已经安装好了python,那可以使用下面的命令进行安装。

代码语言:Python复制
pip install uv

第二种就是,在Windows下可以通过PowerShell运行命令来安装uv

代码语言:Python复制
powershell -ExecutionPolicy ByPass -c "irm .ps1 | iex”

我是直接使用第一种方式,后面还可以使用python来开发我们自己的mcp 服务,如果你没有安装 python,可以看看这篇文章 Python安装

img

安装好后,重启终端并运行以下命令检查是否正常:

代码语言:Python复制
uv --version

uvx --help
img

6.2 安装npx

这个大家可以直接看我这篇文章:Node js 安装

安装好输入下面的命令验证就好

代码语言:Python复制
node -v

npm -v
img

7、 Trae中 使用MCP 案例

7.1 安装

最近 Trae 也支持了 MCP 的 功能, 大家可以通过官网链接下载 Tare 使用:Trae - AI 原生 IDE

img

7.2 配置MCP

我们打开 Tare。

img
img
img

点击MCP 。

img

点击添加,我们就可以看到 Trae 提供的 MCP 市场。

如果我们想要配置自己的编写MCP服务,就点击这个手动配置

img
img

直接选择这个原始配置,它会打开一个 mcp.json 的文件,我们直接在这里面配置我们的mcp 服务。

img

7.3 案例:旅游计划生成

首先我们要安装一些MCP server 服务。

  1. MCP 服务安装

我们需要 Excel ,高德地图,filesystem

1.1 Excel 服务 安装

首先我们下载这个Excel 服务的代码:GitHub - haris-musa/excel-mcp-server: A Model Context Protocol server for Excel file manipulation

img

有git 的也可以直接通过 git 命令直接 clone 代码到自己的本地,像我一样通过下载 zip 的,下载到本地后,然后解压。

然后打开终端,导航到项目的目录底下。

代码语言:Python复制
cd 你的项目目录
img

安装项目所需依赖,这里需要你已经安装了 UVX, 然后执行下面的命令

代码语言:Python复制
uv pip install -e .

运行 excel-mcp-server

代码语言:Python复制
uv run excel-mcp-server
img

当然,如果你想要自定义端口号,可以根据你的电脑系统来选择使用下面的命令,。

代码语言:Python复制
#Bash/Linux/macOS
export FASTMCP_PORT=8080 && uv run excel-mcp-server

#Windows PowerShell
$env:FASTMCP_PORT = "8080"; uv run excel-mcp-server
img

然后在tare 中 添加这个mcp 服务。

img

粘贴下面的内容,把url 和 env 修改成你自己的地址。

代码语言:Python复制
{  
"mcpServers": {
    "excel": {
      "url": "你的服务地址:http://localhost:8000/sse",
      "env": {
        "EXCEL_FILES_PATH": "你的授权目录:/path/to/excel/files"
      }
    }
  }
}
img

点击确认后,我们就可以看到 mcp 的状态了,和可以使用那些功能。

img

我们可以来测试一下。

img

这样我们就可以知道这个mcp 工具是否可用了。

1.2 高德地图服务

我们打开高德地图的MCP server 文档 :概述-MCP Server | 高德地图API

img

我们首先登录高德地图平台。然后点击注册成为开发者:注册成为开发者 。

img

然后点击应用管理 ,创建新应用。

img
img

添加 key 。

img

复制key

img

然后粘贴到下面的代码中

代码语言:Python复制
{
  "mcpServers": {
    "amap-amap-sse": {
      "url": ";
    }
  }
}

接着打开trae,添加高德地图mcp 服务。

img
img

然后把 代码粘贴进去。接着查看mcp 的状态。

img
1.3 filesystem服务

这个服务,Tare 内置了的,所以我们可以跳过。

如果你使用其他的客户端没有,可以参考一下。

这个我们直接使用 Tare 提供的MCP 市场直接搜索。

img

然后它就会打开一个预览页面。我们往下滑,就可以找到相关的代码。

img

这里我选择 npx 的方式。点击复制代码。根据你的系统选择不同的代码。

代码语言:Python复制
#macOS
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

#Windows
{
  "mcpServers": {
    "filesystem": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\code\\mcp\\mcp-test"
      ]
    }
  }
}

其他的就是那个文件目录还是要改成你自己要授权的目录。

img

然后把代码粘贴进去。

img

至此,我们所需要的MCP 服务都准备好了。

img

2.开始实操

根据 Tare 的要求,MCP 要在智能体中才能使用,所以我们要选择一个智能体。

img

然后输入下面的提示词。可复制提示词:MCP 使用案例可复制提示词

代码语言:python代码运行次数:0运行复制
现在交给你一个任务,根据下面的流程图编写一个杭州一日游的出行攻略

flowchart TD
    开始["开始任务"] --> 获取地铁线路["从高德地图MCP服务获取杭州东站到西湖的地铁线路"]
    获取地铁线路 --> 创建Excel表1["创建Excel表格:beijing_trip"]
    获取地铁线路 --> 创建Excel表2["创建Excel表格:subway_trips"]
    创建Excel表1 --> 存储数据1["将杭州东站到西湖的地铁数据存入beijing_trip表"]
    创建Excel表2 --> 存储数据2["将杭州东站到西湖的地铁数据存入subway_trips表"]
    存储数据1 --> 获取美食信息["从高德地图MCP获取西湖附近的美食信息"]
    存储数据2 --> 获取美食信息
    获取美食信息 --> 筛选美食店铺["筛选至少三家美食店铺"]
    筛选美食店铺 --> 创建Excel表3["创建Excel表格:location_foods"]
    创建Excel表3 --> 存储美食数据["将美食店铺信息存入location_foods表"]
    存储美食数据 --> 创建文件夹["创建'杭州旅行'文件夹"]
    创建文件夹 --> 创建TXT1["创建第一个TXT文件"]
    创建文件夹 --> 创建TXT2["创建第二个TXT文件"]
    创建TXT1 --> 提取数据1["从第一个数据库表中提取内容"]
    创建TXT2 --> 提取数据2["从第二个数据库表中提取内容"]
    提取数据1 --> 存储TXT1["将提取的内容存入第一个TXT文件"]
    提取数据2 --> 存储TXT2["将提取的内容存入第二个TXT文件"]
    存储TXT1 --> 生成HTML["生成精美的HTML前端展示页面"]
    存储TXT2 --> 生成HTML
    生成HTML --> 存储HTML["将HTML文件存放在'杭州旅行'文件夹中"]
    存储HTML --> 完成["任务完成"]

    subgraph 子任务1["子任务1:获取地铁线路并创建Excel"]
    获取地铁线路
    创建Excel表1
    创建Excel表2
    存储数据1
    存储数据2
    end

    subgraph 子任务2["子任务2:获取美食信息并存储"]
    获取美食信息
    筛选美食店铺
    创建Excel表3
    存储美食数据
    end

    subgraph 子任务3["子任务3:创建文件夹和TXT文件"]
    创建文件夹
    创建TXT1
    创建TXT2
    提取数据1
    提取数据2
    存储TXT1
    存储TXT2
    end

    subgraph 子任务4["子任务4:生成HTML前端展示页面"]
    生成HTML
    存储HTML
    end

    classDef apiCall fill:#f9d5e5,stroke:#333,stroke-width:1px
    classDef excelOp fill:#eeeeee,stroke:#333,stroke-width:1px
    classDef fileOp fill:#e3f2fd,stroke:#333,stroke-width:1px
    classDef frontendDev fill:#e8f5e9,stroke:#333,stroke-width:1px
    class 获取地铁线路,获取美食信息 apiCall
    class 创建Excel表1,创建Excel表2,创建Excel表3,存储数据1,存储数据2,存储美食数据 excelOp
    class 创建文件夹,创建TXT1,创建TXT2,存储TXT1,存储TXT2,存储HTML fileOp
    class 生成HTML frontendDev

我使用的DeepSeek V3- 0324。

img

3. 最终效果

首先是Excel 。

img
img
img

然后是两个txt 文档

img

最后是HTML。感觉不是很精美哈,捂脸。

img

8、Cursor 中使用 MCP 案例

之前我们使用Trae 中生成的HTML ,感觉不是很好看,可能是大模型的原因,也有可能是我们的提示词的原因。

这次我们换到Cursor。Cursor中能用的模型也变多了。

8.1 安装MCP 服务

有了在 Tare 中配置,我们就不需要这么复杂了,直接打开Tare 中的 mcp.json 。

img
img
img
img
img

直接把这个配置,然后新建一个文件夹,例如 mcp_test2, 然后用 cursor 打开,接着在新项目中新建文件夹:.cursor 。

在 .cursor 文件夹下面新建 mcp.json 文件,然后把从Tare 复制的 MCP 配置直接粘贴进去。

代码语言:json复制
{
    "mcpServers": {
      "excel": {
        "url": "http://localhost:8088/sse",
        "env": {
          "EXCEL_FILES_PATH": "C:\\code\\mcp\\mcp-test2"
        }
      },
      "amap-amap-sse": {
        "url": ";
      }
    }
  }
img

8.2 查看MCP 服务状态

img
img
img

把我们的MCP 服务全部开启。在项目中的 mcp.json 中配置的mcp 是属于项目级的,也就是说只在这个项目才会出现。全局的可以点击 Add new global MCP server 进行添加,也就是说所有项目都可以使用到这些MCP。

img

8.3 实操

还是复制下面的提示词。可复制提示词:MCP 使用案例可复制提示词

代码语言:python代码运行次数:0运行复制
现在交给你一个任务,根据下面的流程图编写一个杭州一日游的出行攻略

flowchart TD
    开始["开始任务"] --> 获取地铁线路["从高德地图MCP服务获取杭州东站到西湖的地铁线路"]
    获取地铁线路 --> 创建Excel表1["创建Excel表格:beijing_trip"]
    获取地铁线路 --> 创建Excel表2["创建Excel表格:subway_trips"]
    创建Excel表1 --> 存储数据1["将杭州东站到西湖的地铁数据存入beijing_trip表"]
    创建Excel表2 --> 存储数据2["将杭州东站到西湖的地铁数据存入subway_trips表"]
    存储数据1 --> 获取美食信息["从高德地图MCP获取西湖附近的美食信息"]
    存储数据2 --> 获取美食信息
    获取美食信息 --> 筛选美食店铺["筛选至少三家美食店铺"]
    筛选美食店铺 --> 创建Excel表3["创建Excel表格:location_foods"]
    创建Excel表3 --> 存储美食数据["将美食店铺信息存入location_foods表"]
    存储美食数据 --> 创建文件夹["创建'杭州旅行'文件夹"]
    创建文件夹 --> 创建TXT1["创建第一个TXT文件"]
    创建文件夹 --> 创建TXT2["创建第二个TXT文件"]
    创建TXT1 --> 提取数据1["从第一个数据库表中提取内容"]
    创建TXT2 --> 提取数据2["从第二个数据库表中提取内容"]
    提取数据1 --> 存储TXT1["将提取的内容存入第一个TXT文件"]
    提取数据2 --> 存储TXT2["将提取的内容存入第二个TXT文件"]
    存储TXT1 --> 生成HTML["生成精美的HTML前端展示页面"]
    存储TXT2 --> 生成HTML
    生成HTML --> 存储HTML["将HTML文件存放在'杭州旅行'文件夹中"]
    存储HTML --> 完成["任务完成"]

    subgraph 子任务1["子任务1:获取地铁线路并创建Excel"]
    获取地铁线路
    创建Excel表1
    创建Excel表2
    存储数据1
    存储数据2
    end

    subgraph 子任务2["子任务2:获取美食信息并存储"]
    获取美食信息
    筛选美食店铺
    创建Excel表3
    存储美食数据
    end

    subgraph 子任务3["子任务3:创建文件夹和TXT文件"]
    创建文件夹
    创建TXT1
    创建TXT2
    提取数据1
    提取数据2
    存储TXT1
    存储TXT2
    end

    subgraph 子任务4["子任务4:生成HTML前端展示页面"]
    生成HTML
    存储HTML
    end

    classDef apiCall fill:#f9d5e5,stroke:#333,stroke-width:1px
    classDef excelOp fill:#eeeeee,stroke:#333,stroke-width:1px
    classDef fileOp fill:#e3f2fd,stroke:#333,stroke-width:1px
    classDef frontendDev fill:#e8f5e9,stroke:#333,stroke-width:1px
    class 获取地铁线路,获取美食信息 apiCall
    class 创建Excel表1,创建Excel表2,创建Excel表3,存储数据1,存储数据2,存储美食数据 excelOp
    class 创建文件夹,创建TXT1,创建TXT2,存储TXT1,存储TXT2,存储HTML fileOp
    class 生成HTML frontendDev
img

8.4 效果

首先是Excel 。

img
img
img

然后是txt

img
img

最后是HTML.

img

本文标签: MCP介绍 amp使用案例