MCP Google Apps Script Server

Um servidor para integração perfeita com o Google Apps Script, permitindo automação e extensão de aplicativos do Google Workspace.

Documentação

Servidor MCP Google Apps Script

GitHub stars npm version License: MIT Node.js Version TypeScript MCP Protocol

🤖 + 📝 = ⚡

Deixe assistentes de IA criarem e gerenciarem projetos Google Apps Script para você

🚀 Início Rápido • 💡 Casos de Uso • 🛠️ Recursos • 📚 Documentação


🎯 Por que o MCP GAS Server?

O Problema

O Google Apps Script é poderoso para automatizar o Google Workspace, mas desenvolver projetos GAS tradicionalmente exige:

  • Alternar entre desenvolvimento local e o editor online
  • Copiar e colar código manualmente
  • Sem sistema de módulos adequado ou controle de versão
  • Ferramentas limitadas para testes e implantação

A Solução

O MCP GAS Server conecta assistentes de IA ao Google Apps Script, permitindo:

  • Desenvolvimento Orientado por IA: Diga ao Claude/Cursor o que construir, e ele cuida da implementação
  • Módulos CommonJS Completos: require(), module.exports, resolução automática de dependências - escreva GAS como Node.js
  • Execução Ad-hoc: Execute qualquer expressão JavaScript instantaneamente - sem implantação, sem funções wrapper necessárias
  • Pipeline de Implantação em Produção: fluxo dev → staging → prod com controle de versão, promoção e rollback
  • Interface Inspirada em Unix: Comandos familiares (cat, grep, ls, find, sed) para gerenciamento intuitivo de projetos GAS
  • Desenvolvimento Local: Escreva código localmente com suporte completo de IDE
  • Sincronização Automática: Sincronização bidirecional entre arquivos locais e a nuvem do Google
  • Integração com Git: Controle de versão para seus projetos GAS com merge seguro

Para Quem É Isso?

  • Desenvolvedores que querem que a IA cuide do código boilerplate do Google Apps Script
  • Equipes que automatizam fluxos de trabalho do Google Workspace
  • Não-programadores que precisam de funções personalizadas do Google Sheets ou automação
  • Qualquer pessoa cansada das limitações do editor de scripts online do Google

💡 Casos de Uso

O Que Você Pode Criar

  • 📊 Funções Personalizadas de Planilhas: Cálculos complexos, processamento de dados, integrações com APIs
  • 📧 Automação de E-mail: Processar Gmail, enviar e-mails em massa, gerenciar rascunhos
  • 📅 Gerenciamento de Calendário: Agendar eventos, sincronizar calendários, automatizar criação de reuniões
  • 🗂️ Automação do Drive: Organização de arquivos, sistemas de backup, geração de documentos
  • 📝 Processamento de Documentos: Gerar relatórios, mesclar documentos, extrair dados
  • 🔗 Integrações com APIs: Conectar o Google Workspace a serviços externos
  • 🤖 Chatbots e Complementos: Criar ferramentas personalizadas para Sheets, Docs e Forms

Exemplos Reais

// Tell your AI: "Create a function that fetches stock prices and updates my spreadsheet"
// AI will create, deploy, and test the entire solution

// Tell your AI: "Build an expense tracker that categorizes Gmail receipts"
// AI handles OAuth, Gmail API, and spreadsheet integration

// Tell your AI: "Make a custom menu in Sheets for data analysis tools"
// AI creates the UI, functions, and deploys everything

🚀 Início Rápido

⚡ Instalação em 30 Segundos

🎯 Totalmente Automatizado (Recomendado)

curl -fsSL https://raw.githubusercontent.com/whichguy/mcp_gas/main/install.sh | bash -s -- --auto

Este único comando: baixa → instala dependências → compila → configura todas as IDEs

— OU —

🔧 Instalação Manual

git clone https://github.com/whichguy/mcp_gas.git && cd mcp_gas && ./install.sh

Clone primeiro, depois execute o instalador com mais controle

Pré-requisitos

