接入第一个 MCP Server:让 AI 自己看你的数据库

之前咱们说了 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 这样的形式,开发库能改、生产库照样只能看。

坑二:别把整个库都敞开。

接上之后我第一次让它"查一下用户表",它把整张表的数据全拉回来了,上下文瞬间撑满,那一次的调用费用比我想象的高不少。

后来我学乖了:需要它看哪些表,就只给那些表。 而且问问题的时候说清楚范围,"查最近十条"和"查一下这个表",代价差着数量级。


接之前,先确认这三件事

  1. 账号是只读的吗? 不是就回去改,别嫌麻烦
  2. 暴露的范围收窄了吗? 只给需要的库、需要的表
  3. 配置文件有没有进 .gitignore? 里面有密码,别提交上去

这三件事花五分钟,能省掉后面一堆麻烦。


接完之后最有意思的变化,是我开始问一些以前不会问的问题。比如"这几张表的关联看着有点乱,你觉得当初是怎么设计的"------它需要真的看懂结构才能答,而现在它能自己去看。

相关推荐
dozenyaoyida5 小时前
AI与大模型新闻日报 | 2026-10-17
人工智能·ai·chatgpt·新闻
遇码5 小时前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent
救救孩子把5 小时前
AI面试八股文-21_21-多模态Agent面试题-Vision-Language-Agent
人工智能·面试·职场和发展·llava·多模态agent
今年下半年5 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88885 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
u1301306 小时前
GitHub 热榜项目:日榜(2026-10-17)
人工智能·github
流烟默6 小时前
MCP第 5 篇:用 Spring AI 写 MCP:注解、自动配置、ChatClient 集成
人工智能·spring·mcp封装
康实训6 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
misty youth6 小时前
Agent-智能体工程方法论
人工智能·ai·llm·agent·智能体