Skip to main content
Glama

GAS MCP

Lass deinen KI-Assistenten direkt deine Google Apps Script-Projekte lesen und schreiben

Eine Codezeile ändern, eine Version erstellen, neu bereitstellen, herausfinden, warum der Trigger von gestern fehlgeschlagen ist – einfach sagen, was du brauchst.

Deploy to Cloudflare

📖 Vollständige Installationsanleitung (für Nicht-Entwickler)🔧 Fehlerbehebung


Was ist das?

Ein Remote-MCP-Server, der auf Cloudflare Workers bereitgestellt wird. Du stellst deine eigene Instanz bereit und autorisierst mit deinem eigenen Google-Konto. Die Daten fließen nur zwischen deinem Google-Konto und deinem Worker – ohne Umweg über Dritte.

你:「出缺席統計那支腳本,昨天的每日觸發器為什麼失敗?」

AI:共 12 筆執行紀錄,其中 3 筆失敗:
    - dailyReport|TIME_DRIVEN|FAILED|2026-08-20 07:00,耗時 4.2s
    ...
    我看了 Code.gs 第 17 行,getRange 的列數是從空白試算表算出來的,
    所以在資料還沒進來時會是 0。要我改成先檢查 lastRow 嗎?

Was kann es?

Tool

Beschreibung

list_projects

Listet deine eigenständigen Skriptprojekte und scriptIds auf (gebundene Skripte werden nicht angezeigt, siehe unten)

get_project

Projektinformationen: Titel, Ersteller, ob es sich um ein containergebundenes Skript handelt

list_files

Listet Dateien und Zeilenzahlen im Projekt auf (ohne Quellcode, spart Kontext)

read_file

Liest den vollständigen Quellcode einer einzelnen Datei

write_file

Erstellt oder überschreibt Dateien (erstellt vor dem Schreiben automatisch einen Wiederherstellungspunkt)

delete_file

Löscht Dateien (erstellt ebenfalls automatisch einen Wiederherstellungspunkt; verweigert das Löschen des Manifests)

create_project

Erstellt eigenständige oder containergebundene Skripte

list_versions / create_version

Versions-Snapshots, die als Wiederherstellungspunkte und als Grundlage für Bereitstellungen dienen

list_deployments / create_deployment / update_deployment

Bereitstellungsverwaltung

get_metrics

Ausführungsanzahl, Fehleranzahl, aktive Nutzer

list_executions

Ausführungsprotokolle und Fehlerursachen – das wichtigste Werkzeug zur Trigger-Analyse

run_function

Führt Funktionen remote aus – standardmäßig deaktiviert, siehe Hinweis unten

Zeiten werden immer in**Taipeh-Zeit (UTC+8)**angezeigt.

Drei Dinge, die du vorher wissen solltest

