Outlook Calendar MCP Server について
Outlook と Microsoft 365 の予定を読み取り専用で取得する MCP サーバーです。AI アシスタント向けに、必要時の Microsoft 認証とテスト用 CLI を備えています。
主な機能
- 01日付範囲を指定した予定の取得
- 02必要時の Microsoft 認証
- 03予定の詳細と参加者の返却
- 04テスト用の対話型 CLI
活用シーン
- 01指定期間の予定を確認
- 02予定の状態、場所、主催者を確認
MCP 対応
MCP クライアントに `get_auth_url` と `get_calendar_events` ツールを提供します。カレンダーへのアクセスは読み取り専用です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Outlook Calendar MCP サーバー
これは、Outlook/Microsoft 365 カレンダーへの読み取り専用アクセスを提供する MCP(Model Context Protocol)サーバーです。
前提条件
- Go 1.21 以降
- カレンダーにアクセスできる Microsoft 365 アカウント
- 適切な権限を設定した Azure AD の登録済みアプリケーション
プロジェクト構成
outlook/outlook_api.go- Outlook カレンダーと連携する内部 APIcmd/mcp/main.go- AI アシスタントで使用する MCP サーバーの実装cmd/cli/main.go- テスト用のコマンドラインインターフェイスconfig.example.yaml- 設定ファイルのサンプル
インストール
git clone https://github.com/your-username/outlookmcp.git
cd outlookmcp
go mod download
アプリケーションのビルド
MCP サーバーのビルド
# Build for the current platform
go build -o outlook-mcp ./cmd/mcp
# Cross-compile for Windows
GOOS=windows GOARCH=amd64 go build -o outlook-mcp.exe ./cmd/mcp
# Cross-compile for macOS
GOOS=darwin GOARCH=amd64 go build -o outlook-mcp-mac ./cmd/mcp
# Cross-compile for Linux
GOOS=linux GOARCH=amd64 go build -o outlook-mcp-linux ./cmd/mcp
CLI クライアントのビルド
# Build for the current platform
go build -o outlook-cli ./cmd/cli
# Cross-compile for Windows
GOOS=windows GOARCH=amd64 go build -o outlook-cli.exe ./cmd/cli
# Cross-compile for macOS
GOOS=darwin GOARCH=amd64 go build -o outlook-cli-mac ./cmd/cli
# Cross-compile for Linux
GOOS=linux GOARCH=amd64 go build -o outlook-cli-linux ./cmd/cli
設定
アプリケーションは次の 2 つの方法で設定できます。
- YAML 設定ファイルを使用する(
config.example.yamlを参照) - 環境変数を使用する
設定ファイル
サンプルに基づいて config.yaml ファイルを作成します。
outlook:
me: "John Doe"
max_attendees: 10
max_event_count: 50
skip_all_day_events: true
環境変数
Azure AD アプリケーションの認証情報を含む .env ファイルを作成します。
OUTLOOK_TENANT_ID=your-tenant-id
OUTLOOK_CLIENT_ID=your-client-id
OUTLOOK_CLIENT_SECRET=your-client-secret
アプリケーションの実行
MCP サーバーと CLI アプリケーションは、どちらも省略可能なコマンドライン引数を受け付けます。
- 第 1 引数:設定ファイルのパス(省略可能)
- 第 2 引数:.env ファイルのパス(省略可能)
ソースから実行
MCP サーバーの実行
# With default configuration
go run cmd/mcp/main.go
# With custom config file
go run cmd/mcp/main.go config.yaml
# With custom config and env file
go run cmd/mcp/main.go config.yaml .env.production
CLI クライアントの実行
# With default configuration
go run cmd/cli/main.go
# With custom config file
go run cmd/cli/main.go config.yaml
# With custom config and env file
go run cmd/cli/main.go config.yaml .env.production
ビルド済みバイナリの実行
MCP サーバーのバイナリを実行
# With default configuration
./outlook-mcp
# With custom config file
./outlook-mcp config.yaml
# With custom config and env file
./outlook-mcp config.yaml .env.production
CLI クライアントのバイナリを実行
# With default configuration
./outlook-cli
# With custom config file
./outlook-cli config.yaml
# With custom config and env file
./outlook-cli config.yaml .env.production
認証
このサーバーでは、必要に応じて認証を行います。
- カレンダーツールが呼び出されると、認証済みかどうかを確認します
- 未認証の場合、認証 URL を含むエラーを返します
- 認証フローを開始するには、まず
get_auth_urlツールを呼び出す必要があります - 認証 URL をブラウザーで開きます
- 認証に成功すると、コールバックが取得され、トークンが保存されます
利用可能なツール
get_auth_url
Microsoft で認証フローを開始します。
パラメーター: なし
戻り値: ブラウザーで開く認証 URL
get_calendar_events
指定した期間の Outlook カレンダーの予定を取得します。
パラメーター:
start_date(省略可能):YYYY-MM-DD 形式の開始日。指定しない場合は今日になります。end_date(省略可能):YYYY-MM-DD 形式の終了日。指定しない場合は今日になります。
戻り値: 次のプロパティを含むカレンダーイベントの JSON 配列:
subject:イベントのタイトルstartTime:イベントの開始時刻endTime:イベントの終了時刻isAllDay:終日のイベントかどうかisAccepted:イベントが承諾済みかどうかisCancelled:イベントがキャンセル済みかどうかlocation:イベントの場所(取得可能な場合)organizer:イベントの開催者名(取得可能な場合)description:イベント本文の簡単な説明/プレビュー(取得可能な場合)attendees:出席者の一覧
使用例
まず認証します。
{
"tool": "get_auth_url",
"params": {}
}
次にカレンダーの予定を取得します。
{
"tool": "get_calendar_events",
"params": {
"start_date": "2023-11-01",
"end_date": "2023-11-07"
}
}
CLI の使用方法
CLI アプリケーションでは、シンプルな対話型インターフェイスを利用できます。
get_auth_urlを選択して認証します- 表示された URL をブラウザーで開き、アプリケーションを承認します
- 承認後、
get_calendar_eventsを使用してカレンダーデータを取得します
セキュリティに関する考慮事項
- クライアントシークレットは安全に保管してください(環境変数の使用を推奨)
- サーバーが提供するのは、カレンダーデータへの読み取り専用アクセスのみです
- 書き込み操作は実装されていません
- トークンは、サーバーの実行中のみメモリに保存されます
Azure AD アプリケーションの設定
- Azure ポータルで新しいアプリケーションを登録します
- 次のアクセス許可を追加します。
- Calendars.Read
- Calendars.Read.Shared
- Calendars.ReadBasic
http://localhost:1111/callbackへのリダイレクト URI を設定します- クライアントシークレットを作成し、設定を更新します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。