大语言模型MCP学习01-概念学习与cursor中初体验

一、概念学习

1.1 MCP是什么

MCP 是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。官网地址:https://modelcontextprotocol.io/introduction 。其示意图如下。

image-20250425165703422

MCP是一个开放标准协议,它为应用如何为LLM提供上下文这个过程提供了一个标准协议。可以把MCP看成是AI应用程序的USB-C接口,就像USB-C接口提供了一个标准的方式以把你的设备连接到各种各样的周边设备和配件一样,MCP提供了一个标准的方式以将AI模型连接到不同的数据源和工具。

MCP能够帮助我们集成现有的各个Agent,使得我们能够更加高效便捷地开发自己的AI应用程序。因为我们可以直接从 https://mcp.so/ (它有点像是Docker生态中的官方 dockerhub 网站)网站下载别人上传的MCP Server或MCP Client,直接使用。当然此网站中如果没有我们想要的功能,我们在MCP规范下自己实现。

image-20250425170351457

1.2 MCP总体构架

MCP的核心思想是:MCP遵循C-S构架,即一个主机应用程序连接到多个不同的MCP服务端。其架构图如下:

image-20250425170700928

上图中各种概念的解析如下。

MCP Hosts:如Claude Desktop、IDE或AI工具等想要通过MCP获取数据的程序。

MCP Clients:与MCP 服务器保持 1:1 的连接的协议客户端,从上图可以看到,MCP客户端与MCP Host是在一起的。

MCP Servers:它是一个轻量级的、通过标准模型上下文协议暴露特定能力的程序。

Local Data Sources:指你电脑上的可供 MCP 服务器安全访问的数据资源,如文件、数据库与服务。

Remote Services:通过互联网络可供 MCP 服务器连接与访问(比如通过API调用的形式)的外部系统。

1.3 MCP大致工作过程

  1. 用户在MCP客户端(比如cursor或claude或python程序客户端)输入问题,MCP客户端查询MCP服务端有哪些工具可用,然后MCP客户端将“问题与可用工具的相关情况”发送给LLM(比如自己使用过Claude-3.7或DeepSeek-V3)
  2. LLM分析问题,向客户端进行回复,回复中包含是否需要调用工具相关信息(这里的工具其实就是函数,这个时候函数名与函数的注释说明就很重要了,它将影响LLM的决定)
  3. 如果不需要调用工具,则LLM的回复中就直接包含了问题的答复,可以被直接使用了。如果需要调用工具(可以依次调用多个工具),则MCP客户端向MCP服务端请求说“帮忙调用哪个工具,并将需要的参数传递给它”。MCP客户端等待并拿到工具调用的结果,然后将工具调用结果作为历史信息告诉LLM,让LLM根据所有历史消息解决我们的问题。
  4. 然后就回到第2步或第3步了(如果不超过LLM的最大token或程序栈溢出,直接调用SDK来实现可以这样不断调用下去;cursor或claude这样的集成客户端是只会调用一次工具还是会不断重复直到不再需要调用工具了,还不确定)。直到不再需要调用工具了,LLM直接组织语言针对问题进行分析与最后的总结回复。

二、cursor中体验MCP

2.1 配置高德地图MCP-server

在阿里云百练平台中,我们可以创建工作流,在工作流中我们可以调用“周边查询”的插件来享受“周边位置信息查询服务”,比如查询行程、查找饭店酒店等。MCP中也有类似的功能,在cursor中使用方式如下。

2.1.1 高德开放平台申请Key

image-20250509162544289

复制上述Key值,后面要用。

2.1.2 打开cursor setting

File->Preferences->Cursor Setting,然后

image-20250509160218716

2.1.3 配置mcp.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"mcpServers": {
"amap-maps": {
"command": "npx",
"args": [
"-y",
"@amap/amap-maps-mcp-server"
],
"env": {
"AMAP_MAPS_API_KEY": "此处替换成前面自己申请的AMAP_MAPS_API_KEY"
}
}
}
}

2.1.4 确认配置情况

image-20250509162819638

如果配置成功,则配置mcp-server项左边会有一个绿色的小点。如果是红色或其他情况就说明报错了没安装配置成功,通过如下方法查看具体日志:cursor菜单栏依次点击“View->Output”,然后可以看到如下界面视图,在下拉列表中选择“Cursor MCP”:

