admin管理员组文章数量:1436933
MCP介绍 &使用案例
1、概述
2025 年是智能体的元年,也注定了是智能体集中爆发的一年。 但是,在AI智能体的世界里,有两个互联领域的重大挑战。
- 第一个,就是智能体 Agent如何与外部的工具进行交互:比如如何访问数据库,执行代码......
- 第二个,就是同一个平台的不同的Agent之间。以及不同平台的不同的Agent之间如何通过协作的方式共同来完成任务。
这两个挑战,就涉及到了标准化的协议。 在计算机的世界里,标准化的协议是实现高效沟通的基础。 这里mcp就是用来解决第一个挑战的。 最近谷歌发布了 A2A 协议,它就是用来解决第二个问题的。 可以说!MCP 的出现必然的会大幅加快智能体普及的进程。 甚至说大语言模型,尤其是像 DeepSeek + MCP 就约等于智能体。
如果大模型不能够使用外部的工具,那大语言模型其实就是一个简单的聊天机器人。甚至连查询天气,查询当前的时间的功能都做不到。
所以调用工具是大模型进化为智能体的一个关键。 那MCP就是大语言模型连接万物的一个接口,我们只需要简单的几行代码就可以去接入这样的海量的外部的工具。那这样智能体的开发门槛大大的降低了。特别是现在还有cursor ,windsurf 这些 AI coding 工具的崛起。也可以让我们一些不是程序员的普通人,小白也可以通过代码去开发自己的智能体。
如何理解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 智能体。
这个Manus前段时间非常火,大家应该也有所关注,至于这个Manus 功能强大与否,这里就不做探讨了。
至少它这个方向是对的,以后会涌现出非常多的类似于Manus,甚至强于Manus的一些智能体。
Manus的一次任务的执行需要进行网页搜索,网页的访问,信息的获取等等,几十个外部的工具。
那么在整个的过程当中,就暴露出来非常致命的问题:调用工作量很大。
Manus 在执行的过程中会使用到很多外部的工具,如果我们用平常的开发方式,发现就需要编写几十个外部的函数(方法),而每一个函数呢,轻轻松松都得几百行的代码。如果做过这个事儿的程序员同行应该比较有共鸣。
那我们编写这些函数以及大模型去调用这些外部工具,这个架构就会非常的复杂。
那如果有了mcp,只要支持对应的这个协议了,我们就可以非常轻松的借助于LLM 大模型 和 各种各样的AI 客户端去访问各种各样的数据源和工具。
2.2 大众用户视角
1 旅游规划
当我们要去旅行了,我们就可以借助 MCP 去访问天气的API,交通的API,地图的API,然后去帮我们去生成一个带实时数据的一个行程方案。
哎! 每逢放假休息的时候,如果有这样的一个智能助手的话呢,是不是省去了大量的时间呢?不过节假日出去玩基本也是人山人海哈。还是推荐错峰出行比较好。
当然了,如果没有mcp的话呢,也并非我们做不了这个事儿啊,只不过这个过程当中啊,需要程序员在代码当中预先编写好如何去调取天气API,交通的API和地图的API,这个难度的话呢,就非常大了。
2 联网搜索
这个大模型,比如像 DeepSeek,在交互的时候经常是需要联网去检索最新的信息。但这时候可能会存在这样的问题,
第一个并非所有的LLM 大模型都支持联网的功能,有的时候这个大模型是不具备联网功能,有的呢,是你对应的这个客户端不支持,比如像以前的这个版本的 ChatGPT就不支持联网。
第二就是即使知识联网,它也有可能不包含你习惯使用的搜索引擎,比如说你习惯使用这个谷歌去搜索资料,但是它就没有这个功能,那就很烦恼是吧?
这举个类似的例子,大家看这个图。
如果没有mcp的情况下用户只能够去等待开发者添加特定的搜索引擎的支持。
那现在如果有了mcp以后呢?我们只需要进行简单的配置就可以了。
不管你是什么,只要你基于这个MCP的协议,我们去访问什么样的搜索引擎都可以。
3 业绩的查询
你是公司的一个员工啊,现在需要查询上一个季度的营业额。那我们就可以借助mcp,让大模型调用CRM系统 API ( 获取客户数据) + 财务系统的API (调取报表)和邮件的API (发送总结报告),组合起来把这个事给完成了。
3、MCP 是什么?
官网 :Introduction - Model Context Protocol
3.1 MCP 的理解
MCP (Model Context Protocol,模型上下文协议)。2024年11月底由Anthropic公司推出, Anthropic 大家可能不熟悉,但是 Claude 大家获取多多少少都知道,这个Claude 系列的模型就是 由 Anthropic 公司推出的。
MCP 目的就是为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具进行通信,类似于电脑的USB接口标准,通过统一接口访问各种外设 (鼠标,音箱,耳机)
以前传统AI 集成外部工具,需要为每个数据源构建独立连接,可以被视为一个M * N 的问题。就是 M 个大模型 和 N 个插件。
那有了这个MCP 协议之后呢,就可以转换成 M + N 的问题。
我们只需要基于这套协议去访问各种各样的工具就ok。
3.2 推广时间线
4、哪些平台支持MCP查询
随着越来越多的Server接入MCP协议,未来AI能够直接调用的工具将呈现指数级增长,这能从根源上打开Agent能力的天花板。未来 AI 生态系统将变得更加开放和强大。 然后就是目前社区的 MCP Server 还是比较混乱,有很多缺少教程和文档,很多的代码功能也有问题,大家只能凭经验和参考官方文档了。 换一个角度讲这也是第一个吃螃蟹的代价啊,当然红利你也会吃到。
4.1 GitHub
官方:GitHub - modelcontextprotocol/servers: Model Context Protocol Servers
热门:awesome-mcp-servers/README-zh.md at main · punkpeye/awesome-mcp-servers · GitHub
4.2 其他平台
Glama:MCP servers | Glama
Smithery:Smithery - Model Context Protocol Registry
Cursor: MCP Servers for Cursor
MCP.so :MCP Server(MCP 服务器)
阿里云百炼:百炼控制台
5、 MCP 应用场景 & 通信机制
5.1 应用场景
5.2 通信机制
根据 MCP 的规范,当前支持3种通信机制。什么是通信机制呢?说得直白一些就是信息的传输方式。
1 stdio (标准输入输出)
这种方式就是客户端(比如Cursor) 和服务端(MCP Server) 都运行在你本地电脑上。客户端通过程序的标准输入(stdin)发送消息给服务端,服务端从标准输入接收请求,处理后通过标准输出(stdout)把结果返回给客户端。整个过程不需要网络,通信简单、快速且稳定。这也是MCP 默认的通信方式。
- 优点:
- 无需外部网络依赖
- 通信速度快
- 可靠性高且易于调试
- 无需外部网络依赖
- 缺点:
- 配置复杂,需提前安装命令行工具
- 单进程通信,无法并行处理多个请求
- 进程资源开销大,不适合本地运行大量服务
- 配置复杂,需提前安装命令行工具
2 SSE(Server-Sent Events, 服务器发送事件)
这种大家应该也能猜到了,就是我们的客户端和服务端,就不再一起了,这些MCP服务器并不需要运行在用户本地,而是部署在云端或远程服务器上。用户只需通过配置一个URL地址,就能让本地的客户端应用(例如Cusror)通过网络调用这些远程的MCP服务,完全不用自己搭建和维护服务器。
像阿里百炼的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安装
安装好后,重启终端并运行以下命令检查是否正常:
代码语言:Python复制uv --version
uvx --help
6.2 安装npx
这个大家可以直接看我这篇文章:Node js 安装
安装好输入下面的命令验证就好
代码语言:Python复制node -v
npm -v
7、 Trae中 使用MCP 案例
7.1 安装
最近 Trae 也支持了 MCP 的 功能, 大家可以通过官网链接下载 Tare 使用:Trae - AI 原生 IDE
7.2 配置MCP
我们打开 Tare。
点击MCP 。
点击添加,我们就可以看到 Trae 提供的 MCP 市场。
如果我们想要配置自己的编写MCP服务,就点击这个手动配置
直接选择这个原始配置,它会打开一个 mcp.json 的文件,我们直接在这里面配置我们的mcp 服务。
7.3 案例:旅游计划生成
首先我们要安装一些MCP server 服务。
- MCP 服务安装
我们需要 Excel ,高德地图,filesystem
1.1 Excel 服务 安装
首先我们下载这个Excel 服务的代码:GitHub - haris-musa/excel-mcp-server: A Model Context Protocol server for Excel file manipulation
有git 的也可以直接通过 git 命令直接 clone 代码到自己的本地,像我一样通过下载 zip 的,下载到本地后,然后解压。
然后打开终端,导航到项目的目录底下。
代码语言:Python复制cd 你的项目目录
安装项目所需依赖,这里需要你已经安装了 UVX, 然后执行下面的命令
代码语言:Python复制uv pip install -e .
运行 excel-mcp-server
代码语言:Python复制uv run excel-mcp-server
当然,如果你想要自定义端口号,可以根据你的电脑系统来选择使用下面的命令,。
代码语言:Python复制#Bash/Linux/macOS
export FASTMCP_PORT=8080 && uv run excel-mcp-server
#Windows PowerShell
$env:FASTMCP_PORT = "8080"; uv run excel-mcp-server
然后在tare 中 添加这个mcp 服务。
粘贴下面的内容,把url 和 env 修改成你自己的地址。
代码语言:Python复制{
"mcpServers": {
"excel": {
"url": "你的服务地址:http://localhost:8000/sse",
"env": {
"EXCEL_FILES_PATH": "你的授权目录:/path/to/excel/files"
}
}
}
}
点击确认后,我们就可以看到 mcp 的状态了,和可以使用那些功能。
我们可以来测试一下。
这样我们就可以知道这个mcp 工具是否可用了。
1.2 高德地图服务
我们打开高德地图的MCP server 文档 :概述-MCP Server | 高德地图API
我们首先登录高德地图平台。然后点击注册成为开发者:注册成为开发者 。
然后点击应用管理 ,创建新应用。
添加 key 。
复制key
然后粘贴到下面的代码中
代码语言:Python复制{
"mcpServers": {
"amap-amap-sse": {
"url": ";
}
}
}
接着打开trae,添加高德地图mcp 服务。
然后把 代码粘贴进去。接着查看mcp 的状态。
1.3 filesystem服务
这个服务,Tare 内置了的,所以我们可以跳过。
如果你使用其他的客户端没有,可以参考一下。
这个我们直接使用 Tare 提供的MCP 市场直接搜索。
然后它就会打开一个预览页面。我们往下滑,就可以找到相关的代码。
这里我选择 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"
]
}
}
}
其他的就是那个文件目录还是要改成你自己要授权的目录。
然后把代码粘贴进去。
至此,我们所需要的MCP 服务都准备好了。
2.开始实操
根据 Tare 的要求,MCP 要在智能体中才能使用,所以我们要选择一个智能体。
然后输入下面的提示词。可复制提示词: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。
3. 最终效果
首先是Excel 。
然后是两个txt 文档
最后是HTML。感觉不是很精美哈,捂脸。
8、Cursor 中使用 MCP 案例
之前我们使用Trae 中生成的HTML ,感觉不是很好看,可能是大模型的原因,也有可能是我们的提示词的原因。
这次我们换到Cursor。Cursor中能用的模型也变多了。
8.1 安装MCP 服务
有了在 Tare 中配置,我们就不需要这么复杂了,直接打开Tare 中的 mcp.json 。
直接把这个配置,然后新建一个文件夹,例如 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": ";
}
}
}
8.2 查看MCP 服务状态
把我们的MCP 服务全部开启。在项目中的 mcp.json 中配置的mcp 是属于项目级的,也就是说只在这个项目才会出现。全局的可以点击 Add new global MCP server 进行添加,也就是说所有项目都可以使用到这些MCP。
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
8.4 效果
首先是Excel 。
然后是txt
最后是HTML.
本文标签: MCP介绍 amp使用案例
版权声明:本文标题:MCP介绍 &使用案例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747435968a2696976.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论