mcpField
G
Google Calendar MCP Server

Google Calendar MCP Server

ローカル
github.com/ymello生産性182 週間前に更新

Google Calendar MCP Server について

Google Calendar MCP Serverは、stdioまたはHTTP/SSEでMCPクライアントをGoogle Calendarに接続します。Google APIのOAuth認証情報を持つユーザー向けに、予定の管理や空き時間の検索を提供します。

主な機能

  1. 01カレンダー予定の一覧表示
  2. 02予定の作成・更新・削除
  3. 03空き時間の検索
  4. 04stdioとHTTP/SSEに対応

活用シーン

  1. 01指定期間内の予定確認
  2. 02会議の詳細や参加者の管理
  3. 03指定時間分の空き時間の検索

MCP 対応

予定の一覧表示、作成、更新、削除、空き時間の検索をMCPツールとして公開します。クライアントはstdioまたは記載されたSSEエンドポイントで接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Google Calendar MCP サーバー

Google Calendar 用の Model Context Protocol(MCP)実装です。CLI または Server-Sent Events(SSE)を通じて、カレンダーのイベントを操作できます。

機能

  • カレンダーのイベントを一覧表示
  • 新しいイベントを作成
  • 既存のイベントを更新
  • イベントを削除
  • 空き時間を検索

前提条件

  • Node.js 18 以降
  • Google Calendar API にアクセスできる Google アカウント
  • Google Cloud Console の OAuth 2.0 認証情報

設定

  1. .env.example ファイルを .env にコピーします。

    cp .env.example .env
    
  2. .env ファイルで Google OAuth 2.0 認証情報を設定します。

    GOOGLE_CLIENT_ID=seu-client-id
    GOOGLE_CLIENT_SECRET=seu-client-secret
    GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
    GOOGLE_REFRESH_TOKEN=seu-refresh-token
    PORT=3334
    
  3. 依存関係をインストールします。

    npm install
    
  4. コードをビルドします。

    npm run build
    

使用方法

HTTP/SSE サーバーとして実行

HTTP/SSE サーバーを起動します。

npm run start:http

指定したポートでサーバーが起動します(デフォルト:3334)。

利用可能なエンドポイント:

  • GET /sse - SSE ストリームに接続
  • POST /messages - サーバーにメッセージを送信
CLI(stdio)として実行

CLI ツールとして使用する場合は、stdio モードでサーバーを実行します。

npm run start:stdio

MCP クライアントとの統合

Claude Desktop

このサーバーを Claude Desktop で使用するには、以下の設定を Claude の設定ファイルに追加します。

MacOS の場合:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows の場合:

code %AppData%\Claude\claude_desktop_config.json

次の設定を追加します。

{
  "mcpServers": {
    "google-calendar": {
      "command": "node",
      "args": [
        "/caminho/absoluto/para/o/build/index.js"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "seu-client-id",
        "GOOGLE_CLIENT_SECRET": "seu-client-secret",
        "GOOGLE_REDIRECT_URI": "seu-redirect-uri",
        "GOOGLE_REFRESH_TOKEN": "seu-refresh-token"
      }
    }
  }
}
その他の MCP クライアントとの統合

SSE 通信に対応している他の MCP クライアントでは、以下のエンドポイントを指定してください。

  • SSE エンドポイント:http://localhost:3334/sse
  • メッセージエンドポイント:http://localhost:3334/messages

利用可能なツール

Google Calendar MCP サーバーでは、以下のツールを利用できます。

list_events

指定した時間範囲内のイベントを一覧表示します。

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "maxResults": 10
}
create_event

カレンダーに新しいイベントを作成します。

{
  "summary": "Reunião importante",
  "description": "Discussão sobre o projeto XYZ",
  "startTime": "2023-09-15T14:00:00Z",
  "endTime": "2023-09-15T15:00:00Z",
  "attendees": ["[email protected]", "[email protected]"]
}
update_event

既存のイベントを更新します。

{
  "eventId": "abc123xyz",
  "summary": "Reunião atualizada",
  "startTime": "2023-09-15T14:30:00Z",
  "endTime": "2023-09-15T15:30:00Z"
}
delete_event

カレンダーのイベントを削除します。

{
  "eventId": "abc123xyz"
}
find_free_time

指定した時間範囲内の空き時間を検索します。

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "duration": 60
}

リフレッシュトークンの取得

Google のリフレッシュトークンを取得するには、次のスクリプトを使用できます。

const { google } = require('googleapis');
const http = require('http');
const url = require('url');

// Substituir com suas credenciais
const CLIENT_ID = 'seu-client-id';
const CLIENT_SECRET = 'seu-client-secret';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';

const oauth2Client = new google.auth.OAuth2(
  CLIENT_ID,
  CLIENT_SECRET,
  REDIRECT_URI
);

const scopes = [
  'https://www.googleapis.com/auth/calendar',
  'https://www.googleapis.com/auth/calendar.events'
];

function getRefreshToken() {
  const server = http.createServer(async (req, res) => {
    const queryParams = url.parse(req.url, true).query;
    
    if (queryParams.code) {
      try {
        const { tokens } = await oauth2Client.getToken(queryParams.code);
        console.log('Refresh Token:', tokens.refresh_token);
        res.end('Autenticação bem-sucedida! Você pode fechar esta janela.');
        server.close();
      } catch (error) {
        console.error('Erro ao obter tokens:', error);
        res.end('Falha na autenticação!');
      }
    }
  }).listen(3000, () => {
    const authUrl = oauth2Client.generateAuthUrl({
      access_type: 'offline',
      scope: scopes,
      prompt: 'consent'
    });

    console.log('Acesse esta URL no navegador:');
    console.log(authUrl);
  });
}

getRefreshToken();

このスクリプトを getToken.js として保存し、node getToken.js で実行して、指示に従ってリフレッシュトークンを取得してください。

開発

開発時には、次のコマンドを実行できます。

npm run dev

TypeScript が監視モードでコンパイルされるため、変更を加えてリアルタイムで結果を確認できます。

トラブルシューティング

よくある問題
  1. Google の認証エラー

    • 認証情報が正しいことを確認してください
    • リフレッシュトークンが有効であることを確認してください
    • 必要なスコープが有効になっていることを確認してください
  2. サーバーが起動しない

    • すべての環境変数が設定されていることを確認してください
    • ビルドが正常に完了したことを確認してください
    • build/index.js ファイルの権限を確認してください
  3. SSE 接続の失敗

    • ポート(デフォルト:3334)が使用可能であることを確認してください
    • ログで具体的なエラーを確認してください
    • エンドポイントが正しく設定されていることを確認してください

ライセンス

ISC

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。