image-20250509163356708

如果有错误,视情况解决。

2.1.5 实际试用

模式选择“Agent”,模型选择“claude-3.7-sonnet”,然后输入问题发送进行提问。

image-20250509164028896
image-20250509164321025

后续每次调用一个工具都需要用户点击“Run tool”按钮一次,直到不再需要调用工具。然后输出LLM总结所有的信息,用自然语言输出来呈现给用户:

image-20250509164752401

2.2 配置MySQL数据库MCP-server

以下配置是用来部署MySQL数据库mcp服务器的,部署后可以在cursor中直接操作配置的数据库及数据表。

2.2.1 访问mcp.so网站

搜索“mcp-mysql-server”,在多个搜索结果选择一个。

image-20250509173402129

但自己测试时,总是有各种各样的问题。唯有这个“https://mcp.so/server/MCP-MySQL-server-implementation/shensiqi0701?tab=content”能生成待执行sql语句,但却不会真正执行,即需要自己手动去执行生成的sql语句。

以下是自己在找到的一个可用配置。

2.2.2 配置mcp.json

根据自己的实际情况进行修改,最后的mcp.json文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"mcpServers": {
"amap-maps": {
"command": "npx",
"args": [
"-y",
"@amap/amap-maps-mcp-server"
],
"env": {
"AMAP_MAPS_API_KEY": "自己申请的AMAP_MAPS_API_KEY"
}
},
"MySQL": {
"command": "npx",
"args": [
"mcprunner",
"MYSQL_HOST=172.20.0.22",
"MYSQL_PORT=3306",
"MYSQL_USER=root",
"MYSQL_PASS=root@123",
"MYSQL_DB=test01",
"ALLOW_INSERT_OPERATION=true",
"ALLOW_UPDATE_OPERATION=true",
"ALLOW_DELETE_OPERATION=true",
"--",
"npx",
"-y",
"@benborla29/mcp-server-mysql"
]
}
}
}

2.2.3 确认配置情况

image-20250509215137649

2.2.4 实际试用

输入提示提示词:

1
请为我在test01数据库中创建一张数据表,表名是products,用来保存商品信息的。其中包含如下几个字段,id、商品名、商品价格、商品重量、产地、生产商、生产时间、保持期。请为每个字段加上备注
image-20250509215432301

然后提示需要调用某某工具,需要用户不断点击“Run tool”按钮。如下所示,mcp服务端首先生成创建数据表的语句,然后判断test01数据库是否存在、在test01数据库中是否有创建表的权限、检查用户root对此数据库的操作权限、切换到test01数据库(就是执行use test01)、执行创建数据表的语句,但是执行时提示权限错误,LLM又去检查了products数据表已经被成功创建出来,发现没有,于是给出了一些提示并输出创建products数据表的sql语句,让用户自己手动去执行。

image-20250509215727489

我们利用上述生成的sql语句手动创建数据表后继续操作。现在尝试向此表中插入一条数据:

1
请向products表中插入一条数据,商品名“曲奇饼干”,价格是20.98,商品重量是0.08,产地是广东东莞,生产商是东莞利发食品厂,生产日期是2025年5月9日,保持期是12个月
image-20250509220601775

系统提示插入数据成功了。


我们继续操作,尝试修改某字段值:

1
上一条数据稍微有点问题,价格错了,需要修改成19.98
image-20250509220827182

系统提示修改数据成功了。根据会话时LLM的输出可以看出,历史信息也是被LLM记录并使用的。


最后,我们尝试查询下数据表中数据:

1
请查询商品信息表中的所有数据
image-20250509221220294

三、相关文档

MCP官网:https://modelcontextprotocol.io/introduction

MCP服务器导航与托管平台:https://mcp.so/

cursor中配置使用mcp:https://docs.cursor.com/context/model-context-protocol


大语言模型MCP学习01-概念学习与cursor中初体验
https://jiangsanyin.github.io/2025/04/25/大语言模型MCP学习01-概念学习与cursor中初体验/
作者
sanyinjiang
发布于
2025年4月25日
许可协议