文章封面图: Claude Code中的MCP:如何连接数据库和API

Claude Code中的MCP:如何连接数据库和API

发布于:

阅读时间: 3 min

主题: 技术

作者: Leandro Valencia

#claude code#mcp#model context protocol#mcp服务器#postgresql#superpowers#AI智能体

用 claude mcp add 为 Claude Code 添加 MCP 服务器,通过 .mcp.json 与团队共享,并在不暴露凭据的前提下连接 Git、PostgreSQL 和 API。

目录

Claude Code 安装完成后,就能在终端中读取文件并执行命令。要让它查询数据库、查看 Issue 或调用 API,你需要 MCP(Model Context Protocol)。这是 Anthropic 发布的开放协议,用于把模型与外部工具连接起来。

本指南说明如何添加 MCP 服务器、如何在不把凭据提交到 Git 的情况下与团队共享,以及在连接重要系统之前应遵循哪些安全规则。

快速参考

服务器 传输方式 命令 建议作用域 关键注意事项
本地 Git stdio(uvx) claude mcp add git -- uvx mcp-server-git user 检查它公开了哪些写入操作
PostgreSQL stdio(npx) claude mcp add db -- npx -y @bytebase/dbhub --dsn "$DATABASE_READONLY_URL" project 仅使用只读用户
远程 API http claude mcp add --transport http mi-api https://mcp.ejemplo.com/mcp project 令牌放在变量中,绝不写进文件
文件系统 stdio(npx) claude mcp add archivos -- npx -y @modelcontextprotocol/server-filesystem . local 将路径限制在项目内,绝不要指向磁盘根目录

MCP 的工作原理

Claude Code 充当客户端。每个 MCP 服务器都是一个进程或服务,负责公开工具,例如 run_query 或 list_issues。会话期间,Claude 能看到这些工具,自行决定何时调用,并根据你的配置向你请求许可。

连接方式有两种:

  • stdio: Claude Code 将服务器作为本地进程启动(通常使用 npx 或 uvx),并通过标准输入和标准输出通信。这是运行在你本机上的工具的常见方式。
  • http: 服务器位于远程 URL。这是云端服务的常见方式。许多大型服务都会发布带 OAuth 认证的官方 MCP 服务器。

步骤 1:添加本地服务器(stdio)

基本格式如下:

claude mcp add <nombre> -- <comando> [argumentos...]

-- 分隔符是必需的:它把 claude 的选项与启动服务器的命令分开。没有它,Claude Code 会尝试把服务器的参数当作自己的参数来解析。

Git 服务器示例:

claude mcp add git -- uvx mcp-server-git

使用 DBHub 连接 PostgreSQL 的示例,指向一个只读用户的环境变量:

export DATABASE_READONLY_URL="postgresql://lectura:****@db.tuempresa.com:5432/analytics"
claude mcp add db -- npx -y @bytebase/dbhub --dsn "$DATABASE_READONLY_URL"

步骤 2:连接远程服务器(HTTP)

claude mcp add --transport http mi-api https://mcp.ejemplo.com/mcp \
  --header "Authorization: Bearer $MI_API_TOKEN"

如果服务器使用 OAuth,就不要添加该 header:进入会话,执行 /mcp,然后在浏览器中完成认证流程。

步骤 3:选择作用域

每个服务器保存在三种作用域之一,你可以用 --scope 进行选择:

  • local(默认):仅供你自己使用,且只在当前项目中生效。适合测试,或使用个人凭据的服务器。
  • project:写入仓库根目录的 .mcp.json。克隆仓库的团队成员都会收到该配置。有人第一次使用项目服务器时,Claude Code 会请求批准。
  • user:供你在所有项目中使用。适合 Git 这类通用工具。
claude mcp add --scope project db -- npx -y @bytebase/dbhub --dsn '${DATABASE_READONLY_URL}'

步骤 4:共享配置而不共享密钥

.mcp.json 支持使用 ${VARIABLE} 语法引用环境变量(也支持 ${VARIABLE:-默认值})。这样,文件就可以在不含凭据的情况下提交到仓库:

{
  "mcpServers": {
    "mi-api": {
      "type": "http",
      "url": "https://mcp.ejemplo.com/mcp",
      "headers": {
        "Authorization": "Bearer ${MI_API_TOKEN}"
      }
    },
    "db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@bytebase/dbhub", "--dsn", "${DATABASE_READONLY_URL}"]
    }
  }
}

每位开发者导出自己的变量(export MI_API_TOKEN=...),或从密钥管理工具中加载,无需有人改动文件。

步骤 5:验证是否可用

