Skip to content

Gemini CLI 通过 MCP(Model Context Protocol)连接外部服务,让 AI 能直接操作 GitHub、数据库、Slack 等工具。本文以 GitHub MCP Server 为例,演示从凭据准备到自然语言使用的完整流程,适合第一次接入 MCP 的用户。

接入 MCP 服务器(GitHub 示例)

通过 MCP,Gemini CLI 可以连接外部服务(GitHub、数据库、Slack、Google Drive 等),让 AI 直接调用你的业务工具,而不只是读写本地文件。

前置条件

  • Gemini CLI 已安装并认证
  • Docker:本示例 GitHub MCP Server 以 Docker 容器形式运行
  • GitHub Personal Access Token(PAT):细粒度令牌

第一步:准备认证凭据

  1. 在 GitHub 创建细粒度 PAT
  2. 赋予以下权限:
    • Metadata:读取
    • Contents:读取
    • Issues:读取/写入
    • Pull Requests:读取/写入
  3. 将 Token 设置为环境变量:

macOS/Linux

bash
export GITHUB_PERSONAL_ACCESS_TOKEN="github_pat_..."

Windows(PowerShell)

powershell
$env:GITHUB_PERSONAL_ACCESS_TOKEN="github_pat_..."

建议写入 ~/.bashrc~/.zshrc,避免每次开新终端都要重新 export。


第二步:配置 settings.json

打开 ~/.gemini/settings.json(全局配置)或项目下的 .gemini/settings.json,添加 mcpServers 块:

json
{
  "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}"
      }
    }
  }
}

${GITHUB_PERSONAL_ACCESS_TOKEN} 是变量引用,Gemini CLI 启动时从当前环境变量展开。Token 不会明文写入配置文件。

字段说明

字段说明
command启动 MCP 服务器的可执行文件
args传给命令的参数数组
env注入到服务器进程的环境变量

第三步:验证连接

重启 Gemini CLI(保存 settings.json 后 CLI 会自动尝试启动已配置的服务器)。

输入:

/mcp list

正常输出:

✓ github: docker run ... - Connected

如果显示 Disconnected 或错误:

  • 确认 Docker Desktop 已启动并运行
  • 手动执行 docker run -i --rm ghcr.io/github/github-mcp-server:latest 查看容器本身是否报错
  • 检查 PAT 是否正确且未过期

如需强制重载服务器工具列表,使用:

/mcp reload

第四步:用自然语言使用工具

服务器连接成功后,Agent 自动获得新的工具能力,无需学习特殊命令,直接用自然语言即可。

示例 1:列出 Pull Request

列出 google/gemini-cli 仓库中当前打开的 PR。

Agent 会:

  1. 识别请求匹配 GitHub 工具
  2. 调用 mcp_github_list_pull_requests
  3. 将结果整理后展示给你

示例 2:创建 Issue

在我的 repo 中创建一个标题为 "Bug: 登录失败" 的 Issue,描述为 "详见日志"。

Agent 会调用 mcp_github_create_issue 并将链接返回给你。


扩展:其他 MCP 服务器

接入方式与 GitHub 完全一致,只需替换 command/args 和认证环境变量。

常用服务器推荐:

服务镜像/命令
Postgresnpx -y @modelcontextprotocol/server-postgres postgresql://...
Slackdocker run -e SLACK_BOT_TOKEN ghcr.io/modelcontextprotocol/server-slack
Google Drive见官方文档

完整服务器列表:modelcontextprotocol/servers

MCP 服务器高级配置(SSE 远程传输、HTTP 模式、超时等)参见 MCP 服务器接入参考

常见问题

Q: settings.json 中 env 里引用环境变量没有展开,值变成了字面字符串怎么办?

A: 确认格式为 "${VAR_NAME}"(美元符号加花括号),且当前 Shell 中确实已 export 该变量。在 Windows PowerShell 里,$env:VAR_NAME 的值需要先 export 为进程级环境变量,重启终端后生效。

Q: 同一项目里能同时接多个 MCP 服务器吗?

A: 可以,在 mcpServers 对象中添加多个键即可。每个键对应一个独立的服务器进程,工具名自动以 mcp_<server_name>_ 为前缀区分。

Q: 如何知道某个 MCP 服务器提供了哪些工具?

A: 运行 /mcp list 后,可以再运行 /mcp info <server-name> 查看该服务器暴露的所有工具及其说明。