返回市场
MCP服务器工具

MCP服务器工具

作者:tanaikech78 星标更新:2025-11-15

项目介绍

MseeP.ai 安全评估徽章

现在,ToolsForMCPServer 可以作为 Gemini 扩展使用。您可以在 https://github.com/tanaikech/ToolsForMCPServer-extension 查看安装方法。

Gemini CLI 与 MCP 服务器:通过 Google Apps Script 扩展可能性

Gemini CLI 确认使用 Google Apps Script(GAS)构建的 MCP 服务器提供了巨大的可能性。如果您已经创建了 GAS 的代码片段,这些代码可以通过将其用作 MCP 服务器来重新激活或以新的方式利用。Gemini CLI 和其他 MCP 客户端将有助于实现这一目标。

<a name="top"></a> MIT 许可证

<a name="abstract"></a>

摘要

Gemini CLI 提供了一个强大的命令行界面,用于与 Google 的 Gemini 模型进行交互。通过利用模型上下文协议(MCP),CLI 可以扩展自定义工具。本报告探讨了将 Gemini CLI 与使用 Google Apps Script Web 应用程序构建的 MCP 服务器集成。我们展示了这种组合如何简化对 Google Workspace API(如 Gmail、Drive、日历等)的授权,使 Gemini 能够直接在 Google 生态系统中执行复杂的多步骤任务。我们提供了设置说明和几个实际示例,展示这种集成如何解锁显著的自动化和生产力提升潜力。

引言

最近,我发布了一份名为“Gemini CLI 与由 Google Apps Script Web 应用程序构建的 MCP 服务器”的报告(参考)。这份初始报告强调了如何将使用 Google Apps Script Web 应用程序开发的模型上下文协议(MCP)服务器与 Gemini CLI 集成。

使用 Google Apps Script 的一个关键优势是它能够无缝地授权 Google API,特别是那些属于 Google Workspace 的 API。这大大减少了与构建与 Google Workspace 服务交互的应用程序相关的开发开销。

在此基础上,本报告旨在探索将 Gemini CLI 与由 Google Apps Script Web 应用程序驱动的 MCP 服务器结合时所扩大的可能性。我们将深入探讨这种强大组合如何促进各种工具和服务的集成,解锁无限的潜在应用,以增强 Google 生态系统中的生产力和自动化。

当前工具

在当前阶段(2025年11月14日),ToolsForMCPServer 为 MCP 服务器提供了以下 160 个工具。

您可以通过在 Gemini CLI 上运行以下命令查看所有工具的描述。

/mcp desc

下一节详细介绍了如何部署使用 Google Apps Script 构建的 MCP 服务器,并配置 Gemini CLI 使用它。

准备 MCP 服务器

1. 创建 Google Apps Script 项目

首先,创建一个新的独立 Google Apps Script 项目。独立项目不绑定到特定的 Google 表格、文档或表单,使其非常适合创建通用网络服务。您可以通过访问 script.google.com 来创建一个。参考

2. 安装库

为了简化 MCP 服务器的构建,我们将使用预构建的 Google Apps Script 库。这些库封装了复杂的 MCP 处理逻辑,并提供现成的工具,保持主脚本的整洁。

此示例使用两个 Google Apps Script 库:

  1. MCPApp:管理 MCP 服务器生命周期和通信协议。
  2. ToolsForMCPServer:提供一组预构建工具,用于与 Google Workspace 服务(如 Gmail、Drive、日历等)交互。

库项目密钥和安装

  1. 打开刚刚创建的项目的脚本编辑器。
  2. 安装 MCPApp
  3. 安装 ToolsForMCPServer

3. 脚本

请将以下脚本复制并粘贴到脚本编辑器中(替换任何现有代码),然后保存项目。

这是一个使用该库的基本脚本。

const apiKey = "###"; // Gemini API 的 API 密钥

/**
 * 当 MCP 客户端访问 Web 应用程序时,此函数会自动运行。
 */
const doPost = (e) => main(e);

function main(eventObject) {
  const m = ToolsForMCPServer;

  m.apiKey = apiKey; // 这是用于 Gemini API 的 API 密钥。
  // m.model = "models/gemini-2.5-flash"; // 如果更改模型,请使用此行。
  // m.defaultCalendarId = "###"; // 如果要使用特定的日历,请使用此行。
  // m.enableBaseTools = false; // 禁用基础工具
  // m.enableClassroomTools = false; // 禁用管理 Google Classroom 的工具
  // m.enablePeopleTools = false; // 禁用管理 Google People 的工具
  // m.enableAnalyticsTools = false; // 禁用管理 Google Analytics 的工具
  // m.enableMapsTools = false; // 禁用管理 Google Maps 的工具
  // m.enableFileSearch = false; // 禁用管理文件搜索的工具

  const object = { eventObject, items: m.getTools() };
  return new MCPApp.mcpApp({ accessKey: "sample" })
    .setServices({ lock: LockService.getScriptLock() })
    .server(object);
}

