mcpField
G
Google Apps Script MCP

Google Apps Script MCP

本地服务
github.com开发工具0今天更新

关于 Google Apps Script MCP

Google Apps Script MCP 是面向 AI 应用的 Google Apps Script 项目管理服务,可用自然语言读写脚本、管理版本与部署并运行函数。它区分可编辑的 HEAD 与不可变版本,并呈现 API 的操作限制。

主要功能

  1. 01创建独立或绑定脚本项目
  2. 02读取与更新代码文件
  3. 03创建不可变版本快照
  4. 04管理部署并切换版本
  5. 05运行函数并查看执行记录
  6. 06查询执行指标

适用场景

  1. 01检查脚本文件及近期失败记录
  2. 02仅修改指定文件并保留其余内容
  3. 03部署版本或回退到先前版本
  4. 04运行函数并查看结果

MCP 相关

作为 MCP 服务,它向 MCP 客户端提供 Google Apps Script 项目、代码、版本、部署、执行记录与指标相关工具。通过 Google Apps Script API 和 OAuth 访问 Google 账号。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"a1-x-tech-mcp-google-apps-script": {
"command": "npx",
"args": [
"-y",
"mcp-google-apps-script"
],
"env": {
"GOOGLE_APPS_SCRIPT_CLIENT_ID": "<GOOGLE_APPS_SCRIPT_CLIENT_ID>",
"GOOGLE_APPS_SCRIPT_CLIENT_SECRET": "<GOOGLE_APPS_SCRIPT_CLIENT_SECRET>",
"GOOGLE_APPS_SCRIPT_REFRESH_TOKEN": "<GOOGLE_APPS_SCRIPT_REFRESH_TOKEN>",
"GOOGLE_APPS_SCRIPT_ACCESS_TOKEN": "<GOOGLE_APPS_SCRIPT_ACCESS_TOKEN>",
"GOOGLE_APPS_SCRIPT_OAUTH_PORT": "<GOOGLE_APPS_SCRIPT_OAUTH_PORT>",
"GOOGLE_APPS_SCRIPT_API_BASE": "<GOOGLE_APPS_SCRIPT_API_BASE>",
"GOOGLE_APPS_SCRIPT_TIMEOUT_MS": "<GOOGLE_APPS_SCRIPT_TIMEOUT_MS>",
"GOOGLE_APPS_SCRIPT_MAX_RETRIES": "<GOOGLE_APPS_SCRIPT_MAX_RETRIES>"
}
}
}
}
启动命令npx -y mcp-google-apps-script
需要配置的环境变量
GOOGLE_APPS_SCRIPT_CLIENT_IDGoogle OAuth2 client id (refresh-token flow).
GOOGLE_APPS_SCRIPT_CLIENT_SECRET密钥Google OAuth2 client secret (refresh-token flow). Treat it as a secret.
GOOGLE_APPS_SCRIPT_REFRESH_TOKEN密钥Google OAuth2 refresh token, exchanged for access tokens automatically. Treat it as a secret.
GOOGLE_APPS_SCRIPT_ACCESS_TOKEN密钥Static OAuth2 access token (~1h lifetime) — alternative to the refresh-token trio, mostly for testing.
GOOGLE_APPS_SCRIPT_OAUTH_PORT密钥Fixed port for the loopback listener of the in-chat login (127.0.0.1 + PKCE). Set it when the client runs over SSH port forwarding; otherwise a free port is picked per login.
GOOGLE_APPS_SCRIPT_API_BASEAPI root override.
GOOGLE_APPS_SCRIPT_TIMEOUT_MSPer-request timeout in milliseconds.
GOOGLE_APPS_SCRIPT_MAX_RETRIESRetries on transient errors (429 always; 5xx/network for reads).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-google-apps-script1.1.1

工具

18

收录的工具列表 · 更新于 今天

此工具无需参数。

详细介绍

A1 Google Apps Script MCP

中文 | Русский

npm Glama CI License: MIT

A1 Google Apps Script MCP 让 AI 应用能够通过自然语言编写和操作 Google Apps Script。创建脚本项目、读取和编辑代码、创建版本快照、管理部署、运行函数并查看执行历史。

