前言
在上一篇cursor 如何调用 MCP server 实现天气查询文章中,我通过在网上找到的天气查询 MCP Server,直接通过复制mcp.json直接实现了cursor天气查询的调用。那么,如果我们自己开发的 MCP Server 该如何在cursor中调用呢?
所以本篇文章就通过实现一个 MySQL 数据库查询的 MCP Server,探索在cursor中如何配置并调用自己的 MCP Server,以此来实现 MySQL 数据库的查询。
MCP Server 开发
之前说过用 uv 进行管理 MCP 项目,这里为了简化开发,直接使用 pip 进行开发,要求 Python 版本在3.10及以上。
数据准备
首先在 MySQL 中创建要使用的数据库和表,并插入测试数据。
create database mcp;
use mcp;
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL
);
-- 插入 10 条数据
INSERT INTO user (name, age) VALUES
('Alice', 23),
('Bob', 30),
('Charlie', 27),
('David', 35),
('Eve', 22),
('Frank', 28),
('Grace', 31),
('Heidi', 26),
('Ivan', 29),
('Judy', 24);
程序开发
python 开发连接数据库的 MCP Server 只需要安装两个依赖,mcpcli 和 pymysql,执行下面命令即可完成安装。
pip install "mcp[cli]"
pip install pymysql
然后就是使用 python 开发 MCP server。整体程序设计分为两个部分:
- MCP Server 的定义,这里可以参考之前写的一篇博客什么是MCP?本地如何开发MCP Server
- pymysql 连接 MySQL 查询数据库
新建一个 mysql_mcp.py 文件,其中代码实现如下:
from mcp.server.fastmcp import FastMCP
import pymysql
mcp = FastMCP("MySQLMCP")
@mcp.tool()
def analysis_data(age: int) -> int:
conn = pymysql.connect(
host="152.136.xx.xxx",
port=3306,
user="root",
password="1234567",
database="mcp"
)
cursor = conn.cursor()
cursor.execute(f"SELECT COUNT(*) FROM user where age > {age}")
result = cursor.fetchone()[0]
cursor.close()
conn.close()
return result
if __name__ == "__main__":
mcp.run()
在上面代码中定义了函数 analysis_data,在里面实现了 MySQL 的连接以及对 user 表的查询,通过传入的参数 age 作为限定条件统计用户个数。使用 @mcp.tool() 注解将 analysis_data 变成了 MCP Server 的“工具”。
调试
还是通过 mcp dev 启动 MCP Insepctor 进行调试我们的 MCP Server 是否可用。
在浏览器中访问6274端口即可访问,点击 Connect 连接到 MCP Server。在 Tools 标签页下可以看到我们定义的 analysis_data。
点击 Run Tool,输入参数 age 即可获取查询数据库的统计结果。
如上图说,查询到数据库并成功返回。接下来就是将这个 MCP Server 配置到 cursor 中。
cursor 配置 MCP Server
首先我们需要编写 MCP Server 的 json 信息,这个还是超简单的,如下所示:
{
"mcpServers": {
"mysql_mcp": {
"command": "python3.10",
"args": [
"/Users/aqi/mcp-demo/server/mysql_mcp.py"
]
}
}
}
- mcpServers 是固定的,是 MCP Server 的顶级节点。
- mysql_mcp 是自定义的节点名称。
- command 和 args 分别是运行命令和参数。
在 Cursor Settings 中找到 MCP,点击右侧上方的 Add new global MCP server 按钮,
会自动打开 mcp.json 文件,将上面 json 内容粘贴进去保存,回到 MCP 页面即可看到我们的 MCP Server 信息。
在 cursor 的 chat 聊天框中,输入我们的查询需求运行,cursor 就会调用 MCP Server 的 analysis_data 工具进行查询。
运行成功之后将结果返回。
结语
本篇文章通过自定义 MCP Server,在 cursor 中调用 tool 对 MySQL 的数据查询,从程序开发来看,MCP Server 连接数据库的实现,和普通 Python 程序连接 MySQL 基本上没什么区别。这也进一步说明了 MCP 给 LLM 工具的开发带来了很大的提升,也从侧面说明了有了 MCP 万物可连。