注意:

  • 如果您打算使用以下工具,必须取消注释脚本中的 apiKey 行,并提供有效的 Gemini API API 密钥。

    • generate_roadmap_to_google_sheets:在 Google 表格中创建路线图。
    • generate_description_on_google_drive:生成并设置 Google Drive 中文件的描述。
    • generate_image_on_google_drive:根据提示生成图像并将其保存到 Google Drive。
    • summarize_file_on_google_drive:总结存储在 Google Drive 中的文件。
    • description_web_site:给定网址时提供网站描述。
  • 如果您想使用特定的 Google 日历,请设置 defaultCalendarId

API

  • 如果发生与 Drive API 相关的错误,请在高级 Google 服务中启用 Drive API。
  • 如果您想使用 API 的批量更新方法来管理文档、表格、幻灯片和日历,请在高级 Google 服务中启用 Docs API、Sheets API、Slides API 和 Calendar API。
  • 如果您想管理 Google Classroom 和 Google People,请在高级 Google 服务中启用 Google Classroom API 和 Google People API。
  • 如果您想检索驱动活动,请在高级 Google 服务中启用 Drive Activity API。
  • 如果您想使用 Google Analytics,请在高级 Google 服务中启用 Google Analytics Admin API 和 Google Analytics Data API。

显示所有工具

当运行此脚本时,库中的所有工具将以 JSON 对象的形式显示。

function showAlltools() {
  const res = ToolsForMCPServer.getToolList();
  console.log(res);
}

过滤工具

当您想使用特定工具时,可以使用以下脚本。

此脚本仅使用工具 get_exchange_rate

function main(eventObject) {
  const enables = ["get_exchange_rate"];

  const m = ToolsForMCPServer;
  m.apiKey = apiKey;
  const object = { eventObject, items: m.getTools({ enables }) };
  return new MCPApp.mcpApp({ accessKey: "sample" })
    .setServices({ lock: LockService.getScriptLock() })
    .server(object);
}

此脚本使用除工具 get_exchange_rate 之外的所有工具。

function main(eventObject) {
  const disables = ["get_exchange_rate"];

  const m = ToolsForMCPServer;
  m.apiKey = apiKey;
  const object = { eventObject, items: m.getTools({ disables }) };
  return new MCPApp.mcpApp({ accessKey:  "sample" })
    .setServices({ lock: LockService.getScriptLock() })
    .server(object);
}

4. 部署 Web 应用程序

为了让 Gemini CLI 与我们的脚本通信,我们必须将其部署为 Web 应用程序。这将创建一个唯一的 URL,充当我们的 MCP 服务器端点。

您可以在 官方文档 中找到详细信息。

请按照以下步骤在脚本编辑器中部署 Web 应用程序:

  1. 在脚本编辑器右上角,点击 部署 -> 新部署
  2. 点击 选择类型 -> Web 应用程序
  3. 部署配置 下的字段中输入 Web 应用程序的描述。
  4. 选择 “我” 作为 “执行者”。这一点非常重要,因为它允许脚本以您的权限运行,从而访问您的 Google 服务。
  5. 选择 “任何人” 作为 “谁有访问权”。这使得 URL 可以从互联网调用。访问受不可猜测的 URL 和脚本中定义的 accessKey 控制。
  6. 点击 部署
  7. 授权必要的作用域后,复制 Web 应用程序 URL。它看起来类似于 https://script.google.com/macros/s/###/exec。这就是您的 MCP 服务器端点。

重要: 当您修改 Apps Script 代码时,必须创建一个新的部署版本以发布更改。点击 部署 > 管理部署,选择您的活动部署,点击铅笔图标,并从版本下拉菜单中选择 “新版本”更多信息

准备 Gemini CLI

1. 安装 Gemini CLI

请遵循官方文档在您的系统上安装 Gemini CLI。参考

使用 Gemini CLI 和其他 AI 代理使用此 MCP 服务器有两种模式如下。

2A. 模式 1

在此模式下,Gemini CLI 直接连接到由 Google Apps Script Web 应用程序构建的 MCP 服务器。

要将 Gemini CLI 连接到您的新 Apps Script 服务器,您需要编辑其设置文件 settings.json。此文件通常位于 macOS/Linux 上的 ~/.gemini/settings.json 或 Windows 上的 %USERPROFILE%\.gemini\settings.json