RequisitoPor que é NecessárioComo ObterVerificação Automática?
GitClona o repositórioBaixar✅ Sim
Node.js 18+Executa o servidor MCPBaixar✅ Sim
Conta GoogleAcessar o Google Apps ScriptCriar gratuitamente❌ Manual
Assistente de IAEnvia comandos ao servidorClaude, Cursor✅ Detectado

🎯 Primeiro Projeto em 2 Minutos

1️⃣

Instale (se ainda não tiver feito)

curl -fsSL https://raw.githubusercontent.com/whichguy/mcp_gas/main/install.sh | bash
2️⃣

Diga ao seu assistente de IA:

"Crie um projeto Google Apps Script que adiciona um menu personalizado ao Google Sheets com opções para destacar valores duplicados e remover linhas vazias"

3️⃣

A IA cuida de tudo:

  • ✅ Cria o projeto
  • ✅ Escreve o código
  • ✅ Configura o menu
  • ✅ Implanta no Google
  • ✅ Testa a funcionalidade

⚙️ Detalhes da Instalação

O Que o Instalador Faz

O script install.sh cuida de tudo automaticamente:

  1. 🔄 Baixa o Repositório (se usar curl)
  2. 📦 Instala Dependências (npm install)
  3. 🔨 Compila o Projeto (npm run build)
  4. 🔍 Detecta Suas IDEs (verifica mais de 10 IDEs)
  5. ⚙️ Configura Cada IDE (atualiza configurações do MCP)
  6. 🔗 Vincula ao dist/src/index.js (build de produção)

Recursos:

  • ✅ Idempotente - Seguro executar várias vezes
  • 💾 Cria Backups - Antes de qualquer modificação
  • 🔐 Verifica OAuth - Orienta você na configuração do Google

Opções de Linha de Comando

./install.sh --dry-run       # Preview changes without making them
./install.sh --interactive   # Choose which IDEs to configure
./install.sh --auto          # Non-interactive mode (for CI/CD)
./install.sh --force         # Update existing configurations
./install.sh --help          # Show detailed usage

Build Manual (Avançado)

Se o instalador falhar ou você precisar de configuração personalizada:

# 1. Clone repository
git clone https://github.com/whichguy/mcp_gas.git
cd mcp_gas

# 2. Install dependencies
npm install

# 3. Build the project
npm run build

# 4. Configure your IDE manually
# Point to: /absolute/path/to/mcp_gas/dist/src/index.js

Observação: O binário do servidor está em dist/src/index.js após a compilação, não no diretório de origem.

Desinstalação

# Remove MCP GAS from all IDEs
./uninstall.sh

# With cleanup options:
./uninstall.sh --cleanup-build      # Also remove dist/ and node_modules/
./uninstall.sh --cleanup-backups    # Remove all backup files
./uninstall.sh --dry-run           # Preview what would be removed

📋 Configuração do Google Cloud

Configuração Única

  1. Ative a API do Google Apps Script:

  2. Crie Credenciais OAuth 2.0:

    • Navegue até APIs & Services → Credenciais
    • Clique em "Criar Credenciais" → "ID do cliente OAuth"
    • Tipo de aplicativo: Aplicativo de desktop
    • Baixe o JSON e salve como oauth-config.json na raiz do projeto

🖥️ IDEs Suportadas

O MCP GAS Server funciona com qualquer cliente compatível com MCP:

IDE/EditorSuporte de PlataformaArquivo de ConfiguraçãoObservações
Claude DesktopmacOS, Windowsclaude_desktop_config.jsonAplicativo de desktop oficial da Anthropic
Claude CodemacOS, Linux~/.claude/settings.jsonEditor de código do Claude
Cursor IDETodas as plataformas~/.cursor/mcp.jsonIDE com tecnologia de IA
VS CodeTodas as plataformasmcp.json em globalStorageEditor da Microsoft
VS Code InsidersTodas as plataformasmcp.json em globalStorageVersão de pré-visualização
VSCodiumTodas as plataformasmcp.json em globalStorageVS Code de código aberto
Zed EditormacOS, Linux~/.config/zed/settings.jsonUsa a chave context_servers
Windsurf IDETodas as plataformas~/.codeium/windsurf/mcp_config.jsonIDE de IA da Codeium
Neovim MCPHubTodas as plataformas~/.config/mcphub/servers.jsonPlugin do Neovim
Codex CLITodas as plataformas~/.codex/config.tomlUsa formato TOML
Exemplos de Configuração Manual de IDE