它通过你的 Google 账号使用 Google Apps Script API。它区分可编辑的 HEAD 代码与不可变版本,并明确说明 Apps Script API 的限制,而不会暗示所有脚本任务都能完成。

  • 19 个工具。 创建独立项目和绑定项目、读取和更新代码文件、创建不可变版本快照、管理部署、运行函数,以及检查执行历史和指标。
  • 直接在对话中连接。 说“连接 Google Apps Script”:服务会引导你设置 OAuth 客户端,使用 PKCE 捕获 Google 重定向到 127.0.0.1 的请求,并自行保管令牌——无需配置文件,也无需重启。
  • 版本不可变。 版本会对 HEAD 创建快照,且永远无法编辑或删除;部署指向版本,因此你可以发布和回滚,而无需更改 URL。
  • 清单始终保留。 合并模式会保留 appsscript 清单和所有未提及的文件;替换模式会在任何网络请求发出前,拒绝不包含清单的文件集。
  • 保留你的 scriptId。 API 无法列出项目,也无法删除项目——create_project 返回的 scriptId 是唯一的标识。
  • 尽量精简 Google 权限范围。 每项操作都会注明自己的权限范围(script.projects、script.deployments、script.processes、script.metrics);只请求任务所需的权限。

从只读问题开始:

显示我的 report 脚本中的文件,以及本周执行失败的函数。

连接服务 · 探索使用场景 · 查看技术文档


一分钟了解它的工作方式

你: 显示我的 report 脚本代码和最近的运行记录。

助手: 显示所有文件及其源代码和执行历史记录——运行过哪些函数、运行时间,以及哪些函数运行失败。一切都不会改变。

你: 在 Utils 文件中添加一个 formatDate 辅助函数,其他内容保持不变。

助手: 显示拟议的源代码,并确认合并模式不会改动其他文件,然后在写入前请求确认。

你: 确认。

助手: 将文件写入 HEAD。除非你另行提出要求,否则不会创建版本、重新部署或运行任何内容。

目录

快速开始

你需要 Node.js 20+ 和一个 Google 账号。安装时无需凭据——服务会在对话过程中连接。

  1. 将服务添加到 AI 应用中。
  2. 说“连接 Google Apps Script”:助手会引导你创建 OAuth 客户端并批准访问,无需编辑配置文件。
  3. 提出上面那个只读问题。
Codex

**在应用中:**打开 Settings → MCP servers,选择 Add server,选择 STDIO,输入命令 npx -y mcp-google-apps-script@latest 和环境变量 GOOGLE_APPS_SCRIPT_CLIENT_ID、GOOGLE_APPS_SCRIPT_CLIENT_SECRET、GOOGLE_APPS_SCRIPT_REFRESH_TOKEN,然后选择 Save 和 Restart。

从命令行:

codex mcp add google-apps-script \
  -- npx -y mcp-google-apps-script@latest
codex mcp list

Codex MCP 文档

Claude Code
claude mcp add \
  --transport stdio --scope user google-apps-script \
  -- npx -y mcp-google-apps-script@latest
claude mcp list

Claude Code MCP 文档

Claude Desktop

当前的官方路径是 Settings → Extensions。要安装自定义桌面扩展,请打开 Advanced settings → Extension Developer → Install Extension…,选择 .mcpb 文件并按提示操作。

此仓库目前发布的是 npm stdio 包,不包含 .mcpb 捆绑包。对于仍支持本地配置的 Claude Desktop 版本,可使用以下 JSON stdio 配置作为备用方案:

{
  "mcpServers": {
    "google-apps-script": {
      "command": "npx",
      "args": ["-y", "mcp-google-apps-script@latest"]
    }
  }
}

在这些版本中,请在 macOS 上将其保存到 ~/Library/Application Support/Claude/claude_desktop_config.json,或在 Windows 上保存到 %APPDATA%\Claude\claude_desktop_config.json。

Claude Desktop MCP 文档

Cursor

在 macOS/Linux 上将以下内容添加到 ~/.cursor/mcp.json,或在 Windows 上添加到 %USERPROFILE%\.cursor\mcp.json:

