Node.js を用いて、MCP (Model Context Protocol) クライアント(例: Claude Desktop)と GAS Interpreter(Google Apps Script 側)を接続するブリッジサーバーです。
bridge.mjs
内で @modelcontextprotocol/sdk の MCP サーバーを起動し、GAS のWebエンドポイントへ HTTP POST する機能を提供します。
構成概要
claude-gas-bridge/
├─ bridge.mjs # メインのMCPサーバーコード
├─ package.json
├─ package-lock.json
└─ ... (その他ファイル)
bridge.mjs
MCPサーバー本体。execute-gas
というツールを定義し、クライアントから受け取ったGASスクリプトを指定の WebApp(Apps Script)エンドポイントへ転送します。
ツール呼び出し時、タイトル・スクリプト本文・APIキーを JSON で送信する形です。
必要環境
- Node.js 18 以上
@modelcontextprotocol/sdk
が Node 18 以降を推奨しています
- GAS Interpreter のデプロイ済み
Google Apps Script で GAS Interpreter を正しくデプロイし、ウェブアプリのURLを取得しておく
- (オプション)Claude Desktop 等、MCP クライアント
セットアップ
-
ソースを取得
git clone <このリポジトリのURL>
cd claude-gas-bridge
-
依存パッケージをインストール
npm install
※ Yarn でも可
-
GASのデプロイURLを設定
bridge.mjs
内の GAS_ENDPOINT
を、実際のApps ScriptのURLに書き換える。
例:
const GAS_ENDPOINT = "https://script.google.com/macros/s/AKfycbxxxxx/exec";
-
Node.js でサーバー起動
node bridge.mjs
コンソールに "Bridge server started (Stdio). Waiting for requests..."
と表示されたら待機状態となり、MCPクライアントからの呼び出しを受け付けます。
Claude Desktop との連携 (例)
もし Claude Desktop で利用する場合、claude_desktop_config.json
に以下のように設定します:
{
"mcpServers": {
"gas-bridge": {
"command": "node",
"args": [
"/絶対パス/claude-gas-bridge/bridge.mjs"
]
}
}
}
- Claude Desktop を再起動
- チャット画面下部のツール一覧(ハンマーアイコン)で
execute-gas
が見えるはずです
- 「ChatGPT を通じて GASスクリプトを実行したい」などの指示をすると、
bridge.mjs
がリクエストを受け、GAS Interpreterに転送します
APIキーの管理について
- GAS Interpreter 側が API キーを要求する場合は、ツール呼び出し時に
"apiKey": "..."
を指定するか、bridge.mjs
内部で環境変数を参照して埋め込むなど適宜調整してください。