通过 MCP(Model Context Protocol),Gemini CLI 可以连接 GitHub、PostgreSQL、Slack 等外部服务,获得超出内置工具的能力。本页介绍通过 settings.jsongemini mcp add 命令配置 MCP 服务器的完整流程。

MCP 服务器接入

MCP(Model Context Protocol)是一个开放标准,让 AI 工具可以通过统一接口连接各种外部服务。配置好 MCP 服务器后,Gemini CLI 就能直接操作 GitHub、查询数据库、发 Slack 消息等。

配置方式一:编辑 settings.json(推荐)

~/.gemini/settings.json(全局)或 项目/.gemini/settings.json(项目级)中添加 mcpServers 块:

示例:接入 GitHub MCP

{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server:latest"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    }
  }
}

注意:env 字段中用 ${VAR_NAME} 引用环境变量,而不是直接写 token 值,避免泄漏到配置文件里。

示例:接入 npx 类型 MCP(无需 Docker)

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "${DATABASE_URL}"
      }
    }
  }
}

示例:HTTP 类型 MCP

{
  "mcpServers": {
    "my-api": {
      "url": "http://localhost:3000/mcp",
      "transport": "http"
    }
  }
}

配置方式二:CLI 命令(快速添加)

# 添加 GitHub MCP(npx 方式)
gemini mcp add github npx -y @modelcontextprotocol/server-github \
  --env GITHUB_TOKEN=ghp_xxx

# 添加 PostgreSQL MCP
gemini mcp add postgres npx -y @modelcontextprotocol/server-postgres \
  --env DATABASE_URL=postgres://user:pass@localhost/mydb

# 添加 HTTP 类型 MCP
gemini mcp add myservice http://localhost:3000 --transport http

# 指定仅允许特定工具
gemini mcp add github npx -y @modelcontextprotocol/server-github \
  --include-tools list_repos,create_issue

# 查看已配置的 MCP 服务器
gemini mcp list

# 删除
gemini mcp remove github

验证连接

重启 Gemini CLI 后,在 REPL 中:

/mcp list

看到 ✓ github: ... - Connected 表示连接成功。

如果显示 Disconnected,检查:

  1. Docker 是否在运行(Docker 类型)
  2. 环境变量是否正确设置
  3. 网络是否可访问(HTTP 类型)

遇到问题时也可以用 /mcp reload 重新初始化。

常用 MCP 服务器推荐

服务 npm 包 功能
GitHub @modelcontextprotocol/server-github 管理仓库、Issue、PR
PostgreSQL @modelcontextprotocol/server-postgres 执行 SQL 查询
Filesystem @modelcontextprotocol/server-filesystem 安全文件系统访问
Brave Search @modelcontextprotocol/server-brave-search 网页搜索
Slack @modelcontextprotocol/server-slack 发消息、管理频道
SQLite @modelcontextprotocol/server-sqlite 操作本地 SQLite 数据库

完整列表见 MCP 官方仓库

与 Claude Code MCP 配置对比

Gemini CLI 和 Claude Code 的 MCP 配置格式非常相似,可以互相参考:

特性 Gemini CLI Claude Code
配置文件 ~/.gemini/settings.json ~/.claude/settings.json
配置键 mcpServers mcpServers
格式 基本相同 基本相同
范围 全局 / 项目级 全局 / 项目级

常见问题

Q: Docker MCP 和 npx MCP 哪个更推荐?

A: npx 更轻量,不需要 Docker,适合日常开发。Docker 更隔离,适合需要运行服务端进程或有特殊依赖的 MCP 服务器。

Q: MCP 服务器能访问我的私有代码吗?

A: MCP 服务器运行在本地,你控制它能访问的资源。但通过 --include-tools 可以限制只允许特定工具,比如只允许读取而不允许写入。

Q: 如何只在特定项目启用某个 MCP?

A: 在项目目录的 .gemini/settings.json(而非全局的 ~/.gemini/settings.json)中配置 mcpServers,该 MCP 只会在这个项目中生效。