Claude Desktop

{
  "mcpServers": {
    "gas": {
      "command": "node",
      "args": ["/absolute/path/to/mcp_gas/dist/src/index.js"],
      "env": {"NODE_ENV": "production"}
    }
  }
}

VS Code

{
  "mcpServers": {
    "gas": {
      "command": "node",
      "args": ["/absolute/path/to/mcp_gas/dist/src/index.js"],
      "env": {"NODE_ENV": "production"}
    }
  }
}

Zed Editor (usa context_servers)

{
  "context_servers": {
    "gas": {
      "command": {
        "path": "node",
        "args": ["/absolute/path/to/mcp_gas/dist/src/index.js"]
      }
    }
  }
}

Codex CLI (usa TOML)

[mcp_servers.gas]
command = "node"
args = ["/absolute/path/to/mcp_gas/dist/src/index.js"]

[[mcp_servers.gas.env]]
NODE_ENV = "production"

📦 O Que Está Incluído

🛠️ 50 Ferramentas Especializadas

📁 Gerenciamento de Arquivos

  • ls - Listar arquivos
  • cat - Ler arquivos
  • write - Escrever arquivos
  • rm - Excluir arquivos
  • mv - Mover arquivos
  • cp - Copiar arquivos
  • mkdir - Criar pastas

🔍 Pesquisa e Edição

  • grep - Pesquisar texto
  • find - Encontrar arquivos
  • ripgrep - Pesquisa rápida
  • sed - Localizar e substituir

⚡ Execução

  • run - Executar código
  • exec - Executar funções

🔀 Integração com Git

  • rsync - Sincronização sem estado (pull/push com dryrun)
  • git_feature - Gerenciamento de branches de recursos
  • config - Gerenciar pasta de sincronização

🚀 Implantação

  • deploy - Gerenciamento unificado de implantação (promover/rollback/status/redefinir)

📋 Projetos

  • project_create - Novo projeto
  • project_set - Definir atual
  • project_list - Listar todos

Ferramentas Inteligentes vs. Brutas

  • Ferramentas inteligentes (cat, write): Lidam automaticamente com o empacotamento de módulos CommonJS
  • Ferramentas brutas (raw_cat, raw_write): Preservam o conteúdo exato do arquivo
  • Escolha com base em se você quer gerenciamento automático de módulos ou controle total

🎓 Quando Usar o MCP GAS Server

✅ Perfeito Para

  • Projetos de Automação: Automação de Gmail, Calendar, Drive, Sheets
  • Funções Personalizadas: Fórmulas complexas de planilhas e processamento de dados
  • Integrações com APIs: Conectar o Google Workspace a serviços externos
  • Prototipagem Rápida: Provas de conceito rápidas e MVPs
  • Aprender GAS: Deixe a IA ensinar pelo exemplo

❌ Não Ideal Para

  • Aplicações Grandes: Considere App Engine ou Cloud Functions para aplicações complexas
  • Sistemas em Tempo Real: GAS tem limites de tempo de execução (6 minutos)
  • Computação Pesada: CPU/memória limitados em comparação com servidores dedicados
  • Dados Sensíveis: Avalie os requisitos de segurança cuidadosamente

🛠️ Recursos Avançados

Integração com Fluxo de Trabalho Git

// Set up .git/config breadcrumb file first
mcp__gas__write({
  scriptId: "...",
  path: ".git/config",
  content: JSON.stringify({ repository: "https://github.com/...", localPath: "~/my-project" })
})

// Stateless sync: preview then apply
mcp__gas__rsync({ operation: "pull", scriptId: "...", dryrun: true })
mcp__gas__rsync({ operation: "pull", scriptId: "..." })

// Standard git workflow works in sync folder
cd ~/gas-repos/project-xxx
git add . && git commit -m "Update" && git push

