用 MCP 让 Claude Code 执行 Prisma 迁移
工具的边界是人为的
AI 工具的能力取决于它能"看到"什么。Claude Code 可以读写文件、执行命令,但它无法直接操作云数据库。不是因为它不够智能,而是因为它缺少一个"通道"。
Model Context Protocol(MCP)就是这个通道。它让 AI 工具能够调用外部服务的 API,打破工具与环境之间的边界。
当你需要执行 Prisma 迁移到 Supabase 时,问题不在于 Claude Code 能否理解 Prisma schema,而在于它能否访问你的数据库连接。MCP 解决的就是这个问题。
MCP 的本质:协议而非工具
MCP 不是一个具体的工具,它是一个协议标准。任何服务都可以实现 MCP 接口,让 AI 工具调用它的能力。
对于数据库操作,你需要一个实现了 MCP 的数据库客户端。这个客户端:
- 持有数据库连接凭证
- 暴露标准化的操作接口(查询、迁移、备份等)
- 通过 MCP 协议让 Claude Code 调用这些操作
💡 Click the maximize icon to view in fullscreen
Claude Code 不需要知道你的数据库密码,也不需要理解 Supabase 的 API。它只需要调用 MCP Server 提供的"执行迁移"接口。
实际操作流程
配置 MCP Server
你需要先配置一个支持 Prisma 的 MCP Server。以 @modelcontextprotocol/server-postgres 为例:
npm install -g @modelcontextprotocol/server-postgres
在 Claude Code 的配置文件中添加 MCP Server:
{
"mcpServers": {
"supabase": {
"command": "mcp-server-postgres",
"args": [],
"env": {
"DATABASE_URL": "postgresql://user:password@db.supabase.co:5432/postgres"
}
}
}
}
不要把数据库凭证直接写在配置文件中。使用环境变量:
{
"env": {
"DATABASE_URL": "${SUPABASE_DATABASE_URL}"
}
}
然后在系统环境变量中设置 SUPABASE_DATABASE_URL。
让 Claude Code 执行迁移
配置完成后,你可以直接对 Claude Code 说:
"使用 MCP 连接到 Supabase,执行
prisma migrate deploy"
Claude Code 会:
- 检测到 MCP Server 的存在
- 调用
supabaseMCP Server 的迁移接口 - 传递 Prisma 命令
- 反馈执行结果
你不需要手动复制粘贴数据库 URL,不需要在本地终端执行命令,也不需要切换到 Supabase 控制台。所有操作都在对话中完成。
为什么这很重要
传统的数据库迁移流程是断裂的:
- 在本地修改 Prisma schema
- 生成迁移文件
- 切换到终端
- 找到数据库连接字符串
- 执行迁移命令
- 检查迁移是否成功
- 切换回代码编辑器
每一步都是上下文切换。每次切换都是认知成本。
MCP 把这些步骤压缩成一次对话。Claude Code 可以:
- 修改 schema
- 生成迁移
- 执行迁移
- 验证结果
所有操作在同一个上下文中完成。没有切换,没有中断。
权限的分离
MCP 的设计有一个关键原则:权限分离。
Claude Code 本身不应该持有数据库凭证。它只是一个 AI 助手,它的职责是理解你的意图,生成代码,执行命令。
数据库凭证应该由 MCP Server 持有。MCP Server 是一个独立的进程,它的职责是安全地管理敏感信息,并暴露受控的操作接口。
这种分离有两个好处:
- 安全性:Claude Code 的日志、对话记录不会泄露数据库密码
- 可控性:你可以限制 MCP Server 只允许执行特定操作(如只读查询、仅迁移)
如果你对权限分离和安全边界感兴趣,可以阅读 failure-isolation,它讨论了如何在系统中建立可靠的隔离边界。
关于如何设计可控的操作接口,rpc-atomic-operations 探讨了原子操作的重要性。
MCP 的更广泛应用
Prisma 迁移只是 MCP 能做的一小部分。你可以为任何外部服务创建 MCP Server:
- GitHub:让 Claude Code 直接创建 PR、管理 Issues
- Slack:发送通知、查询历史消息
- AWS:部署 Lambda、查询日志
- Stripe:查询订单、处理退款
每个 MCP Server 都是一个能力扩展。Claude Code 不需要为每个服务单独开发集成,它只需要调用标准化的 MCP 接口。
这就是协议的力量:一次定义,无限扩展。
最后
工具的边界是人为的。MCP 打破的不只是技术边界,更是思维边界。
当你不再需要在终端、浏览器、编辑器之间切换,当所有操作都可以通过对话完成,你会发现工作流发生了本质变化。
不是更快,而是更流畅。不是更多功能,而是更少摩擦。
这就是 MCP 的价值:让 AI 工具真正融入你的工作流,而不是作为一个外挂存在。
Related Posts
Articles you might also find interesting
诊断 Supabase 连接失败:借助 MCP 工具链
连接失败不仅是配置问题,更是关于理解系统状态边界的过程。通过 Supabase MCP 与 Claude Code,让不可见的问题变得可观测。
执行数据库迁移的三种路径
CLI、MCP 与线上 SQL——每种方法背后的权衡与适用场景。迁移不只是执行命令,更是选择控制权与便利性之间的平衡点。
用 AI Agents 加速测试环境配置
测试环境的配置是重复的琐事。环境变量、测试数据库、配置文件——这些步骤消耗时间但不产生直接价值。AI agents 改变了这个等式。
在Claude Code中写单元测试:简单高效的实践
测试不是负担,是对话。Claude Code改变了测试的成本结构,让测试回归本质:验证行为,而非追求覆盖率。
CRUD 操作
四个字母背后,是数据的生命周期,是权限的边界,也是系统设计的基础逻辑
数据库参数国际化:从 13 个迁移学到的设计原则
数据不该懂语言。当数据库参数嵌入中文标签时,系统的边界就被语言限制了。这篇文章从 13 个参数对齐迁移中提炼出设计原则——国际化不是功能,是系统设计的底层约束。
单例模式管理 Redis 连接
连接不是技术细节,而是系统与外部世界的第一次握手,是可靠性的起点
查询先于假设
数据库迁移后,所有功能失效。问题不在迁移本身,而在假设。真相只存在于查询结果中。
Context 驱动的认证状态管理
认证系统的核心不在登录按钮,而在状态同步。如何让整个应用感知用户状态变化,决定了用户体验的流畅度。
PostgreSQL 原生不支持直接添加枚举值
当一个类型系统拒绝改变,它在保护什么?