在上一篇cursor 如何调用 MCP server 实现天气查询文章中,我通过在网上找到的天气查询 MCP Server,直接通过复制mcp.json直接实现了cursor天气查询的调用。那么,如果我们自己开发的 MCP Server 该如何在cursor中调用呢?
所以本篇文章就通过实现一个 MySQL 数据库查询的 MCP Server,探索在cursor中如何配置并调用自己的 MCP Server,以此来实现 MySQL 数据库的查询。
之前说过用 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。整体程序设计分为两个部分:
新建一个 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 中。
首先我们需要编写 MCP Server 的 json 信息,这个还是超简单的,如下所示:
{
"mcpServers": {
"mysql_mcp": {
"command": "python3.10",
"args": [
"/Users/aqi/mcp-demo/server/mysql_mcp.py"
]
}
}
}
在 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 万物可连。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。