大语言模型MCP学习01-概念学习与cursor中初体验
一、概念学习
1.1 MCP是什么
MCP 是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。官网地址:https://modelcontextprotocol.io/introduction 。其示意图如下。

MCP是一个开放标准协议,它为应用如何为LLM提供上下文这个过程提供了一个标准协议。可以把MCP看成是AI应用程序的USB-C接口,就像USB-C接口提供了一个标准的方式以把你的设备连接到各种各样的周边设备和配件一样,MCP提供了一个标准的方式以将AI模型连接到不同的数据源和工具。
MCP能够帮助我们集成现有的各个Agent,使得我们能够更加高效便捷地开发自己的AI应用程序。因为我们可以直接从 https://mcp.so/ (它有点像是Docker生态中的官方 dockerhub 网站)网站下载别人上传的MCP Server或MCP Client,直接使用。当然此网站中如果没有我们想要的功能,我们在MCP规范下自己实现。

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

上图中各种概念的解析如下。
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大致工作过程
- 用户在MCP客户端(比如cursor或claude或python程序客户端)输入问题,MCP客户端查询MCP服务端有哪些工具可用,然后MCP客户端将“问题与可用工具的相关情况”发送给LLM(比如自己使用过Claude-3.7或DeepSeek-V3)
- LLM分析问题,向客户端进行回复,回复中包含是否需要调用工具相关信息(这里的工具其实就是函数,这个时候函数名与函数的注释说明就很重要了,它将影响LLM的决定)
- 如果不需要调用工具,则LLM的回复中就直接包含了问题的答复,可以被直接使用了。如果需要调用工具(可以依次调用多个工具),则MCP客户端向MCP服务端请求说“帮忙调用哪个工具,并将需要的参数传递给它”。MCP客户端等待并拿到工具调用的结果,然后将工具调用结果作为历史信息告诉LLM,让LLM根据所有历史消息解决我们的问题。
- 然后就回到第2步或第3步了(如果不超过LLM的最大token或程序栈溢出,直接调用SDK来实现可以这样不断调用下去;cursor或claude这样的集成客户端是只会调用一次工具还是会不断重复直到不再需要调用工具了,还不确定)。直到不再需要调用工具了,LLM直接组织语言针对问题进行分析与最后的总结回复。
二、cursor中体验MCP
2.1 配置高德地图MCP-server
在阿里云百练平台中,我们可以创建工作流,在工作流中我们可以调用“周边查询”的插件来享受“周边位置信息查询服务”,比如查询行程、查找饭店酒店等。MCP中也有类似的功能,在cursor中使用方式如下。
2.1.1 高德开放平台申请Key

复制上述Key值,后面要用。
2.1.2 打开cursor setting
File->Preferences->Cursor Setting,然后

2.1.3 配置mcp.json
1 |
|
2.1.4 确认配置情况

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

如果有错误,视情况解决。
2.1.5 实际试用
模式选择“Agent”,模型选择“claude-3.7-sonnet”,然后输入问题发送进行提问。


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

2.2 配置MySQL数据库MCP-server
以下配置是用来部署MySQL数据库mcp服务器的,部署后可以在cursor中直接操作配置的数据库及数据表。
2.2.1 访问mcp.so网站
搜索“mcp-mysql-server”,在多个搜索结果选择一个。

但自己测试时,总是有各种各样的问题。唯有这个“https://mcp.so/server/MCP-MySQL-server-implementation/shensiqi0701?tab=content”能生成待执行sql语句,但却不会真正执行,即需要自己手动去执行生成的sql语句。
以下是自己在找到的一个可用配置。
2.2.2 配置mcp.json
根据自己的实际情况进行修改,最后的mcp.json文件如下:
1 |
|
2.2.3 确认配置情况

2.2.4 实际试用
输入提示提示词:
1 |
|

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

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

系统提示插入数据成功了。
我们继续操作,尝试修改某字段值:
1 |
|

系统提示修改数据成功了。根据会话时LLM的输出可以看出,历史信息也是被LLM记录并使用的。
最后,我们尝试查询下数据表中数据:
1 |
|

三、相关文档
MCP官网:https://modelcontextprotocol.io/introduction
MCP服务器导航与托管平台:https://mcp.so/
cursor中配置使用mcp:https://docs.cursor.com/context/model-context-protocol