Google Workspace を LLM から読み書きする自作 MCP サーバー「google-mcp-server」
Google Calendar / Drive / Gmail / Sheets / Docs / Slides を、Claude などの MCP クライアントから読み書きできる自作の MCP サーバー google-mcp-server を紹介します。
Go の単一バイナリで、Homebrew からインストールできます。
brew tap ngs/tap
brew install google-mcp-serverモチベーション
昨年から自分用に作って使っていたものですが、最近、とあるプロジェクトで本格的に使う場面がありました。
プロジェクト内で共有する Google スプレッドシートを TODO 管理表にして、人間と LLM の両方が読み書きする運用にしたかったのです。
まず claude.ai の Google Drive コネクタを試しましたが、スプレッドシートの読み取りはできても、セル単位の書き込みができませんでした。
Google 公式の Sheets MCP API も検討しましたが、Developer Preview 段階で対象は Sheets のみ、自分の環境ではすぐに使える状態ではありませんでした。
そこで自作の google-mcp-server を実戦投入したところ、診断ログが標準出力に混ざって JSON-RPC ストリームを壊す不具合などをいくつか踏んだので、その場で修正して v0.5.0 までリリースしました。
実案件で使えることを確認できたので、あらためて記事にしています。
既存の選択肢との違い
Google Workspace を LLM から触る方法は、大きく 3 つあります。
| claude.ai の Google コネクタ | Google 公式 Sheets MCP API | google-mcp-server | |
|---|---|---|---|
| 対象サービス | Drive / Gmail / Calendar など | Sheets のみ | Calendar / Drive / Gmail / Sheets / Docs / Slides |
| セル単位の書き込み | 不可 (2026-08 時点・自分の環境) | 可 | 可 |
| 提供形態 | claude.ai 組み込み | Google ホストの HTTP + OAuth | ローカル実行 (stdio) の単一バイナリ |
| 提供段階 | 正式提供 | Developer Preview | OSS (MIT) |
| セットアップ | 画面から接続するだけ | GCP で API 有効化 + クライアントごとのリダイレクト URI 設定 | GCP で OAuth クライアント作成 + バイナリ配置 |
| 複数アカウント | アカウントごとに接続 | — | 1 サーバーで複数アカウントを自動選択 |
claude.ai の Google コネクタ は設定が一番簡単なため、Drive の検索・ファイルの読み取り・メールやカレンダーの参照だけならこれで足ります。
一方で、スプレッドシートのセル値更新や Slides の操作は提供されていません。
Google 公式の Sheets MCP API は sheetsmcp.googleapis.com を有効化して HTTP + OAuth 2.0 で接続するマネージドな MCP サーバーで、get_values / update_values / update_formulas / insert_dimension などのツールを提供します。
Google がホストするので運用は楽ですが、Developer Preview 段階で、対象が Sheets 単体な点と、MCP クライアントごとにリダイレクト URI の登録が必要な点は注意が必要です。
google-mcp-server はローカルで動く stdio の MCP サーバーで、上記 6 サービスをひとつのバイナリで提供します。
自分の GCP プロジェクトで作った OAuth クライアントを使うため、トークンもデータも自分のマシンと Google の API の間だけで完結します。
使い方
MCP クライアントに登録すると、次のような依頼が自然言語でできるようになります。
- 「この TODO シートに今日やった作業を追記して、ステータス列を更新して」 (
sheets_values_get/sheets_values_update) - 「この Markdown の議事録を Google Docs にして Drive の共有フォルダに置いて」 (
drive_markdown_upload) - 「来週の空き時間を 3 つ出して」 (
calendar_freebusy_query) - 「この Markdown からスライドを作って PDF で書き出して」 (
slides_markdown_create/slides_export_pdf)
複数の Google アカウントを登録でき、依頼文の中のメールアドレスやドメインから 使うアカウントを自動選択 します。
たとえば「仕事用アカウントのカレンダーに登録して」と書けば、該当アカウントのトークンで API を呼びます。
calendar_events_list_all_accounts のように、全アカウント横断で一覧するツールも用意しています。
導入方法
前提として、自分の Google Cloud プロジェクトと OAuth 2.0 クライアント (デスクトップアプリ) が必要です。
(1) Google Cloud Console でプロジェクトを作り、使うサービスの API (Google Sheets API、Google Drive API など) を有効化します。
(2) 「API とサービス > 認証情報」で OAuth クライアント ID を「デスクトップアプリ」として作成します。
(3) クライアント ID とシークレットを環境変数か config.json で渡します。
export GOOGLE_CLIENT_ID="YOUR_CLIENT_ID.apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="YOUR_CLIENT_SECRET"(4) MCP クライアントに登録します。
パスは Apple Silicon の Homebrew の例なため、brew --prefix の出力に合わせて読み替えてください。
Claude Code の場合:
claude mcp add google -- /opt/homebrew/bin/google-mcp-serverClaude Desktop の場合は ~/Library/Application Support/Claude/claude_desktop_config.json に書きます。
{
"mcpServers": {
"google": {
"command": "/opt/homebrew/bin/google-mcp-server"
}
}
}初回はブラウザが開いて OAuth の同意画面が出るので、許可すればトークンが保存されて以降は自動更新されます。
アカウントの追加は、クライアントから「Google アカウントを追加して」と頼むと accounts_add が認可 URL を返してくれます。
フィードバックのお願い
実案件で使いながら直している段階なので、不具合報告・機能要望・プルリクエストを歓迎します。
GitHub リポジトリ の Issue でお気軽にお声がけください。