Google Apps ScriptCAUTION
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://mseep.ai/app/mohalmah-google-appscript-mcp-server)
[](https://smithery.ai/server/@mohalmah/google-appscript-mcp-server)
Author: mohalmah License: MIT License Repository: google-apps-script-mcp-server
Welcome to the Google Apps Script MCP (Model Context Protocol) Server! 🚀
This MCP server provides comprehensive integration with the Google Apps Script API, allowing you to manage script projects, deployments, versions, and executions through any MCP-compatible client like Claude Desktop, VS Code with Cline, or Postman.
📋 Table of Contents
- Overview
- Features
- Prerequisites
- Quick Start Guide
- Detailed Setup Instructions
- Available Tools
- Script Authorization
- MCP Client Configuration
- Troubleshooting
- Advanced Usage
🌟 Overview
This MCP server enables seamless interaction with Google Apps Script through:
- ✅ OAuth 2.0 Authentication - Secure token management with automatic refresh
- ✅ 16 Comprehensive Tools - Complete Google Apps Script API coverage
- ✅ MCP Protocol Compliance - Works with Claude Desktop, VS Code, and other MCP clients
- ✅ Secure Token Storage - OS-specific secure storage for refresh tokens
- ✅ Auto Token Refresh - Handles token expiration automatically
- ✅ Detailed Logging - Comprehensive error handling and debugging
🎥 Demo Video

9 read · 6 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
get_script_metrics | read | Get metrics data for Google Apps Script projects. |
list_script_processes | read | List information about a script\ |
script_processes_list | read | List processes for a Google Apps Script project. |
script_projects_create | write | Create a new Google Apps Script project. |
script_projects_deployments_create | write | Creates a deployment of an Apps Script project. |
script_projects_deployments_delete | destructive | Delete a deployment of an Apps Script project. |
script_projects_deployments_get | read | Get a deployment of an Apps Script project. |
script_projects_deployments_list | read | Lists the deployments of an Apps Script project. |
script_projects_deployments_update | write | Updates a deployment of an Apps Script project. |
script_projects_get | read | Get metadata of a Google Apps Script project. OAuth authentication is handled automatically. |
script_projects_get_content | read | Get the content of a Google Apps Script project. |
script_projects_versions_create | write | Creates a new version of a Google Apps Script project. |
script_projects_versions_get | read | Get a version of a Google Apps Script project. |
script_projects_versions_list | read | List the versions of a Google Apps Script project. |
script_run | write | Run a Google Apps Script. |
update_script_content | write | Updates the content of a specified Google Apps Script project. |
Trust audit
CAUTIONgrade B · trust 82/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (17)
console.log(`📁 Created token directory: ${this.tokenDir}`);console.log(`⏰ Access token expires in ${expiresIn} minutes`);script_projects_deployments_delete
console.log('✅ Got access token:', token.substring(0, 20) + '...');console.log(`📁 Token location: ${tokenInfo.location}`);console.log(`📁 Token location: ${tokenInfo.location}`);if (content.includes("import { getAuthHeaders } from '../../../lib/oauth-helper.js';")) {content = `import { getAuthHeaders } from '../../../lib/oauth-helper.js';\n\n${content}`;const loggerImport = `import { logger } from '../../../lib/logger.js';`;import { logger } from '../../../lib/logger.js';import { getAuthHeaders } from '../../../lib/oauth-helper.js';@modelcontextprotocol/sdk, commander, dotenv, express, googleapis, open
curl -X POST https://oauth2.googleapis.com/token \
demo/google app script mcp demo.gif
2. **Refresh token**: The refresh token allows long-term access - treat it like a password
3. **Access token expiry**: Access tokens typically expire after 1 hour
Gates applied: no_behavioural_pass, no_license.
ff4d9aeff4adfull audit observations/trust-audit/mcp-server/mohalmah__google-apps-script.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | ff4d9aeff4ad | CAUTION | B | 82 | first audit |
Questions
What tools does Google Apps Script expose?
16 in total: 9 read-only, 6 that write, and 1 that can delete or overwrite (script_projects_deployments_delete). Every one is listed on this page with its risk.
Is Google Apps Script safe to connect to an agent?
With care. The audit graded it B (82/100) and found 17 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Google Apps Script need?
It reads GOOGLE_APP_SCRIPT_API_API_KEY, GOOGLE_APP_SCRIPT_API_CLIENT_SECRET and GOOGLE_APP_SCRIPT_API_REFRESH_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Google Apps Script run?
It speaks sse and stdio, so it runs as a local process your client starts. It is published on npm as postman-mcp-generator-mcp at 1.0.0.
How current is this page?
The grade is for one exact copy of the source (ff4d9aeff4ad), read on 2026-10-08. The repository is watched and re-audited when it changes.