之前咱们说了 MCP 是什么,这篇直接开始动手。
目标很小也很简单:让 AI 能自己连上你的数据库,看表结构、查数据。 就这一件小事。
可别小看它。接完之后,你不用再把建表语句一条条粘给它了------它自己就可以去看。
先准备两样东西
一个支持 MCP 的客户端。 我用 Cursor 举例,Claude Code 之类的也差不多,配置格式基本通用。

一个只读的数据库账号。 这条我要加粗:数据库务必新建一个只读账号,别图省事用 root,也别用你日常的开发账号。
原因后面说,先把这个账号建好:
- 只给
SELECT权限 - 只给需要让它看的那个库
- 密码单独设,别和其他地方复用
顺便说个好消息:这个 server 自己默认也是只读的。 官方配置表里,写操作要显式打开 ALLOW_INSERT_OPERATION、ALLOW_UPDATE_OPERATION、ALLOW_DELETE_OPERATION、ALLOW_DDL_OPERATION 四个开关,默认全是 false,连事务都会被强制成只读。
但这是它的默认,不是数据库的权限,两码事。工具哪天改了默认值你未必知道,数据库的权限不会自己变------账号该建还得建。
它最近一次发版是 2026 年 6 月的 2.0.9,仓库还在维护,可以放心用。

写配置
在 Cursor 里,项目根目录下建一个 .cursor/mcp.json,内容长这样(以 MySQL 为例):
json
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "ai_readonly",
"MYSQL_PASS": "填你自己的",
"MYSQL_DB": "填库名"
}
}
}
}
存完重启一下编辑器,让它重新加载配置。
配置里唯一需要你改的,就是最后那三行------账号、密码、库名。其余照抄。
这里单独提醒一句变量名:密码是 MYSQL_PASS,库名是 MYSQL_DB ,都是缩写,没有 MYSQL_PASSWORD 和 MYSQL_DATABASE 这种写法。这几个名字写错不会报"配置错误",只会连不上,然后你盯着 IP 和端口查半天。我照着某篇教程抄错过一次,最后是翻官方 README 才对上的------这类地方,以仓库文档为准。
再给一个更稳的写法:密码可以不放文件里。Cursor 支持 ${env:变量名} 这种插值,把上面那行改成 "MYSQL_PASS": "${env:MYSQL_PASS}",密码放进系统环境变量,配置就算误提交上去也漏不了。
Windows 用户注意一点:command 那行如果报找不到命令,多半是 npx 没进环境变量,把 npx 换成完整路径就能过。
验证它真的通了
别急着用,先确认。直接在对话里问一句:
"列出这个库里所有的表。"
如果它回你一张表清单,说明通了。如果它说"没有可用工具",回去看配置:多数情况是 JSON 格式错(末尾多了个逗号最常见),或者服务器没起来。
通了之后试个稍微复杂点的:
"orders 表有哪些索引?"
这时候你会发现一件事------它给的答案是自己查出来的,不是猜的。 这就是和以前最大的区别。
我踩的两个坑
坑一:权限给太满,它真的会改数据。
我第一次配的时候偷懒用了开发账号。有一次我让它"看看这个查询为什么慢",它分析完觉得是缺索引,然后自己动手加了索引。
它是好心,但生产库上随便加索引这件事,不该由它决定。
从那以后我只给 SELECT。想让它写数据,我会自己确认过再单独执行。
要是哪天你真需要它在开发库上写数据,也不必把整个 server 放开------它是支持按库分别授权的,写成 SCHEMA_UPDATE_PERMISSIONS=development:true,production:false 这样的形式,开发库能改、生产库照样只能看。
坑二:别把整个库都敞开。
接上之后我第一次让它"查一下用户表",它把整张表的数据全拉回来了,上下文瞬间撑满,那一次的调用费用比我想象的高不少。
后来我学乖了:需要它看哪些表,就只给那些表。 而且问问题的时候说清楚范围,"查最近十条"和"查一下这个表",代价差着数量级。
接之前,先确认这三件事
- 账号是只读的吗? 不是就回去改,别嫌麻烦
- 暴露的范围收窄了吗? 只给需要的库、需要的表
- 配置文件有没有进 .gitignore? 里面有密码,别提交上去
这三件事花五分钟,能省掉后面一堆麻烦。
接完之后最有意思的变化,是我开始问一些以前不会问的问题。比如"这几张表的关联看着有点乱,你觉得当初是怎么设计的"------它需要真的看懂结构才能答,而现在它能自己去看。