Sistema de Módulos

// Write modular code with CommonJS
const utils = require('./utils');
const api = require('./api/client');

function processData() {
  const data = api.fetchData();
  return utils.transform(data);
}

module.exports = { processData };

Exemplo de Primeiro Projeto

// Tell your AI assistant:
"Create a Google Apps Script project that calculates Fibonacci numbers"

// The AI will execute:
// 1. Authenticate
await mcp__gas__auth({ mode: "start" });

// 2. Create project
const project = await mcp__gas__project_create({ 
  title: "Fibonacci Calculator" 
});

// 3. Add code
await mcp__gas__write({
  scriptId: project.scriptId,
  path: "fibonacci",
  content: `
    function fibonacci(n) {
      if (n <= 1) return n;
      return fibonacci(n - 1) + fibonacci(n - 2);
    }
    
    function test() {
      Logger.log(fibonacci(10)); // 55
    }
    
    module.exports = { fibonacci };
  `
});

// 4. Execute
const result = await mcp__gas__run({
  scriptId: project.scriptId,
  js_statement: "require('fibonacci').fibonacci(10)"
});
// Returns: 55

📚 Referência Rápida de Comandos

Operações de Sistema de Arquivos (inspiradas em Unix)

// Read file contents (auto-unwraps CommonJS)
mcp__gas__cat({ scriptId: "...", path: "utils/helper" })

// List files matching pattern
mcp__gas__ls({ scriptId: "...", path: "utils/*" })

// ⚡ RECOMMENDED: High-performance multi-pattern search with ripgrep
mcp__gas__ripgrep({
  scriptId: "...",
  pattern: "function.*test",
  ignoreCase: true,
  context: 2
})

// Simple grep (use ripgrep for advanced searches)
mcp__gas__grep({ scriptId: "...", pattern: "function.*test", outputMode: "content" })

// Find files by name pattern
mcp__gas__find({ scriptId: "...", name: "*.test" })

// Find/replace with regex
mcp__gas__sed({
  scriptId: "...",
  pattern: "console\\.log",
  replacement: "Logger.log"
})

// ⚡ Advanced ripgrep features (STRONGLY RECOMMENDED over grep)
mcp__gas__ripgrep({
  scriptId: "...",
  pattern: "TODO|FIXME|HACK",  // Multi-pattern OR search
  ignoreCase: true,             // Case-insensitive
  sort: "path",                 // Alphabetical sorting
  trim: true,                   // Clean whitespace
  context: 2,                   // Show 2 lines of context
  showStats: true               // Performance statistics
})

Execução de Código Ad-hoc

// Execute mathematical expressions
mcp__gas__run({ scriptId: "...", js_statement: "Math.PI * 2" })

// Call Google Apps Script services
mcp__gas__run({
  scriptId: "...",
  js_statement: "DriveApp.getRootFolder().getName()"
})

// Execute project functions with CommonJS
mcp__gas__run({
  scriptId: "...",
  js_statement: "require('Calculator').fibonacci(10)"
})

// Complex data operations
mcp__gas__run({
  scriptId: "...",
  js_statement: `
    const data = require('API').fetchData();
    const sheet = SpreadsheetApp.create('Report');
    sheet.getActiveSheet().getRange(1,1,data.length,3).setValues(data);
    return sheet.getId();
  `
})

Desenvolvimento de Módulos CommonJS

// Write module with automatic CommonJS wrapping
mcp__gas__write({
  scriptId: "...",
  path: "Calculator",
  content: `
    function add(a, b) { return a + b; }
    function multiply(a, b) { return a * b; }
    module.exports = { add, multiply };
  `
})

// Use require() in other modules - automatic dependency resolution
mcp__gas__write({
  scriptId: "...",
  path: "Main",
  content: `
    const calc = require('Calculator');
    const result = calc.add(5, calc.multiply(2, 3));
    Logger.log(result);  // Logs: 11
  `
})

// Read shows clean user code (CommonJS wrapper removed)
mcp__gas__cat({ scriptId: "...", path: "Calculator" })
// Returns user code without _main() wrapper

Integração com Git

