calendar-mcp について
calendar-mcp は Java と Quarkus で構築された Google Calendar の MCP サーバーで、現在は開発中です。Google OAuth 認証を使い、イベントの作成や複数の方法での削除に対応します。
主な機能
- 01Google Calendar イベントの作成
- 02イベントの削除
- 03検索文字列や期間によるイベント削除
- 04繰り返しイベントの削除や全件消去
- 05Google OAuth による認証
活用シーン
- 01MCP クライアント経由でのイベント作成
- 02文字列や日付によるイベント削除
- 03繰り返しイベントの削除やカレンダーの全件消去
MCP 対応
Quarkus サーバーは MCP over SSE で MCP クライアントと通信し、Google Calendar のイベント操作を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Reto 3 - MCP プロトコルの実装(クライアントとサーバー)
オプション A - MCP プロトコルの完全な開発(クライアントとサーバー)
目次
· 要件
· 設定
· プロジェクト構成
· 説明
· 技術上の注意
· 警告
要件
- Java 17 以上
- Maven
- Docker
- Quarkus
- Google アカウント
- Google Calendar API
- Google Cloud Console プロジェクトの認証情報
- MCP クライアント
設定
- リポジトリをクローンします
- Google Cloud でプロジェクトを作成します:https://console.cloud.google.com/welcome?inv=1&invt=AbzSaw&project=light-sunup-461210-i1。「my first proyect」をクリックして、新しいプロジェクトを作成します。
- プロジェクト内で、APIS y servicios → Biblioteca → Google Calendar API → Habilitar の順に選択します。
- APIs y servicios → Credenciales → Crear credenciales → Crear ID de cliente OAuth → Configurar pantalla de consentimiento → Crear cliente の順に選択します。
- JSON をダウンロードし、Resources フォルダーにコピーします。
- コンパイルします:mvn clean install。
- サーバーを実行します:jbang target/calendar-mcp-1.0.0-SNAPSHOT-runner.jar
プロジェクト構成
src/
├── main/
│ ├── java/
│ │ └── org.acme/
│ │ ├── GoogleAuthService.java # Manejo de OAuth2 con Google
│ │ ├── GoogleCalendarConfig.java # Cliente Calendar configurado
│ │ └── tools/
│ │ └── DeleteEvent.java # Comandos para borrar eventos
│ └── resources/
│ └── credentials.json # Clave de acceso OAuth
説明
pom.xml Maven プロジェクトの中心的な設定ファイルです。 REST と Google API クライアントの依存関係を含む Quarkus プロジェクトとして宣言します。
具体的には、次の依存関係です:
<dependency>
<groupId>io.quarkiverse.mcp</groupId>
<artifactId>quarkus-mcp-server-sse</artifactId>
<version>1.2.0</version>
</dependency>
MCP を介してクライアントとサーバー間の継続的な通信を維持します。
Quarkus サーバー
-
GoogleAuthService:Google OAuth、JSON、Jakarta のパッケージをインポートし、Quarkus 環境に対応させます。 定数 JSON_FACTORY と SCOPES には、カレンダーへのアクセスを許可する認証情報と権限が含まれています。
authorize() メソッド:
- 認証情報を読み込み、認証処理を行います。
- ユーザーの認証方法を定義します。この場合、「setAccessType("offline")」を設定することで、再認証せずに再アクセスできるようにし、トークンを「tokens」というディレクトリに保存します。
- ローカルサーバーを起動し、HTTP を使用してポート 8888 でブラウザーを開きます。
- ユーザーを認証します。ユーザーがサインインすると、認証情報が保存されます。
-
GoogleCalendarConfig:依存関係の注入の設定として機能し、Google との OAuth2 認証を処理する依存関係を注入します。
@Inject
GoogleAuthService authService;
calendarService() クラスを使用すると、サービスは常に認証を行わずに、イベントの作成やカレンダーへのアクセスなどを実行できます。
ツール
- CreateEvent:ユーザーの Google カレンダーに新しいイベントを作成します。イベント情報を含む JSON を受け取る REST エンドポイント(POST タイプの URL)を定義します。
- DeleteEvent:ユーザーの Google カレンダーにある既存のイベントを削除します。
- deleteEventsByQuery():検索テキストに一致するイベントを削除します。
- deleteEventsByDateRange():2 つの日付の間に発生するすべてのイベントを削除します。
- deleteRecurringEvent():eventId または instanceDate を指定してイベントを削除します。
- clearAllEvents():すべてのイベントを削除します。
技術上の注意
- 「offline」でアクセスできるよう、トークンは tokens/ に保存されます。
警告
- イベントの削除は取り消せません。
- カレンダーに適切な権限があることを確認してください。
- credentials.json ファイルを共有しないでください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。