Eins: Containergebundene Skripte werden nicht aufgelistet, sind aber vollständig bedienbar. Skripte, die in Tabellenkalkulationen/Dokumenten/Formularen/Präsentationen eingebettet sind (also die, die du über „Erweiterungen → Apps Script" öffnest), können nicht über Google Drive aufgelistet werden – das ist eine Plattformbeschränkung von Google, kein Fehler dieses Projekts. Wenn deine Skripte größtenteils zu dieser Kategorie gehören, gibt list_projects eine leere Liste zurück.

Die Lösung: Gib einfach die scriptId direkt an – alle übrigen 14 Tools funktionieren normal weiter:

到 https://script.google.com/home/all 點開專案,
網址 .../projects/<這一長串>/edit 就是 scriptId

或:容器檔案 → 擴充功能 → Apps Script → 專案設定 → 複製指令碼 ID

Sag der KI „Schau dir die scriptId 1Ge-MUVs... dieses Skripts an, die Datei Code.gs" und es kann direkt loslegen.

Zwei: Dieses Projekt hat schreibgeschützten Zugriff auf Google Drive. Die Apps Script API bietet keine Methode zum „Auflisten aller meiner Skriptprojekte" (offizielles Issue). Der einzige Weg führt über Google Drive mit einer Abfrage nach Dateityp. Deshalb beantragt dieses Projekt drive.metadata.readonly – das ist der minimalste Umfang, der dieses Ziel erreicht: Es können nur Dateinamen und IDs gelesen werden, keinerlei Dateiinhalte, und es können keine Drive-Dateien erstellt, geändert oder gelöscht werden.

Drei: Schreiben überschreibt das gesamte Paket, daher gibt es immer ein Backup. updateContent der Apps Script API ersetzt das gesamte Projekt durch die von dir gesendete Dateiliste – Dateien, die nicht enthalten sind, verschwinden einfach. write_file verwendet daher den Ablauf „vollständige Liste lesen → Versions-Wiederherstellungspunkt erstellen → zusammenführen → gesamtes Paket zurücksenden", und wenn das Backup fehlschlägt, wird der Schreibvorgang abgebrochen: Lieber nicht schreiben, als ohne Rückzugsmöglichkeit zu überschreiben. Jede Schreibantwort teilt dir mit, welche Versionsnummer der Wiederherstellungspunkt ist.

Über run_function (standardmäßig deaktiviert)

Die Hürden für die Remote-Ausführung von GAS-Funktionen sind höher als bei allen anderen Funktionen, und es bedeutet, dass die KI direkt Code ausführen kann. Daher ist es standardmäßig nicht registriert. Um es zu aktivieren, hake es in /setup an und erfülle drei Bedingungen – fehlt eine, gibt es 403:

  1. Das Skript muss im Editor über „Bereitstellen → Neue Bereitstellung → Ausführbare API" bereitgestellt werden.

  2. Das Google Cloud-Projekt des Skripts muss dasselbe sein wie das, das dieser Server verwendet.

  3. Das autorisierte Token muss jeden Scope abdecken, der in appsscript.json des Skripts deklariert ist – das kann nicht automatisch abgeleitet werden, du musst es in /setup Zeile für Zeile einfügen.

Welche KI-Assistenten werden unterstützt?

Dies ist ein Standard-MCP-Server (Streamable HTTP + OAuth 2.1), nicht an einen bestimmten Anbieter gebunden:

Assistent

So verbindest du

Claude

Settings → Connectors → Add custom connector

Claude Code

claude mcp add --transport http gas <deine-URL>/mcp

Gemini Spark

Einstellungen → Connected Apps → Custom apps for Spark

ChatGPT

Developer mode → Connectors

Cursor / VS Code / Windsurf / Zed

In den jeweiligen MCP-Einstellungen die URL eintragen

Installation

Klicke oben auf den Button „Deploy to Cloudflare" und folge dann der vollständigen Installationsanleitung – dauert etwa 20 Minuten.

1. 點部署按鈕                → 得到你的專屬網址
2. 開啟 Apps Script API 存取  → 一個開關,但最常被忘記
3. 在 Google Cloud 開權限     → 步驟最多的一段
4. 打開 <你的網址>/setup      → 貼上憑證、設管理密碼
5. 把 <你的網址>/mcp 貼進 AI 助理 → 完成

Warum selbst bereitstellen statt gemeinsam nutzen?

Skriptprojektinhalte fallen in den sensiblen Berechtigungsbereich von Google. Um einen öffentlich gemeinsam genutzten Dienst anzubieten, muss der Entwickler die OAuth-Prüfung von Google und die CASA-Jahressicherheitsbewertung bestehen – das ist kostspielig, und der Code aller Nutzer würde über denselben fremden Server laufen.

Wenn jeder seine eigene Instanz aufsetzt: keine Prüfung nötig, Daten bleiben nur bei dir, und es gibt auch kein 100-Nutzer-Limit. Der Preis ist eine einmalige Einrichtung von etwa 20 Minuten – danach musst du dich nie wieder darum kümmern.

Sicherheitsdesign

  • Verschlüsselte Speicherung von Anmeldedaten: Der Google-Refresh-Token wird von @cloudflare/workers-oauth-provider verschlüsselt in deinem eigenen Cloudflare-KV gespeichert und an keinen Dritten weitergegeben

  • Besitzer-Sperre: Das erste Google-Konto, das die Autorisierung abschließt, wird gebunden; andere können selbst mit der URL nicht darauf zugreifen

  • Backup vor jedem Schreibvorgang: Jeder write_file / delete_file erstellt automatisch einen Versions-Wiederherstellungspunkt; schlägt das Backup fehl, wird abgebrochen

  • Ausführung muss explizit aktiviert werden: run_function ist standardmäßig nicht registriert und in tools/list gar nicht sichtbar

  • Minimale Berechtigungen: Es werden nur die tatsächlich benötigten Scopes beantragt; für Drive reicht schreibgeschützte Metadaten

  • Keine Spuren hinterlassen: Code wird sofort abgerufen und nach der Nutzung verworfen, ohne Schreiben in Datenbanken oder Protokolldateien

Vollständige Details findest du nach der Bereitstellung unter <deine-URL>/privacy.

Für Entwickler

npm install
npm test          # 87 個測試
npm run typecheck
npx wrangler dev

Technische Details

  • Transportschicht: Streamable HTTP, Endpunkt /mcp

  • Protokollversion: Unterstützt gleichzeitig 2025-era-Clients (initialize-Handshake) und 2026-07-28 (stateless), automatisch über den Legacy-Fallback von @modelcontextprotocol/server v2

  • Autorisierung: Derselbe Worker ist sowohl OAuth-2.1-Authorization-Server für MCP-Clients als auch OAuth-Client gegenüber Google. Unterstützt DCR, PKCE S256, RFC 9728 Resource-Metadaten, RFC 9207 iss

Projektstruktur

src/
├── index.ts          OAuthProvider 組裝(Worker 進入點)
├── auth-handler.ts   /authorize、Google callback、首頁與法律頁路由
├── setup-page.ts     /setup 設定精靈(含遠端執行開關)
├── legal-pages.ts    隱私權政策與服務條款
├── config.ts         設定儲存與管理密碼
├── state.ts          HMAC 簽章的 OAuth state
├── errors.ts         Google API 錯誤 → 可行動的中文訊息
├── google/
│   ├── oauth.ts      Google OAuth 與動態 scope 組合
│   ├── apps-script.ts  script.googleapis.com REST client
│   └── drive.ts      Drive API(只用來列出腳本專案)
└── mcp/
    ├── handler.ts    MCP handler 與每請求的 server 工廠
    ├── tools-read.ts 唯讀工具
    ├── tools-write.ts 寫入工具(含備份邏輯)
    ├── tools-run.ts  run_function(僅在啟用時註冊)
    ├── shared.ts     工具回傳值與錯誤包裝
    └── datetime.ts   台北時區換算

Lizenzbedingungen

MIT


-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Search and discover Google Apps Script libraries with AI-generated summaries

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Give AI agents access to form submissions — read, search, update, and process file attachments.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FW1201/gas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server