gws-mcp
Provides read-only Gmail tools for searching messages, retrieving message bodies and threads, and listing labels.
Provides tools for reading calendar events and creating or partially updating events on the user's primary calendar, with attendee notification controls.
Provides tools for reading document text, creating documents, appending text, and replacing text in Google Docs.
Provides tools for searching and listing files, reading metadata and text content, creating folders and text files, updating text files, renaming files, and copying files within My Drive, with write safeguards.
Provides tools for reading spreadsheet metadata and ranges, creating spreadsheets, writing ranges, appending rows, and adding sheets/tabs.
Provides tools for reading slide text, creating presentations, adding text slides, and replacing text in Google Slides.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gws-mcpsearch my Drive for the latest budget spreadsheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gws-mcp
アクセス範囲と操作権限を厳しく絞った、Google Workspace MCP サーバーです。
LLM の誤操作による意図しない変更・削除・情報流出を防ぐための制限をコード側で強制します。
外部依存は Google 公式ライブラリのみです。サードパーティ製フレームワークは使いません。
対応サービスと操作範囲
サービス | 読み取り | 作成 | 更新 | 削除 |
Drive(マイドライブ) | ✅ | ✅ | ✅ ※1 | ❌ |
Drive(共有ドライブ) | ✅ | ❌ | ❌ | ❌ |
スプレッドシート | ✅ | ✅ | ✅ ※1 | ❌ |
ドキュメント | ✅ | ✅ | ✅ ※1 | ❌ |
スライド | ✅ | ✅ | ✅ ※1 | ❌ |
カレンダー | ✅ | ✅ | ✅ ※2 | ❌ |
Gmail | ✅ | ❌ | ❌ | ❌ |
※1 対象は「自分が所有者」かつ「共有ドライブに属していない(driveId がない)」ファイルだけです。どちらかを満たさないファイルへの書き込みは拒否します。
※2 作成・更新できるのは自分のメインカレンダー(primary)だけです。更新は自分が主催者の予定に限ります。
Related MCP server: Google Drive MCP Server
セキュリティ設計
書き込みガード
Drive・スプレッドシート・ドキュメント・スライドの書き込み系ツールは、実行前に Drive API(files.get)で対象ファイルの情報を取得し、次のいずれかに当てはまれば API を呼ばずにエラーを返します。
driveIdがある(共有ドライブ内のファイル)ownedByMeがtrueでない(他人が所有するファイル)ゴミ箱に入っている
ショートカットである(リンク先が共有ドライブのファイルかどうかを ID から判別できないため)
Drive のフォルダ作成・ファイル作成・コピーでは、作成先の親フォルダに同じ判定をかけます(既定の作成先はマイドライブ直下)。スプレッドシート・ドキュメント・スライドの新規作成は常にマイドライブ直下に作られ、作成後にできたファイルを同じ条件で確認します。ファイル ID は形式をチェックしてから使います。
カレンダーは Drive のファイルではないため、予定を取得して自分が主催者かを判定します(※2)。
OAuth スコープではマイドライブと共有ドライブを区別できないため、この制限はスコープではなくコード(gws_mcp/guard.py)で強制しています。
さらに Drive API の書き込み呼び出し(作成・更新・名前変更)には supportsAllDrives を付けません。付けなければ共有ドライブのファイルは API 側で「見つからない」扱いになるため、ガードとは別の二重の防御になります(共有ドライブのファイルを読むために必要なコピーだけは例外で、コピー先はガードで判定します)。
ツールとして公開しない操作
ファイルの削除、ゴミ箱への移動、ゴミ箱を空にする
共有設定(
permissions)の変更ファイルの移動(親フォルダの付け替え)
共有ドライブの作成・変更
カレンダーの予定の削除、カレンダー自体の作成・削除・共有設定
Gmail の送信・下書き作成・ラベル変更などの書き込み全般
任意の API を直接呼べる汎用ツール
その他の安全策
スプレッドシート: 書き込みは既定で
RAW(数式として解釈しない)です。IMPORTDATAなどの数式でデータが外部に送られるのを防ぎます。数式を入れたいときだけUSER_ENTEREDを明示します。カレンダー: 参加者がいる予定の作成・更新では、招待・通知メールを送るか(
send_updates)の指定を必須にしており、指定がなければ実行しません。LLM には送るかをユーザーに確認してから指定するよう指示しています。書き込み先は自分のメインカレンダーに固定しており、共有カレンダーは編集権限があっても変更しません。トークン: 権限
0600で保存します(ディレクトリは0700)。サーバー実行中にブラウザ認証を始めることはありません。ログ: 標準エラー出力だけに出します(stdout は MCP 通信専用)。
OAuth スコープ
スコープ | 用途 |
| Drive / Docs / Sheets / Slides の読み書き |
| Gmail の読み取り |
| 予定の読み書き(カレンダー自体の操作は不可) |
必要なもの
Python 3.10 以上
Google Workspace アカウント
Google Cloud プロジェクト(OAuth クライアント作成用)
セットアップ
以下の手順はスキル(/setup)で対話的に進められます
1. Google Cloud の準備
Google Cloud Console でプロジェクトを作ります。
「API とサービス」→「ライブラリ」で次の API を有効にします。
Google Drive API
Gmail API
Google Calendar API
Google Sheets API
Google Docs API
Google Slides API
「Google Auth Platform」で OAuth 同意画面を設定し、「対象」でユーザーの種類に「内部」を選びます(組織利用が前提。個人利用で「外部」かつ「テスト中」にすると、トークンが 7 日で失効します)。
「認証情報」→「認証情報を作成」→「OAuth クライアント ID」で、種類に デスクトップアプリ を選びます。
JSON をダウンロードし、
~/.config/gws-mcp/credentials.jsonとして保存します。
mkdir -p ~/.config/gws-mcp && chmod 700 ~/.config/gws-mcp
mv ~/Downloads/client_secret_*.json ~/.config/gws-mcp/credentials.json
chmod 600 ~/.config/gws-mcp/credentials.json保存場所は環境変数 GWS_MCP_CONFIG_DIR で変更できます。
2. インストール
cd /path/to/gws-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.lockrequirements.lock は、推移的な依存まで動作確認済みのバージョンで固定したものです。直接の依存(Google 公式4パッケージ)は requirements.txt で管理し、更新したときは .venv/bin/pip freeze > requirements.lock で作り直します。
3. 初回認証
.venv/bin/python scripts/authorize.pyブラウザが開くので、Google アカウントでログインして権限を許可します。トークンは ~/.config/gws-mcp/token.json に保存されます。スコープを変えたときやトークンが無効になったときも、このコマンドを実行し直してください。
4. MCP クライアントへの登録
/path/to/gws-mcp は実際のパスに置き換えてください。config/ に設定例があります(Claude Code のプロジェクト設定 .mcp.json 用: claude-code.mcp.example.json、VS Code 用: vscode.mcp.example.json)。
Claude Code
claude mcp add --scope user gws -e PYTHONPATH=/path/to/gws-mcp -- /path/to/gws-mcp/.venv/bin/python -m gws_mcp(--scope user でどのプロジェクトからも使えるようにします。PYTHONPATH はリポジトリ外から起動しても gws_mcp を読み込めるようにするためです)
VS Code(.vscode/mcp.json)
{
"servers": {
"gws": {
"type": "stdio",
"command": "/path/to/gws-mcp/.venv/bin/python",
"args": ["-m", "gws_mcp"],
"env": { "PYTHONPATH": "/path/to/gws-mcp" }
}
}
}ツール一覧
Drive
ツール | 種別 | 説明 |
| 読取 | キーワードでファイルを検索(共有ドライブを含む) |
| 読取 | フォルダ内のファイル一覧 |
| 読取 | ファイルのメタデータを取得 |
| 読取 | 本文をテキストで取得(Google ドキュメント類はエクスポート、バイナリは不可) |
| 書込 | マイドライブにフォルダを作成 |
| 書込 | マイドライブにテキストファイルを作成 |
| 書込 | テキストファイルの本文を更新 |
| 書込 | ファイル名を変更 |
| 書込 | ファイルをマイドライブのフォルダにコピー(コピー元は共有ドライブも可) |
Gmail(読み取りのみ)
ツール | 説明 |
| Gmail の検索構文でメールを検索(最大50件) |
| メール本文を取得(text/plain 優先) |
| スレッドを取得 |
| ラベル一覧 |
カレンダー
ツール | 種別 | 説明 |
| 読取 | 期間・キーワードで予定を一覧 |
| 読取 | 予定の詳細を取得 |
| 書込 | 自分のメインカレンダーに予定を作成 |
| 書込 | 自分が主催者の予定を部分更新 |
スプレッドシート
ツール | 種別 | 説明 |
| 読取 | シート構成を取得 |
| 読取 | 範囲の値を取得 |
| 書込 | スプレッドシートを新規作成 |
| 書込 | 範囲に値を書き込み |
| 書込 | 行を追記 |
| 書込 | シート(タブ)を追加 |
ドキュメント
ツール | 種別 | 説明 |
| 読取 | 本文をテキストで取得 |
| 書込 | ドキュメントを新規作成 |
| 書込 | 末尾にテキストを追記 |
| 書込 | テキストを一括置換 |
スライド
ツール | 種別 | 説明 |
| 読取 | 各スライドのテキストを取得 |
| 書込 | プレゼンテーションを新規作成 |
| 書込 | タイトル+本文のスライドを追加 |
| 書込 | テキストを一括置換 |
ディレクトリ構成
gws-mcp/
├── gws_mcp/
│ ├── server.py # JSON-RPC 2.0 stdio サーバー(MCP プロトコル処理)
│ ├── schema.py # ツール入力の検証
│ ├── auth.py # OAuth 資格情報の読み込み・更新
│ ├── guard.py # 書き込みガード(マイドライブ判定)
│ └── tools/ # サービスごとのツール実装(drive / gmail / calendar / sheets / docs / slides)
├── scripts/
│ └── authorize.py # 初回 OAuth 認証
├── tests/ # unittest(Google API はモック)
├── config/ # 各 MCP クライアント用の設定例
├── .claude/ # Claude Code 用の skill(/setup・/check-updates など)と、資格情報へのアクセスを防ぐフック・設定
├── requirements.txt # 直接の依存
└── requirements.lock # 推移的な依存まで固定したもの(インストールに使う)テスト
標準ライブラリの unittest だけで動きます(Google API はモックするので認証は不要です)。
.venv/bin/python -m unittest discover testsメンテナンス
書き込みガード: 安全性を支える中心部分です。書き込みツールを追加するときは、
Toolにguard=(判定の種類は tools/__init__.py)を宣言し、tests のガードのテスト対象一覧にも追加してください。どちらかが抜けていると、登録時のエラーかテストの失敗になります。書き込み用の API 呼び出しにはsupportsAllDrivesを付けないでください。旧方式のプロトコル対応: Claude Code と VS Code の両方が新方式で動くことを確認できてから、削除を検討します。どちらの方式で接続したかは、標準エラー出力のログ(
initialize:かserver/discover:か)で分かります。入力検証: schema.py が対応している JSON Schema のキーワードは一部だけです。ツールの引数に新しい種類の制約が必要になったら、先に schema.py を拡張してください。
依存の更新: テストを実行し、
requirements.lockを作り直したうえで、実際の環境で主要なツールを動かして確認してください。テストは Google API をモックしているため、API 側の変更は検出できません。
確認方法(/check-updates スキル)
定期的な更新確認は、Claude Code の /check-updates skill(.claude/skills/check-updates/SKILL.md)で行えます。
注意事項
credentials.jsonとtoken.jsonは絶対にコミットしないでください(.gitignoreで除外済み)。driveスコープはファイル全体への読み書き権限です。実際の書き込み制限はガードのコードに依存するので、ガードを変更するときはテストも更新してください。トークンを取り消すには、Google アカウントのサードパーティ接続 からアプリへのアクセスを削除し、
token.jsonを消します。
ライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Governed memory and workspace for any AI: tasks, calendar, mail and pages, with per-action consent.
Gmail, Outlook, Drive, OneDrive and calendars for AI agents. Many accounts, one endpoint, audit log.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables Claude to interact with Google Workspace services including Gmail, Drive, Sheets, Docs, and Calendar. Provides comprehensive tools for reading, creating, and managing emails, files, spreadsheets, documents, and calendar events with built-in safety controls and audit logging.-
- AlicenseNot gradedqualityDmaintenanceEnables AI models to search, list, and read files from Google Drive with automatic format conversion for Google Workspace documents.3,183 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude to manage Google Workspace services such as Calendar, Gmail, and Docs with configurable access and safe-by-design limitations.2-
- AlicenseNot gradedqualityAmaintenanceEnables coding agents to read and manage Google Workspace apps like Gmail, Drive, Docs, Sheets, and Calendar through 41 tools, with staged writes that require review and explicit commit before any change is applied.2MIT