添加 mcpServers 配置块,如下所示。

  1. https://script.google.com/macros/s/###/exec 替换为您之前复制的 Web 应用程序 URL。
  2. 确保 accessKey 查询参数与您在 Google Apps Script 中定义的 accessKey 匹配(例如,示例)。
{
  "theme": "Default",
  "selectedAuthType": "gemini-api-key",
  "mcpServers": {
    "gas_web_apps": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://script.google.com/macros/s/###/exec?accessKey=sample"
      ],
      "env": {}
    }
  },
  "disableAutoUpdate": true
}

或者

{
  "theme": "Default",
  "selectedAuthType": "###",
  "mcpServers": {
    "gas_web_apps": {
      "httpUrl": "https://script.google.com/macros/s/###/exec?accessKey=sample",
      "description": "由 Google Apps Script Web 应用程序构建的 MCP 服务器"
    }
  }
}
  • "gas_web_apps":您服务器的本地标识符。

  • "httpUrl":您的 Web 应用程序 URL。在当前阶段,如果使用此选项,可能会出现错误。此时,请使用 mcp-remote

  • 如果您使用 mcp-remote,请先安装它。参考

  • 如果出现类似 请求超时 的错误,请添加 timeout 并使用 GEMINI_TIMEOUT 如下。

    {
      "theme": "Default",
      "selectedAuthType": "gemini-api-key",
      "mcpServers": {
        "gas_web_apps": {
          "command": "npx",
          "args": [
            "mcp-remote",
            "https://script.google.com/macros/s/###/exec?accessKey=sample"
          ],
          "env": {},
          "timeout": 300000
        }
      },
      "disableAutoUpdate": true
    }
    
    GEMINI_TIMEOUT=300 # 秒
    

2B. [新增] 模式 2(2025年10月15日新增)

现在,ToolsForMCPServer 可以作为 Gemini 扩展使用。您可以在 https://github.com/tanaikech/ToolsForMCPServer-extension 查看安装方法。

3. 文件内容传输(2025年7月9日新增)

最近,我发布了一份名为“使用 Gemini CLI 和由 Google Apps Script 构建的 MCP 服务器处理文件内容”的报告 参考。在这份报告中,我得出结论,在 Gemini CLI 和 Google Drive 之间传输文件内容时,使用后台的 Drive API 比直接在提示中嵌入 base64 数据更有效。因此,为了促进这种有效的传输,我使用了 ggsrun,这是一种 CLI 工具。

3.1. ggsrun 设置指南

要使用此方法,您首先需要设置 ggsrun

  1. 下载 ggsrun:从 ggsrun 发布页面 获取最新版本。主要仓库在此处 https://github.com/tanaikech/ggsrun
  2. 创建 Google Cloud 项目:转到 Google Cloud Platform 资源管理器 并点击 创建项目
  3. 启用 Drive API:在您的新项目中,导航至 API 和服务 > 已启用的 API 和服务。搜索并启用 Drive API
  4. 创建凭据:导航至 API 和服务 > 凭据
  5. 配置 OAuth 客户端 ID:点击 创建凭据,选择 OAuth 客户端 ID,并选择 Web 应用程序
  6. 设置重定向 URI:在“授权的重定向 URI”下,添加 http://localhost:8080
  7. 创建并下载凭据:点击 创建,然后 下载 JSON重要:将下载的文件重命名为 client_secret.json 并放置在您的工作目录中。
  8. 验证 ggsrun

8-1. 在包含 client_secret.json 的目录中打开终端。

8-2. 运行命令 ggsrun auth

8-3. 复制终端中显示的 URL,将其粘贴到浏览器中,并授权请求的作用域。

8-4. 从浏览器地址栏中复制授权码,并将其粘贴回终端。

要验证设置,请运行 ggsrun di 以显示有关您的 Google Drive 的信息。

<a name="configggsrun"></a>

3.2. 配置 Gemini CLI 使用 ggsrun

要使 Gemini CLI 能够使用 ggsrun,请在您的 GEMINI.md 文件中添加以下工具定义。此文件通常位于 macOS/Linux 上的 ~/.gemini/GEMINI.md 或 Windows 上的 %USERPROFILE%\.gemini\GEMINI.md

# 使用 ggsrun 在本地 PC 和 Google Drive 之间传输文件内容

* GitHub 仓库:[https://github.com/tanaikech/ggsrun](https://github.com/tanaikech/ggsrun)
* 若要通过文件名从 Google Drive 下载文件,请使用以下命令:
  ```bash
  ggsrun