{
  "mcpServers": {
    "google-apps-script": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-apps-script@latest"]
    }
  }
}

Cursor MCP 文档

VS Code

运行 MCP: Open User Configuration 并添加:

{
  "servers": {
    "google-apps-script": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-apps-script@latest"]
    }
  }
}

使用 MCP: List Servers 检查。

VS Code MCP 文档

可以让它做什么

检查项目及其运行情况
  • 显示此脚本的文件,并解释每个函数的作用。
  • 本周哪些函数执行失败了?显示 sendDigest 的执行历史。
  • 过去 7 天内,此脚本有多少用户、执行次数和失败次数?
编写和迭代代码
  • 创建独立项目,或创建绑定到 Doc、Sheet、Slides 或 Form 的脚本。
  • 在一个文件中添加辅助函数,不改动其他文件。
  • 重构前,将当前代码快照保存为一个带说明的版本。
部署、运行和回滚
  • 部署版本 4 并显示其入口点——Web 应用 URL 或 API 可执行配置。
  • 运行 sendDigest 并显示结果;如果脚本抛出异常,则显示堆栈跟踪。
  • 将部署重新指向版本 3,同时不更改其 URL。

项目如何变更

  1. create_project 会创建一个项目——可以是独立项目,也可以绑定到 Doc、Sheet、Slides 或 Form。请保留返回的 scriptId:API 无法列出项目。
  2. 代码以文件形式存放在 HEAD 中,文件按名称(不带扩展名)寻址。默认情况下,update_project_content 会合并内容——更新或新增你指定的文件,并保留其余文件——只有在明确要求时才会替换整个文件集;appsscript 清单永远无法删除。
  3. create_version 会将 HEAD 快照保存为不可变版本——无法编辑或删除,版本号只会递增。
  4. 部署会将某个版本作为 Web 应用或 API 可执行文件对外提供。更新部署会将其指向另一个版本,而不会更改其 URL;自动生成的 @HEAD 部署无法删除。

API 也无法删除项目——这意味着需要删除其 Drive 文件,而本服务不支持此操作。run_function 需要 API 可执行部署、与脚本属于同一 Cloud 项目的 OAuth 客户端,以及令牌中包含脚本自身所需的作用域;Apps Script 会在 6 分钟后停止任何执行。执行历史会显示状态和耗时,但不会显示错误消息——错误消息可在 Cloud Logging 中查看,也可以通过重新运行函数来获取。

可以进行哪些变更

操作发生的情况确认边界
读取项目、代码、版本、运行记录或指标读取数据无变更
创建项目添加独立或绑定的脚本项目更改 Google Apps Script
更新项目文件覆盖 HEAD 中的代码;替换模式会更换整个文件集更改项目
创建版本添加永远无法移除的不可变快照更改项目
创建或更新部署更改在线 URL 或 API 端点提供的内容更改项目的在线行为
删除部署永久导致部署 URL 失效具有破坏性
运行函数执行具有实际副作用的真实代码具有破坏性
原始 API 请求可调用没有专用工具的 API 方法可能具有破坏性

AI 客户端控制确认提示。服务会标记读取、写入和具有破坏性的工具,让客户端能够区分检查操作与在线变更。

获取访问权限

Google Apps Script 需要 OAuth 2.0;仅有 API 密钥并不足够。有两种接入方式,第一种无需配置文件。

在聊天中连接(推荐)

说“连接 Google Apps Script”,助手就会带你完成整个流程:

  1. setup_instructions 会打印检查清单:创建或选择 Google Cloud 项目、启用 Apps Script API、配置同意屏幕并创建 Desktop app OAuth 客户端。
  2. 下载该客户端的 JSON(“Download JSON”),并将其路径提供给助手——set_client 会以仅所有者可访问的权限保存文件。密钥不会经过对话。
  3. start_login 会返回 Google 授权链接。在这台机器上打开链接并批准;授权码会通过 PKCE 返回到监听一次请求的 127.0.0.1 服务,不会经过聊天。
  4. finish_login 会交换授权码,并将令牌保存到 ~/.config/mcp-google-apps-script/credentials.json(权限模式为 0600);随后通过实际调用 Apps Script API 验证令牌——因此如果 API 仍处于关闭状态,此时就会发现问题。

