authLABSCO SUMMARY
Ad-hoc execution is what makes the loop tight.
Running a statement directly against the project — Math.PI * 2, a DriveApp call, a function from your own module — means no deploy step between writing code and seeing whether it works. The smart-versus-raw split is the other design decision worth understanding: the default tools wrap and unwrap CommonJS for you, and the raw variants exist for when you need the file exactly as stored. One limit is worth knowing before you start: on a script bound to a Sheet or Doc, log cannot retrieve historical logs — run the code through exec instead, which returns the Logger output alongside the result.
What it is
An MCP server that puts Google Apps Script projects under an assistant's control. It brings three things the online editor does not have: a module system with require() and module.exports, execution of arbitrary JavaScript without deploying a wrapper function, and bidirectional sync with local files under git.
What you get
- Filesystem operations in familiar shapes —
ls,cat,write,rm,mv,cp,mkdir - Search and edit across a project: multi-pattern search with case control and context lines, plain search, filename matching, and regex find-and-replace —
ripgrep,grep,find,sed - Execution without a deployment step: run a JavaScript statement against the project, including calls into Google services and into your own modules —
run,exec - Smart tools that handle CommonJS wrapping automatically, with raw counterparts that preserve exact file content —
catandwriteversusraw_catandraw_write - Project handling and a deployment path covering promote, rollback, status and reset —
project_create,project_set,project_list,deploy - Git integration: stateless pull and push with a dry-run mode, feature branch management, and a sync folder you can point at a local repository —
rsync,git_feature,config - OAuth handling as a tool call rather than a setup ritual —
auth
Requirements
A Google account, the Google Apps Script API enabled in a Cloud project, and OAuth 2.0 credentials of type Desktop app saved as oauth-config.json in the project root. Node.js 18 or newer and git. Run from inside a clone of the repository, the installer script ./install.sh installs, builds and configures detected IDEs — it is idempotent, backs up configs first, and has dry-run, interactive, auto and force modes. After building, the server binary is at dist/src/index.js, not in the source directory. The package is gas-server (1.0.0 in package.json).
Setup effort
Build from source — git clone https://github.com/whichguy/gas_mcp.git
USE CASES
Building a Sheets add-on by describing it
Create the project, write the modules, then execute the entry point directly to see the result before any deployment.
Finding your way around an inherited script
List the files, search across them with context lines, and read the ones that matter with the CommonJS wrapper stripped out.
Putting an Apps Script project under version control
Set the sync folder, preview the pull with a dry run, then apply it and commit from the local repository as normal.
Refactoring across a whole project
Find every occurrence with a multi-pattern search, then rewrite them with a regex replacement instead of file by file.
Promoting a change and backing it out if needed
Use the deployment tool to promote a version, check its status, and roll back when something breaks.
56 tools
Listed in project docs. Your client may show a different list.
catwritelsrmmvcpreorderraw_catraw_writeraw_cpeditaiderfile_statuscache_clearfindraw_findgrepraw_grepripgrepraw_ripgrepsedraw_seddepsexecexec_apilogprocess_listdeploydeploy_configversion_createversion_getversion_listdeploy_createdeploy_listdeploy_get_detailsdeploy_deletedeploy_updatetriggerrsyncgit_featureconfigpullpushstatusproject_createproject_initproject_metricsproject_setproject_getproject_addproject_listfind_drive_scriptbind_scriptcreate_scriptsheet_sqlBEFORE YOU INSTALL
What to know first
Tools you get
56 tools named in the project's documentation.
Where it runs
All 3 documented clients run the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
1. Clone repository
git clone https://github.com/whichguy/gas_mcp.git
cd gas_mcp2. Install dependencies
npm install3. Build the project
npm run buildMCP Clients
Claude Desktop
{
"mcpServers": {
"gas": {
"command": "node",
"args": [
"<YOUR_PATH_TO_GAS_MCP>/dist/src/index.js"
],
"env": {
"NODE_ENV": "production"
}
}
}
}VS Code
{
"servers": {
"gas": {
"command": "node",
"args": [
"<YOUR_PATH_TO_GAS_MCP>/dist/src/index.js"
],
"env": {
"NODE_ENV": "production"
}
}
}
}Zed
{
"context_servers": {
"gas": {
"command": {
"path": "node",
"args": [
"<YOUR_PATH_TO_GAS_MCP>/dist/src/index.js"
]
}
}
}
}