Gemini CLI 确认使用 Google Apps Script(GAS)构建的 MCP 服务器提供了巨大的可能性。如果您已经创建了 GAS 的代码片段,这些代码可以通过将其用作 MCP 服务器来重新激活或以新的方式利用。Gemini CLI 和其他 MCP 客户端将有助于实现这一目标。
<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 使用它。
首先,创建一个新的独立 Google Apps Script 项目。独立项目不绑定到特定的 Google 表格、文档或表单,使其非常适合创建通用网络服务。您可以通过访问 script.google.com 来创建一个。参考
为了简化 MCP 服务器的构建,我们将使用预构建的 Google Apps Script 库。这些库封装了复杂的 MCP 处理逻辑,并提供现成的工具,保持主脚本的整洁。
此示例使用两个 Google Apps Script 库:
1TlX_L9COAriBlAYvrMLiRFQ5WVf1n0jChB6zHamq2TNwuSbVlI5sBUzhMCPApp1lnE7UL1jQgPDbTB9yjhiwZM0SaS9MObhzvWUWb_t8FisO6A3bLepvM2jToolsForMCPServer请将以下脚本复制并粘贴到脚本编辑器中(替换任何现有代码),然后保存项目。
这是一个使用该库的基本脚本。
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 密钥。
如果您想使用特定的 Google 日历,请设置 defaultCalendarId。
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);
}
为了让 Gemini CLI 与我们的脚本通信,我们必须将其部署为 Web 应用程序。这将创建一个唯一的 URL,充当我们的 MCP 服务器端点。
您可以在 官方文档 中找到详细信息。
请按照以下步骤在脚本编辑器中部署 Web 应用程序:
accessKey 控制。https://script.google.com/macros/s/###/exec。这就是您的 MCP 服务器端点。重要: 当您修改 Apps Script 代码时,必须创建一个新的部署版本以发布更改。点击 部署 > 管理部署,选择您的活动部署,点击铅笔图标,并从版本下拉菜单中选择 “新版本”。更多信息。
请遵循官方文档在您的系统上安装 Gemini CLI。参考
使用 Gemini CLI 和其他 AI 代理使用此 MCP 服务器有两种模式如下。
在此模式下,Gemini CLI 直接连接到由 Google Apps Script Web 应用程序构建的 MCP 服务器。
要将 Gemini CLI 连接到您的新 Apps Script 服务器,您需要编辑其设置文件 settings.json。此文件通常位于 macOS/Linux 上的 ~/.gemini/settings.json 或 Windows 上的 %USERPROFILE%\.gemini\settings.json。
添加 mcpServers 配置块,如下所示。
https://script.google.com/macros/s/###/exec 替换为您之前复制的 Web 应用程序 URL。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 # 秒
现在,ToolsForMCPServer 可以作为 Gemini 扩展使用。您可以在 https://github.com/tanaikech/ToolsForMCPServer-extension 查看安装方法。
最近,我发布了一份名为“使用 Gemini CLI 和由 Google Apps Script 构建的 MCP 服务器处理文件内容”的报告 参考。在这份报告中,我得出结论,在 Gemini CLI 和 Google Drive 之间传输文件内容时,使用后台的 Drive API 比直接在提示中嵌入 base64 数据更有效。因此,为了促进这种有效的传输,我使用了 ggsrun,这是一种 CLI 工具。
ggsrun 设置指南要使用此方法,您首先需要设置 ggsrun。
ggsrun:从 ggsrun 发布页面 获取最新版本。主要仓库在此处 https://github.com/tanaikech/ggsrun。http://localhost:8080。client_secret.json 并放置在您的工作目录中。ggsrun:8-1. 在包含 client_secret.json 的目录中打开终端。
8-2. 运行命令 ggsrun auth。
8-3. 复制终端中显示的 URL,将其粘贴到浏览器中,并授权请求的作用域。
8-4. 从浏览器地址栏中复制授权码,并将其粘贴回终端。
要验证设置,请运行 ggsrun di 以显示有关您的 Google Drive 的信息。
<a name="configggsrun"></a>
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