claude mcp list        # estado de todos los servidores
claude mcp get db      # detalle de uno
claude mcp remove db   # eliminarlo

在会话中执行 /mcp,可以查看哪些服务器已连接,以及它们公开了哪些工具。如果某个服务器显示错误,最常见的原因是:启动 Claude Code 的 shell 中没有定义所需的环境变量。

连接重要系统前的 8 条安全规则

  1. 最小权限。 使用只读数据库用户,令牌只授予所需的权限。永远不要给智能体管理员用户。
  2. 仓库中零密钥。 始终在 .mcp.json 中使用环境变量。
  3. 限定路径。 文件服务器只应能看到项目文件夹。
  4. 使用官方或经过审查的服务器。 优先选择服务提供方自己发布的服务器。MCP 服务器会在你的机器上执行代码,安装前请确认其来源。
  5. 写入操作需要人工批准。 利用 Claude Code 的权限设置,让会修改数据的工具需要确认;或者使用匹配器(例如 mcp__db__.*)的 PreToolUse hook,阻止或记录某些调用。
  6. 合理的超时时间。 如果服务器启动较慢(首次通过 npx 下载通常较慢),请使用 MCP_TIMEOUT 变量(单位为毫秒)提高等待时间。
  7. 输出上限。 如果工具返回的结果非常庞大,请调整 MAX_MCP_OUTPUT_TOKENS,并让查询使用 LIMIT,避免占满模型的上下文。
  8. 先用副本,再碰生产。 进行分析时,连接副本或预发布环境,而不是主数据库。

Superpowers 在哪里发挥作用?

MCP 让 Claude Code 能够访问工具,而 Superpowers 为它提供一套方法:这是一个 skills 插件,会强制它先设计再编码,编写分步计划,并以测试优先的方式工作。两者相辅相成:有了 MCP,Claude 可以查询你的数据库;有了 Superpowers,它则是在经过审查的计划中完成这一切。

如果你还没有安装它,如何在 Claude Code 中安装 Superpowers 指南介绍了如何从插件市场在五分钟内完成安装。

团队方案

  1. 统一工具。 在团队中安装 Claude Code,并确定哪些服务器用于通用场景(user 作用域),哪些属于项目。
  2. 为 AI 创建凭据。 向基础设施团队申请专用的数据库用户,只读,并且只能访问所需的 schema。
  3. 对 .mcp.json 进行版本管理。 将它提交到仓库,使用环境变量,并在 README 中说明每位开发者需要哪些变量。
  4. 衡量影响。 如果团队解决问题的速度更快,你的成本结构也会随之改变。用利润率计算器算一算。

Step-by-step guide

  1. 添加本地服务器(stdio)

    claude mcp add <nombre> -- <comando>,命令前面要加上 -- 分隔符。

  2. 连接远程服务器(HTTP)

    claude mcp add --transport http <nombre> <url>,令牌放在 header 中。

  3. 选择正确的作用域

    local 供你个人使用,project 供团队使用(.mcp.json),user 适用于你所有的项目。

  4. 把凭据移出仓库

    在 .mcp.json 中使用 ${VARIABLE},让每位开发者在自己的 shell 中导出该变量。

  5. 验证并限制权限

    claude mcp list 或 /mcp 查看状态,使用只读用户,并用 hooks 管控写入操作。

Frequently asked questions

Claude Code 中的 MCP 是什么?

MCP(Model Context Protocol)是一种开放协议,让 Claude Code 能够连接数据库、代码仓库、任务管理器或 API 等外部工具。每个连接都是一个 MCP 服务器,它会公开 Claude 在会话中可以调用的工具。

local、project 和 user 作用域有什么区别?

local 只为你保存服务器,且仅限当前项目,这是默认值。project 会把它写入仓库根目录的 .mcp.json 文件,让整个团队都能使用。user 则让你在所有项目中都能使用该服务器。

连接生产数据库安全吗?

只有在使用只读用户、并且最好连接副本的情况下才安全。拥有生产环境写入权限的智能体可能因为误解指令而执行破坏性查询。此外,启用前也应先检查服务器公开了哪些工具。

使用 MCP 需要 Superpowers 吗?

不需要。MCP 已内置于 Claude Code。Superpowers 是一个 skills 插件,用于强制执行一套工作方法(设计、计划、测试)。两者可以互补,但各自都能独立运行。

相关文章

继续探索您可能感兴趣的相似内容

合作

我每天在用的工具,社区可以拿到更好的条件。

含推广链接。你支付的价格不变。查看全部合作
培训项目

准备好将您的想法转化为真实项目了吗?

Transforma是一个帮助您以清晰的方法创建、执行和扩展项目的培训项目。

了解Transforma项目