1. Java 项目里 Cursor 到底能帮上什么忙
如果你是一个写 Java 的,日常大概率被这几件事磨过耐心:对着第三方开放平台文档一行行抠字段拼 DTO、改一个需求要先翻五六个文件确认调用链、写完接口还得补单元测试和技术文档。Cursor 这类 AI 编辑器能接住其中相当一部分重复劳动,但前提是——你得让它真正“看见”你的项目结构、数据库、接口文档和业务规则,而不是每次都在空白对话框里从零描述。
这篇就聚焦一件事:在 Java 项目里把 Cursor 的 MCP 服务和 rules 规则文件配起来,让 AI 从“能聊天”变成“能按你项目的规范干活”。MCP 全称 Model Context Protocol,你可以把它理解成给 AI 装的一排外接插槽:插上 Playwright 它就能开浏览器看页面需求,插上文件系统它就能读你本地代码目录,插上 MySQL 它就能查表结构,插上思维链它就能把复杂需求拆成步骤。rules 则是你写给 AI 的“员工手册”,告诉它这个项目里 DTO 怎么命名、Service 层怎么分层、注释写不写。
适合谁看:正在用或准备用 Cursor 写 Java 的后端开发,尤其是做电商、中台、开放平台对接这类需求变动频繁的项目。跟着做完,你能拿到一份可直接粘贴的 mcp.json、一份通用 rules 骨架,以及验证 AI 是否真的调用了 MCP 的具体操作。整个过程不需要你改项目构建,配置都在编辑器侧完成。
2. 前置准备:TaoToken 接入与 Cursor 环境
Cursor 本身要调用大模型,模型能力直接决定它读代码、拆需求的水平。我这边习惯用 TaoToken 来统一管理模型调用,它的 API 地址是 https://taotoken.net/api ,兼容常见的 OpenAI 风格调用方式,在 Cursor 里配置自定义模型端点时填这个就行。官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台生成 Key。
拿到 Key 之后,在 Cursor 里进入设置,找到 Models 区域,添加一个自定义模型。Base URL 填 https://taotoken.net/api ,API Key 填你刚生成的那串。模型名按你实际开通的填,比如常用的编码模型。配好后点 Verify,能返回模型列表就说明通了。这一步是整个流程的地基,模型不通后面 MCP 配了也白搭。
如果你还没生成 Key,直接去控制台操作:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在 API Keys 页面新建一个,复制保存好,页面关了就看不到完整值了。文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到参数不确定可以翻。
注意:Key 属于敏感凭证,别提交到 Git 仓库,也别贴进公开的 rules 文件里。Cursor 的模型配置是本地存储的,正常不会外泄,但自己心里要有数。
环境侧还需要确认两件事:一是本机装了 Node.js(MCP 服务大多通过 npx 拉起,没 Node 会直接报 command not found),二是 Cursor 版本支持 MCP(较新的版本在设置里有 MCP 面板)。用node -v和npx -v各跑一下,能出版本号就 OK。
3. 可复制的 MCP 配置与 rules 骨架
3.1 mcp.json 完整片段
在 Cursor 设置里找到 MCP 面板,点新建服务,会打开一个 mcp.json 文件。把下面这段整体粘进去,然后按你自己的环境改数据库那几行:
{ "mcpServers": { "Sequential Thinking": { "command": "npx", "args": ["-y", "mcp-sequential-thinking", "serve"] }, "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest"] }, "fileSystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "D:\\workspace\\your-java-project" ] }, "MySQL": { "command": "npx", "args": [ "mcprunner", "MYSQL_HOST=127.0.0.1", "MYSQL_PORT=3306", "MYSQL_USER=readonly_user", "MYSQL_PASS=your_password", "MYSQL_DB=your_db", "--", "npx", "-y", "@benborla29/mcp-server-mysql" ] }, "context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp@latest"] } } }几个关键点解释一下。fileSystem 的最后一个参数换成你 Java 项目的根目录,Windows 路径用双反斜杠转义,Mac 或 Linux 直接写/Users/xxx/project。MySQL 那几行必须换成真实连接信息,建议专门开一个只读账号给 AI 用,别拿生产写权限的账号,这是底线。context7 是用来拉取第三方库最新文档的,写 Java 对接外部 SDK 时挺有用。
保存后回到 MCP 面板,每个服务旁边会有状态点。绿色表示已连接,红色或灰色说明启动失败,鼠标悬停能看到报错。第一次启动 npx 会下载包,可能要等十几秒,别急着判定失败。
3.2 通用 rules 骨架
在项目根目录建.cursor/rules文件夹,里面放一个aigc.mdc,type 设为 Always。内容可以照下面这份改:
# Java 项目 AI 编程规则 ## 需求分析 - 复杂需求先用 Sequential Thinking MCP 拆成可执行步骤 - 涉及页面交互的需求,用 playwright MCP 打开页面确认字段和流程 - 拆完的步骤清单要落到对话里,不要只在脑子里过 ## 代码生成 - 新增接口:先读现有同类 Controller 和 Service,按相同分层生成 - DTO 命名统一用 XxxRequest / XxxResponse,字段加 Swagger 注解 - 修改需求:先定位调用链,列出受影响文件再动手 - 生成的 SQL 必须带索引说明,DDL 变更单独标注 ## 数据库 - 查表结构用 MySQL MCP,不要凭记忆猜字段 - 新增字段默认允许 NULL,除非业务明确要求非空 ## 测试与文档 - 每个新增 public 方法生成对应单元测试,覆盖正常和异常分支 - 接口完成后同步更新接口文档,字段变更要标版本 ## 禁止事项 - 不要直接改生产配置 - 不要引入项目里没有的第三方依赖,除非我确认Always 规则别写太长,每次对话都会加载,太长反而稀释重点。项目特有的业务流程,比如“订单状态机只能走 A→B→C”,可以单独建一个 mdc,type 选 Auto Attached,用 globs 匹配对应目录,这样只有改到那块代码时才生效。Agent Requested 类型适合让 AI 自己判断何时调用,比如“涉及支付逻辑时参考支付规范”,配个 description 就行。
4. 验证 AI 是否真的调用了 MCP
配完不验证,等于没配。下面给三个可跟做的验证动作,从易到难。
4.1 验证文件系统 MCP
在 Cursor 对话里输入:
用 fileSystem MCP 列出我项目 src/main/java 下的所有包目录如果配置生效,AI 会去读你本地目录并返回真实结构,而不是让你自己贴。返回的路径和你项目对得上,就说明 fileSystem 通了。如果它说“我无法访问文件系统”,回去检查 mcp.json 里路径有没有写错、服务状态是不是绿色。
4.2 验证 MySQL MCP
输入:
用 MySQL MCP 查一下 user 表的字段和索引正常会返回字段列表、类型、是否可空、索引情况。这一步能过,意味着后面你让它“根据现有表结构生成 DTO”时,它拿的是真实 schema,不会瞎编字段。查不到表就确认 MYSQL_DB 填对没有、账号有没有该库的读权限。
4.3 验证思维链拆分
输入一个稍复杂的需求,比如:
调用 Sequential Thinking MCP,把“新增税费设置,支持含税报价选项,发货地为 CN 时显示”拆成可执行的代码修改步骤它会输出一串带序号的步骤,通常包括:定位刊登流程入口、新增字段、改前端展示条件、补接口、加校验。你拿这份步骤去生成代码,比直接甩一句需求让它写要准得多。实测下来,拆分步骤这一步是整个流程里性价比最高的,花几十秒换后面少返工。
4.4 验证模型对话链路
如果你想单独确认 TaoToken 这条模型链路是否正常,可以打开模型对话页面直接测:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ,发一句“用 Java 写一个带分页的查询接口”,能正常流式返回就说明 Key 和额度都没问题。这一步和 Cursor 里的模型配置是同一套凭证,通了就都通了。
5. 本篇常见错误排查
5.1 MCP 服务一直显示红色
最常见的原因是 npx 拉包失败。先在终端手动跑一次npx -y @playwright/mcp@latest,看能不能启动。如果卡在下载,多半是网络到 npm 源的问题,可以换国内镜像源再试。另一个原因是 Node 版本太低,MCP 服务一般要求 Node 18 以上,node -v确认一下。
5.2 MySQL MCP 连不上
报错里如果出现ECONNREFUSED,是地址或端口不对;出现Access denied,是账号密码或权限问题。注意 mcprunner 这种写法是把环境变量当参数传的,格式必须严格按KEY=VALUE一行一个,多一个空格都可能解析失败。数据库如果只监听 localhost,而 MCP 走的是容器网络,也会连不上,确认监听地址。
5.3 rules 不生效
先确认文件放在.cursor/rules下且后缀是.mdc,不是.md。再看 type 设置:Always 是全局生效,Auto Attached 要配 globs 且当前文件路径匹配才生效。如果改了 rules 没反应,重启一下 Cursor,规则文件是启动时加载的。还有一种情况是规则写得太泛,AI 忽略了,把关键约束写成明确的“必须/禁止”句式会好很多。
5.4 AI 生成的代码不符合项目分层
这通常是 rules 里没写清楚,或者你没在提示词里指定参考文件。解决办法是在对话里明确说“参考 XxxController 和 XxxService 的写法生成”,配合 fileSystem MCP 让它自己去读。rules 负责长期约束,提示词负责单次精确控制,两者配合才稳。
5.5 模型响应慢或超时
如果 Cursor 里模型经常转圈,先确认 TaoToken 控制台里额度是否充足,再看是不是选了过大的模型。编码场景不一定非要最大参数,中等规模模型在拆步骤、写 CRUD 上已经够用,响应还快。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 里有各模型的说明,按需选。
6. 把流程固化下来,长期省事
配置跑通只是开始,真正省时间的是把重复动作固化成习惯。我的做法是:每个新需求进来,先让 AI 用思维链拆步骤,拆完我人工过一遍删掉它添油加醋的部分,再让它按步骤生成代码,生成后我自己审查关键逻辑,最后让它补单元测试和文档。这套流程里 AI 承担的是“体力活”,判断和兜底还是人来做。
如果你打算长期在多个 Java 项目里用这套,可以考虑 Coding Plan,把模型调用和额度统一管理,不用每个项目单独折腾凭证:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。Key 管理入口还是控制台那个页面,需要新建或轮换 Key 时去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。用 Claude Code 那套工具链的,Anthropic 兼容接入方式在 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_anthropic&utm_campaign=rewrite 有说明,和 Cursor 是两条并行路径,按你团队习惯选。
最后提醒一句:MCP 里那个 MySQL 连接,永远用只读账号,永远别指向生产库。AI 再聪明也可能生成一条你没预期的 SQL,权限收窄是最便宜的保险。rules 文件建议纳入 Git 管理,团队里谁改了规则都能看到 diff,比口头约定靠谱。