每次调用时都会重新读取令牌,因此连接会立即生效——无需重启 AI 应用。auth_status 会显示已连接的内容,logout 会撤销并删除连接。

环境变量(CI、无人值守安装)
  1. 创建或选择一个 Google Cloud 项目,并启用 Google Apps Script API。

  2. 在 script.google.com/home/usersettings 中开启每个账号的开关——否则每次调用都会失败并返回 403。

  3. 配置 OAuth 同意屏幕,并创建 桌面应用 OAuth 客户端。

  4. 授权拥有这些脚本的 Google 账号。启用 Use your own OAuth credentials 后,可通过 OAuth 2.0 Playground 获取刷新令牌。

  5. 请求你计划使用的工具所需的范围:

    https://www.googleapis.com/auth/script.projects
    https://www.googleapis.com/auth/script.deployments
    https://www.googleapis.com/auth/script.processes
    https://www.googleapis.com/auth/script.metrics
    

    若只用于检查,请将前两个范围替换为只读版本 script.projects.readonly 和 script.deployments.readonly;list_processes 和 get_project_metrics 仍需要 script.processes 和 script.metrics,它们没有更窄的范围。run_function 不需要这些范围——相反,令牌必须包含目标脚本自身使用的所有范围,且 OAuth 客户端必须属于与该脚本相同的 Cloud 项目。

测试模式下的 OAuth 刷新令牌可能会在 7 天后过期。若需要长期访问,请发布 OAuth 应用,或在 Workspace 域中使用内部应用。请将客户端密钥和刷新令牌视为密码。

即使尚未配置凭据,setup_instructions 工具也会返回同一份检查清单并正常工作。

配置

所有变量均为可选项——即使一个都不设置,服务也会通过聊天连接。

变量必需说明
GOOGLE_APPS_SCRIPT_CLIENT_ID否*OAuth 客户端 ID。
GOOGLE_APPS_SCRIPT_CLIENT_SECRET否*OAuth 客户端密钥。
GOOGLE_APPS_SCRIPT_REFRESH_TOKEN否*OAuth 刷新令牌。
GOOGLE_APPS_SCRIPT_ACCESS_TOKEN否*OAuth 三项凭据的短期替代方案。
GOOGLE_APPS_SCRIPT_OAUTH_PORT否用于聊天内登录的固定回环端口;通过 SSH 端口转发时很有用。
GOOGLE_APPS_SCRIPT_API_BASE否Google Apps Script API 基础 URL 覆盖值。
GOOGLE_APPS_SCRIPT_TIMEOUT_MS否单次请求超时时间;默认值为 60000 ms。
GOOGLE_APPS_SCRIPT_MAX_RETRIES否临时错误重试次数;默认值为 3。

* 请提供 OAuth 三项凭据或访问令牌。

数据、限制与后台工作

  • 请求会发送到 Google Apps Script。 本地服务会刷新 Google OAuth 令牌并调用 Apps Script API。其匿名遥测包含安装 ID、软件包版本、AI 客户端和平台版本,以及工具名称——绝不包含 OAuth 令牌、脚本源代码、工具参数或提示词。设置 ASKADS_TELEMETRY=0 即可选择退出。
  • 写入操作绝不会盲目重放。 遇到 429 时,服务会采用退避策略;读取操作在网络错误和 5xx 错误后也会重试,而写入操作在结果不确定的故障后不会重放——重复调用 create_version 会不断累积不可变版本,重复调用 run_function 则会将副作用执行两次。遇到结果不明确的故障后,请检查 list_versions 或执行历史记录,而不是重新发送请求。
  • 没有后台轮询。 服务仅在被调用时运行,函数也仅在你要求时执行。脚本会在 Google 端保留自己的 Apps Script 触发器;如果你的 AI 应用支持计划任务,也可以定期检查执行历史记录。

技术文档

支持

发现了 Bug 或需要某个场景支持?创建 issue 或在 Telegram 中留言。


两只莫娜击掌

你已经读到最后了!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。