Google Docs MCP Server について
Google Docs MCP Serverは、MCP対応アシスタントをGoogle Docsに接続し、文書を管理します。専用ツールで作成、検索、共有、更新、エクスポートを行えます。
主な機能
- 01文書の作成と削除
- 02文書内容の取得と更新
- 03文書の一覧表示と検索
- 04別形式へのエクスポート
- 05ユーザーとの文書共有
- 06API接続の確認
活用シーン
- 01アシスタントのワークフローで文書を作成
- 02タイトルや内容から文書を検索
- 03既存文書を更新して共有
- 04文書をPDFやテキスト形式で出力
MCP 対応
MCP対応アシスタント向けに、Google Docsの作成、取得、編集、検索、共有、エクスポートのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Google Docs MCP サーバー
AI アシスタントが Google Docs の作成、読み取り、更新、管理を行えるようにする、Google Docs API とシームレスに連携する強力な Model Context Protocol(MCP)サーバーの実装です。
機能
- 任意のタイトルとコンテンツで Google Docs を新規作成
- ドキュメントのコンテンツとメタデータを取得
- 既存のドキュメントを新しいコンテンツで更新
- アクセス可能なすべてのドキュメントを一覧表示
- ドキュメントを削除
- ドキュメントをさまざまな形式(PDF、プレーンテキストなど)にエクスポート
- 特定のユーザーとドキュメントを共有
- タイトルまたはコンテンツでドキュメントを検索
- 接続と認証情報を確認
前提条件
- Node.js 18 以降
- Google Docs API が有効になっている Google Cloud プロジェクト
- 認証情報(API キー、サービスアカウント、または OAuth2)
インストール
-
このリポジトリをクローンします:
git clone https://github.com/lkm1developer/google-docs-mcp-server.git cd google-docs-mcp-server -
依存関係をインストールします:
npm install -
Google Cloud の認証情報を記載した
.envファイルを作成します:# Required GOOGLE_CLOUD_PROJECT_ID=your-project-id # Choose one authentication method: # Option 1A: Service Account with file path (recommended for production) GOOGLE_APPLICATION_CREDENTIALS=path/to/your-service-account-key.json # Option 1B: Service Account with JSON content directly # Useful for environments where you can't create files GOOGLE_APPLICATION_CREDENTIALS_JSON={"type":"service_account","project_id":"...","private_key":"...","client_email":"..."} # Option 2: API Key (simpler for development) GOOGLE_API_KEY=your-api-key # Option 3: OAuth2 (required for user-specific operations) client_id=your-oauth-client-id client_secret=your-oauth-client-secret refresh_token=your-oauth-refresh-token
認証の設定
サービスアカウント認証
- Google Cloud Console に移動します
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- Google Docs API と Google Drive API を有効にします
- 「IAM & Admin」>「Service Accounts」に移動します
- 新しいサービスアカウントを作成します
- 必要なロール(例:「Docs API User」、「Drive API User」)を付与します
- サービスアカウント用の JSON キーを作成してダウンロードします
.envファイルで、この JSON ファイルのパスを設定します
OAuth2 認証
ユーザーの同意が必要な操作(ドキュメントの作成や編集など)を行う場合:
- Google Cloud Console に移動します
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- Google Docs API と Google Drive API を有効にします
- 「APIs & Services」>「Credentials」に移動します
- OAuth クライアント ID の認証情報を作成します(Web アプリケーションタイプ)
- 承認済みのリダイレクト URI を追加します(例:http://localhost:3000/oauth2callback)
- クライアント ID とクライアントシークレットを控えます
- 次のスクリプトを使ってリフレッシュトークンを取得します:
// get-refresh-token.js
const { google } = require('googleapis');
const http = require('http');
const url = require('url');
const open = require('open');
const destroyer = require('server-destroy');
async function getRefreshToken() {
const oauth2Client = new google.auth.OAuth2(
'YOUR_CLIENT_ID',
'YOUR_CLIENT_SECRET',
'http://localhost:3000/oauth2callback'
);
const scopes = [
'https://www.googleapis.com/auth/documents',
'https://www.googleapis.com/auth/drive'
];
const authorizeUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
prompt: 'consent'
});
console.log('Opening browser for authorization...');
open(authorizeUrl);
return new Promise((resolve, reject) => {
const server = http.createServer(async (req, res) => {
try {
const queryParams = url.parse(req.url, true).query;
if (queryParams.code) {
res.end('Authentication successful! You can close this window.');
server.destroy();
const { tokens } = await oauth2Client.getToken(queryParams.code);
console.log('\nRefresh Token:', tokens.refresh_token);
console.log('\nAdd this refresh token to your .env file as refresh_token');
resolve(tokens.refresh_token);
}
} catch (e) {
reject(e);
}
}).listen(3000);
destroyer(server);
});
}
getRefreshToken().catch(console.error);
次のコマンドでこのスクリプトを実行します:
npm install googleapis open server-destroy
node get-refresh-token.js
ビルドと実行
-
プロジェクトをビルドします:
npm run build -
接続をテストします:
npx tsx src/test-connection.ts -
サーバーを実行します:
npm startまたは、特定の認証情報を指定して実行します:
npm start -- --GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json --GOOGLE_CLOUD_PROJECT_ID=your-project-id # Or with JSON content directly: npm start -- --GOOGLE_APPLICATION_CREDENTIALS_JSON='{"type":"service_account","project_id":"..."}' --GOOGLE_CLOUD_PROJECT_ID=your-project-id -
認証付きで SSE サーバーを実行します:
npx mcp-proxy-auth node dist/index.js
SSE サーバーでの認証の実装
SSE サーバーでは、認証に mcp-proxy-auth パッケージを使用します。認証を実装するには:
-
パッケージをインストールします:
npm install mcp-proxy-auth -
AUTH_SERVER_URL環境変数に、API キー検証エンドポイントを設定します:export AUTH_SERVER_URL=https://your-auth-server.com/verify -
認証付きで SSE サーバーを実行します:
npx mcp-proxy-auth node dist/index.js -
SSE URL は次の場所で利用できます:
localhost:8080/sse?apiKey=apikey認証には
apikeyを実際の API キーに置き換えてください。
mcp-proxy-auth パッケージはプロキシとして機能し、次の処理を行います:
- SSE サーバーへのリクエストをインターセプトします
- 認証サーバーに照会して API キーを検証します
- 認証済みのリクエストのみが SSE エンドポイントに到達できるようにします
Docker のサポート
Docker を使用してサーバーを実行することもできます:
-
Docker イメージをビルドします:
docker build -t google-docs-mcp-server . -
コンテナを実行します:
docker run -p 8080:8080 \ -e GOOGLE_CLOUD_PROJECT_ID=your-project-id \ -e GOOGLE_APPLICATION_CREDENTIALS_JSON='{"type":"service_account","project_id":"..."}' \ -e client_id=your-client-id \ -e client_secret=your-client-secret \ -e refresh_token=your-refresh-token \ -e AUTH_SERVER_URL=https://your-auth-server.com/verify \ google-docs-mcp-server
MCP との連携
このサーバーを Claude やその他の MCP 対応アシスタントで使用するには、MCP の設定に追加します:
{
"mcpServers": {
"google-docs": {
"command": "node",
"args": ["/path/to/google-docs-mcp-server/dist/index.js"],
"env": {
"GOOGLE_CLOUD_PROJECT_ID": "your-project-id",
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your-service-account-key.json",
"GOOGLE_APPLICATION_CREDENTIALS_JSON": "{\"type\":\"service_account\",\"project_id\":\"...\"}",
"GOOGLE_API_KEY": "your-api-key",
"client_id": "your-oauth-client-id",
"client_secret": "your-oauth-client-secret",
"refresh_token": "your-oauth-refresh-token"
},
"disabled": false,
"autoApprove": []
}
}
}
利用可能なツール
| ツール名 | 説明 | 必須パラメーター |
|---|---|---|
google_docs_create | 新しい Google ドキュメントを作成します | title、content(任意) |
google_docs_get | ID で Google ドキュメントを取得します | documentId |
google_docs_update | 新しいコンテンツで Google ドキュメントを更新します | documentId、content、replaceAll(任意) |
google_docs_list | 認証済みユーザーがアクセスできる Google ドキュメントの一覧を取得します | pageSize(任意)、pageToken(任意) |
google_docs_delete | Google ドキュメントを削除します | documentId |
google_docs_export | Google ドキュメントを別の形式にエクスポートします | documentId、mimeType(任意) |
google_docs_share | 特定のユーザーと Google ドキュメントを共有します | documentId、emailAddress、role(任意) |
google_docs_search | タイトルまたはコンテンツで Google ドキュメントを検索します | query、pageSize(任意)、pageToken(任意) |
google_docs_verify_connection | Google Docs API との接続を確認します | なし |
使用例
ツールの使用例を以下に示します。
新しいドキュメントを作成する
{
"name": "google_docs_create",
"arguments": {
"title": "My New Document",
"content": "This is the content of my new document."
}
}
ドキュメントを取得する
{
"name": "google_docs_get",
"arguments": {
"documentId": "1Ax7vsdg3_YhKjkl2P0TZ5XYZ123456"
}
}
ドキュメントを更新する
{
"name": "google_docs_update",
"arguments": {
"documentId": "1Ax7vsdg3_YhKjkl2P0TZ5XYZ123456",
"content": "This is the new content.",
"replaceAll": true
}
}
ドキュメントを検索する
{
"name": "google_docs_search",
"arguments": {
"query": "meeting notes",
"pageSize": 5
}
}
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。