Appearance
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):细粒度令牌
第一步:准备认证凭据
- 在 GitHub 创建细粒度 PAT
- 赋予以下权限:
- Metadata:读取
- Contents:读取
- Issues:读取/写入
- Pull Requests:读取/写入
- 将 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 会:
- 识别请求匹配 GitHub 工具
- 调用
mcp_github_list_pull_requests - 将结果整理后展示给你
示例 2:创建 Issue
在我的 repo 中创建一个标题为 "Bug: 登录失败" 的 Issue,描述为 "详见日志"。Agent 会调用 mcp_github_create_issue 并将链接返回给你。
扩展:其他 MCP 服务器
接入方式与 GitHub 完全一致,只需替换 command/args 和认证环境变量。
常用服务器推荐:
| 服务 | 镜像/命令 |
|---|---|
| Postgres | npx -y @modelcontextprotocol/server-postgres postgresql://... |
| Slack | docker 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> 查看该服务器暴露的所有工具及其说明。