用 MCP 让 Claude Code 执行 Prisma 迁移

2 min read
Zekari
Claude CodeMCPPrismaSupabase数据库

工具的边界是人为的

AI 工具的能力取决于它能"看到"什么。Claude Code 可以读写文件、执行命令,但它无法直接操作云数据库。不是因为它不够智能,而是因为它缺少一个"通道"。

Model Context Protocol(MCP)就是这个通道。它让 AI 工具能够调用外部服务的 API,打破工具与环境之间的边界。

当你需要执行 Prisma 迁移到 Supabase 时,问题不在于 Claude Code 能否理解 Prisma schema,而在于它能否访问你的数据库连接。MCP 解决的就是这个问题。

MCP 的本质:协议而非工具

MCP 不是一个具体的工具,它是一个协议标准。任何服务都可以实现 MCP 接口,让 AI 工具调用它的能力。

对于数据库操作,你需要一个实现了 MCP 的数据库客户端。这个客户端:

  1. 持有数据库连接凭证
  2. 暴露标准化的操作接口(查询、迁移、备份等)
  3. 通过 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 会:

  1. 检测到 MCP Server 的存在
  2. 调用 supabase MCP Server 的迁移接口
  3. 传递 Prisma 命令
  4. 反馈执行结果

你不需要手动复制粘贴数据库 URL,不需要在本地终端执行命令,也不需要切换到 Supabase 控制台。所有操作都在对话中完成。

为什么这很重要

传统的数据库迁移流程是断裂的:

  1. 在本地修改 Prisma schema
  2. 生成迁移文件
  3. 切换到终端
  4. 找到数据库连接字符串
  5. 执行迁移命令
  6. 检查迁移是否成功
  7. 切换回代码编辑器

每一步都是上下文切换。每次切换都是认知成本。

MCP 把这些步骤压缩成一次对话。Claude Code 可以:

  • 修改 schema
  • 生成迁移
  • 执行迁移
  • 验证结果

所有操作在同一个上下文中完成。没有切换,没有中断。

权限的分离

MCP 的设计有一个关键原则:权限分离

Claude Code 本身不应该持有数据库凭证。它只是一个 AI 助手,它的职责是理解你的意图,生成代码,执行命令。

数据库凭证应该由 MCP Server 持有。MCP Server 是一个独立的进程,它的职责是安全地管理敏感信息,并暴露受控的操作接口。

这种分离有两个好处:

  1. 安全性:Claude Code 的日志、对话记录不会泄露数据库密码
  2. 可控性:你可以限制 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 工具链

2 min read

连接失败不仅是配置问题,更是关于理解系统状态边界的过程。通过 Supabase MCP 与 Claude Code,让不可见的问题变得可观测。

SupabaseMCP
Read More

执行数据库迁移的三种路径

2 min read

CLI、MCP 与线上 SQL——每种方法背后的权衡与适用场景。迁移不只是执行命令,更是选择控制权与便利性之间的平衡点。

数据库迁移
Read More

用 AI Agents 加速测试环境配置

3 min read

测试环境的配置是重复的琐事。环境变量、测试数据库、配置文件——这些步骤消耗时间但不产生直接价值。AI agents 改变了这个等式。

Claude Code测试
Read More

在Claude Code中写单元测试:简单高效的实践

2 min read

测试不是负担,是对话。Claude Code改变了测试的成本结构,让测试回归本质:验证行为,而非追求覆盖率。

Claude Code测试
Read More

CRUD 操作

2 min read

四个字母背后,是数据的生命周期,是权限的边界,也是系统设计的基础逻辑

系统设计软件工程
Read More

数据库参数国际化:从 13 个迁移学到的设计原则

3 min read

数据不该懂语言。当数据库参数嵌入中文标签时,系统的边界就被语言限制了。这篇文章从 13 个参数对齐迁移中提炼出设计原则——国际化不是功能,是系统设计的底层约束。

数据库国际化
Read More

单例模式管理 Redis 连接

5 min read

连接不是技术细节,而是系统与外部世界的第一次握手,是可靠性的起点

系统设计后端架构
Read More

查询先于假设

3 min read

数据库迁移后,所有功能失效。问题不在迁移本身,而在假设。真相只存在于查询结果中。

数据库迁移
Read More

Context 驱动的认证状态管理

3 min read

认证系统的核心不在登录按钮,而在状态同步。如何让整个应用感知用户状态变化,决定了用户体验的流畅度。

软件设计认证系统
Read More

PostgreSQL 原生不支持直接添加枚举值

1 min read

当一个类型系统拒绝改变,它在保护什么?

数据库系统设计
Read More