Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

MCP 服务器

通过 settings.json 的 mcpServers 连接 MCP 服务器:集成架构、传输方式、资源引用、全局设置与每个服务器的配置属性。

MCP 服务器是通过 Model Context Protocol 向 Gemini CLI 暴露工具和资源的应用,让它能与外部系统和数据源交互。它们是 Gemini 模型与你的本地环境或其他服务(如 API)之间的桥梁。有了 MCP 服务器,Gemini CLI 可以:发现工具(通过标准化的 schema 定义列出可用工具、描述和参数)、执行工具(用定义的参数调用特定工具并接收结构化响应)、访问资源(读取服务器暴露的特定资源,如文件、API 载荷、报告)。

集成架构

Gemini CLI 通过内置在核心包里的发现与执行系统与 MCP 服务器集成。发现层依次:遍历你 settings.json 的 mcpServers 配置里的服务器;用合适的传输机制建立连接;用 MCP 协议从每个服务器获取工具定义;清理并验证工具 schema 以兼容 Gemini API;把工具注册到带冲突解决的全局工具注册表;如果服务器暴露了资源,也获取并注册。执行层把每个发现的 MCP 工具包装起来:根据服务器信任设置和用户偏好处理确认逻辑、用正确的参数调用 MCP 服务器、处理响应供 LLM 上下文和用户展示、维护连接状态并处理超时。

传输机制:Gemini CLI 支持三种 MCP 传输类型:Stdio(启动子进程,通过 stdin/stdout 通信)、SSE(连接到 Server-Sent Events 端点)、可流式 HTTP(用 HTTP 流通信)。

使用 MCP 资源

有些 MCP 服务器除了工具和提示外,还暴露上下文「资源」。Gemini CLI 自动发现它们,并让你在聊天里引用。发现时,CLI 获取每个服务器的 resources/list 结果;/mcp 命令会在每个已连接服务器的工具和提示旁边显示 Resources 一节。在对话里用与引用本地文件相同的 @ 语法引用资源:

@server://resource/path

资源 URI 与文件系统路径一起出现在补全菜单里;提交消息时,CLI 调用 resources/read 并把内容注入对话。

在 settings.json 里配置 MCP 服务器

Gemini CLI 用 settings.json 里的 mcpServers 配置来定位和连接 MCP 服务器,支持多个使用不同传输机制的服务器。有两种配置方式:顶层的 mcpServers 对象用于具体的服务器定义,mcp 对象用于控制服务器发现和执行的全局设置。

全局 MCP 设置(mcp)

  • mcp.serverCommand(字符串):启动 MCP 服务器的全局命令
  • mcp.allowed(字符串数组):允许的 MCP 服务器名列表;设置后,只连接这个列表里的服务器(对应 mcpServers 对象里的键)
  • mcp.excluded(字符串数组):要排除的 MCP 服务器名列表,列表里的服务器不会被连接
{
  "mcp": {
    "allowed": ["my-trusted-server"],
    "excluded": ["experimental-server"]
  }
}

服务器特定配置(mcpServers)

{
  "mcpServers": {
    "serverName": {
      "command": "path/to/server",
      "args": ["--arg1", "value1"],
      "env": {
        "API_KEY": "$MY_API_TOKEN"
      },
      "cwd": "./server-directory",
      "timeout": 30000,
      "trust": false
    }
  }
}

必填(以下之一):command(Stdio 传输的可执行文件路径)、url(SSE 端点 URL,如 "http://localhost:8080/sse")、httpUrl(HTTP 流端点 URL)。

可选:args(Stdio 传输的命令行参数);headers(用 url 或 httpUrl 时的自定义 HTTP 头);env(服务器进程的环境变量,值可以用 $VAR_NAME 或 ${VAR_NAME}(所有平台)或 %VAR_NAME%(仅 Windows)引用环境变量);cwd(Stdio 传输的工作目录);timeout(请求超时毫秒数,默认 600,000 毫秒,即 10 分钟);trust(为 true 时绕过该服务器的所有工具调用确认,默认 false);includeTools(要包含的该服务器的工具名列表,指定后只有列出的工具可用,白名单行为;不指定则默认启用服务器的所有工具);excludeTools(要排除的工具名列表,即使服务器暴露了它们模型也不可用;excludeTools 优先于 includeTools,同时在两个列表里则被排除)。

用 CLI 添加更方便:gemini mcp add <name> <command>(见「CLI 速查表」)。官方文档还有 OAuth 认证的 MCP 服务器、各传输的完整示例和 /mcp 命令的用法,以官方原文为准。