// Create .git/config breadcrumb file
mcp__gas__write({
  scriptId: "...",
  path: ".git/config",
  content: JSON.stringify({
    repository: "https://github.com/owner/repo.git",
    localPath: "~/my-projects/gas-app"
  })
})

// Stateless sync: preview then apply
mcp__gas__rsync({ operation: "pull", scriptId: "...", dryrun: true })
mcp__gas__rsync({ operation: "pull", scriptId: "..." })

// Manage sync folder configuration
mcp__gas__config({
  operation: "set",
  setting: "sync_folder",
  scriptId: "...",
  value: "~/my-projects/gas-app"
})

🔧 Solução de Problemas

Problemas Comuns

ProblemaSolução
"Não autenticado"Execute mcp__gas__auth({ mode: "start" }) no seu assistente de IA
"Script não encontrado"Verifique o scriptId no gas-config.json
"Módulo não encontrado"Garanta caminhos require() corretos e que o arquivo exista
"Cota excedida"Aguarde ou aumente as cotas do Google Cloud
"Permissão negada"Verifique os escopos OAuth e as permissões do projeto

Modo de Depuração

# Enable debug logging
DEBUG=mcp:* npm start

# Test installation without changes
./install.sh --dry-run

# Check configuration
cat ~/.claude/claude_desktop_config.json | jq '.mcpServers.gas'

📂 Estrutura do Projeto

mcp_gas/
├── src/                     # TypeScript source code
│   ├── tools/              # ~50 MCP tools
│   ├── auth/               # OAuth authentication
│   ├── api/                # Google Apps Script API client
│   └── server/             # MCP server implementation
├── dist/                    # Compiled JavaScript (after build)
├── test/                    # Test suites
├── docs/                    # Documentation
├── install.sh              # Automated installer
├── uninstall.sh            # Clean uninstaller
├── gas-config.json         # Project configuration
└── oauth-config.json       # OAuth credentials (create this)

🧪 Desenvolvimento

Configuração

# Clone and install
git clone https://github.com/whichguy/mcp_gas.git
cd mcp_gas
npm install

# Development mode with watch
npm run dev

# Build for production
npm run build

Testes

npm test                    # Run all tests
npm run test:unit          # Unit tests only
npm run test:integration   # Integration tests (requires auth)
npm run test:system        # System-level tests
npm run test:security      # Security validation

Arquitetura

O MCP GAS Server usa uma arquitetura em camadas:

  1. Camada de Protocolo MCP: Gerencia a comunicação com assistentes de IA
  2. Camada de Ferramentas: ~50 ferramentas especializadas para operações GAS
  3. Camada de Autenticação: Fluxo OAuth 2.0 PKCE com gerenciamento de tokens
  4. Camada de Cliente de API: Cliente da API v1 do Google Apps Script com limitação de taxa
  5. Camada de Sistema de Arquivos: Cache local e sincronização

📚 Documentação

Referência Completa de Ferramentas

  • docs/REFERENCE.md - Referência completa para todas as 63 ferramentas com capacidades, limitações e matriz de compatibilidade

Guias para Desenvolvedores

Esquemas Aprimorados de Ferramentas

Todas as ferramentas agora incluem:

  • Compatibilidade de Tipo de Script - Indicação clara de suporte standalone vs. vinculado a contêiner
  • Limitações - Restrições específicas, cotas e limitações de API
  • Referências entre Ferramentas - Pré-requisitos, próximos passos, alternativas e orientação de recuperação de erros
  • ⚡ Preferência de Ferramenta de Pesquisa - ripgrep é FORTEMENTE RECOMENDADO em vez de grep para todas as pesquisas (multi-padrão, case inteligente, controle de contexto, melhor desempenho)

🤝 Contribuindo

Aceitamos contribuições! Veja CONTRIBUTING.md para diretrizes.

📄 Licença

MIT - Consulte LICENSE para detalhes.

🙏 Agradecimentos

Construído com:


🌟 Pronto para turbinar seu desenvolvimento com Google Apps Script?


Get Started    Report Issue    Star on GitHub



Feito com ❤️ pela comunidade MCP GAS