Azure FunctionsにホスティングするMCPサーバーです。Microsoft Graph APIを使用してOutlookカレンダーにアクセスし、予定の取得と会議予約が可能です。
- 予定取得: 指定したユーザーの直近30日間の予定を取得
- 会議予約: 新しい会議予定を作成(参加者、場所、Teams会議対応)
- 日本時間対応: JST(日本標準時)での時刻処理
- Azure認証: Azure AD認証による安全なアクセス
指定したユーザーのOutlook予定を取得します。
パラメータ:
userPrincipalName(必須): 予定を取得したいユーザーのUPN(例: user@example.com)
レスポンス例:
{
"user": {
"userPrincipalName": "user@example.com"
},
"value": [
{
"subject": "チーム会議",
"start": "2025-01-15T09:00:00",
"end": "2025-01-15T10:00:00",
"isAllDay": false
}
]
}指定ユーザーのOutlookに簡易予定を作成します。
パラメータ:
userPrincipalName(必須): 予定を作成するユーザーのUPNsubject(必須): 予定の件名start(必須): 開始時刻(ISO形式)end(必須): 終了時刻(ISO形式)attendees(任意): 参加者のメールアドレス(カンマ区切り)isOnlineMeeting(任意): Teams会議の有無(boolean)location(任意): 会議場所body(任意): 予定の本文
レスポンス例:
{
"created": {
"id": "event-id",
"subject": "新しい会議",
"start": "2025-01-15T09:00:00",
"end": "2025-01-15T10:00:00",
"webLink": "https://outlook.office.com/...",
"attendees": ["user1@example.com", "user2@example.com"],
"location": "会議室A",
"isOnlineMeeting": true
}
}作成者は、このMCPサーバーをresponsesAPI経由で使用しています。
{
"tool": "get_user_outlook_events",
"arguments": {
"userPrincipalName": "user@company.com"
}
}{
"tool": "create_simple_event",
"arguments": {
"userPrincipalName": "user@company.com",
"subject": "プロジェクト会議",
"start": "2025-01-20T14:00:00",
"end": "2025-01-20T15:00:00",
"attendees": "colleague1@company.com,colleague2@company.com",
"isOnlineMeeting": true,
"location": "会議室A",
"body": "プロジェクトの進捗について話し合います。"
}
}{
"user": {
"userPrincipalName": "user@company.com"
},
"value": [
{
"subject": "チーム会議",
"start": "2025-01-15T09:00:00",
"end": "2025-01-15T10:00:00",
"isAllDay": false
},
{
"subject": "プロジェクトレビュー",
"start": "2025-01-16T14:00:00",
"end": "2025-01-16T15:30:00",
"isAllDay": false
}
]
}{
"error": "userPrincipalName is required."
}func init outlook-mcp-server --python
cd outlook-mcp-serverpip install -r requirements.txtlocal.settings.json に以下の設定を追加:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureWebJobsStorage": "",
"AZURE_TENANT_ID": "your-tenant-id",
"AZURE_CLIENT_ID": "your-client-id",
"AZURE_CLIENT_SECRET": "your-client-secret"
}
}注意: 実際の値はAzure ADアプリケーション登録で取得した値に置き換えてください。
- Azure Portal でアプリケーションを登録
- Microsoft Graph API の以下の権限を付与:
Calendars.ReadCalendars.ReadWrite
- クライアントシークレットを生成
- Azure Functions の設定に認証情報を追加
func azure functionapp publish <your-function-app-name>- Azure Functions: サーバーレス実行環境
- Microsoft Graph API: Outlook カレンダーアクセス
- Python 3.x: 実装言語
- Azure AD: 認証・認可
MIT License
プルリクエストやイシューの報告を歓迎します!
- このサーバーはMCP(Model Context Protocol)に対応しています
- Azure AD認証が必要です
- Microsoft Graph APIの利用制限にご注意ください
- 本番環境では適切なセキュリティ設定を行ってください
- 現時点で終日予定取得できないので、今後カスタマイズが必要
- リファクタリングの余地が多くあります(笑)