mcpField
O
Outlook Meetings Scheduler MCP Server

Outlook Meetings Scheduler MCP Server

ローカル
github.com/anooptコミュニケーション1656 週間前に更新

Outlook Meetings Scheduler MCP Server について

Outlook Meetings Scheduler MCP Server は Microsoft Graph を使って Outlook の予定を管理します。会議や参加者の設定に使え、複数の認証方式と人物検索ツールを備えています。

主な機能

  1. 01名前で人物を検索
  2. 02参加者付き予定の作成
  3. 03予定の一覧表示と絞り込み
  4. 04予定と参加者の更新
  5. 05予定の削除
  6. 063 種類の認証方式

活用シーン

  1. 01指定した参加者との会議を設定
  2. 02招待前に人物のメールアドレスを検索
  3. 03カレンダーの予定を確認または変更
  4. 04GitHub の課題作成後に会議を設定

MCP 対応

Microsoft Graph を介して、人物検索と Outlook 予定の作成、一覧表示、取得、更新、削除ツールを MCP クライアントに提供する MCP サーバーです。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"outlook-meetings-scheduler": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CLIENT_ID",
"-e",
"CLIENT_SECRET",
"-e",
"TENANT_ID",
"-e",
"USER_EMAIL",
"mcp/outlook-meetings-scheduler"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"TENANT_ID": "<TENANT_ID>",
"USER_EMAIL": "<USER_EMAIL>"
}
}
}
}
起動コマンドdocker run -i --rm -e CLIENT_ID -e CLIENT_SECRET -e TENANT_ID -e USER_EMAIL mcp/outlook-meetings-scheduler
設定が必要な環境変数
CLIENT_ID
CLIENT_SECRETシークレット
TENANT_ID
USER_EMAIL

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocimcp/outlook-meetings-scheduler

ツール

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

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

詳細

MseeP.ai Security Assessment Badge

Outlook Meetings Scheduler MCP サーバー

Microsoft Graph API を使用して Microsoft Outlook で会議をスケジュールする MCP サーバーです。

この MCP サーバーでは、カレンダーイベントの作成や、参加者(メールアドレスの検索を含む)を指定したイベントの作成ができます。 GitHub MCP サーバーなど、ほかの MCP サーバーとシームレスに連携し、ワークフローを強化します。

Outlook Meetings Scheduler Server MCP サーバー

クエリの例

  • 明日の午後3時にSarahとの会議をスケジュールしてください。
  • 明日の午後2時に「Project Kickoff」という会議を作成してください。MeganとJohnを必須参加者として追加してください。
GitHub MCP サーバーとの使用例
  • organization/repo リポジトリに、「Fix pagination bug in user dashboard」というタイトルで、「Users report seeing duplicate entries when navigating between pages.」という説明のイシューを作成してください。その後、明日の午後3時にこのイシューを確認するためのカレンダーリマインダーを設定してください。

デモ

デモ

ツール

  1. find-person

    • 名前から人物のメールアドレスを検索します
    • 入力:name(文字列)
    • 返される内容:一致する人物の名前とメールアドレスの一覧
  2. create-event

    • Microsoft Graph API を使用してカレンダーイベントを作成します
    • 入力:
      • subject(文字列):カレンダーイベントの件名
      • body(文字列):カレンダーイベントの内容/本文
      • start(省略可):ISO 形式の日時(例:2025-04-20T12:00:00)
      • end(省略可):ISO 形式の日時(例:2025-04-20T13:00:00)
      • timeZone(省略可):イベントのタイムゾーン(既定値:"GMT Standard Time")
    • 返される内容:URL と ID を含むイベントの詳細
  3. create-event-with-attendees

    • Microsoft Graph API を使用して参加者を含むカレンダーイベントを作成します
    • 入力:
      • subject(文字列):カレンダーイベントの件名
      • body(文字列):カレンダーイベントの内容/本文
      • start(省略可):ISO 形式の日時(例:2025-04-20T12:00:00)
      • end(省略可):ISO 形式の日時(例:2025-04-20T13:00:00)
      • timeZone(省略可):イベントのタイムゾーン(既定値:"GMT Standard Time")
      • location(省略可):イベントの場所
      • attendees:{ email, name(省略可), type(省略可)} の配列
    • 返される内容:URL、ID、参加者一覧を含むイベントの詳細
  4. get-event

    • ID を指定してカレンダーイベントの詳細を取得します
    • 入力:
      • eventId(文字列):取得するイベントの ID
    • 返される内容:件名、時刻、参加者、URL などの詳細なイベント情報
  5. list-events

    • オプションの条件で絞り込んでカレンダーイベントを一覧表示します
    • 入力:
      • subject(省略可):このテキストを含む件名でイベントを絞り込みます
      • startDate(省略可):指定日時以降のイベントを絞り込む ISO 形式の開始日時(例:2025-04-20T00:00:00)
      • endDate(省略可):指定日時までのイベントを絞り込む ISO 形式の終了日時(例:2025-04-20T23:59:59)
      • maxResults(省略可):返すイベントの最大数
    • 返される内容:基本情報と ID を含むカレンダーイベントの一覧
  6. delete-event

    • カレンダーイベントを削除します
    • 入力:
      • eventId(文字列):削除するイベントの ID
    • 返される内容:イベント削除の確認
  7. update-event

    • 既存のカレンダーイベントを更新します
    • 入力:
      • eventId(文字列):更新するイベントの ID
      • subject(省略可):カレンダーイベントの新しい件名
      • body(省略可):カレンダーイベントの新しい内容/本文
      • start(省略可):ISO 形式の新しい開始時刻(例:2025-04-20T12:00:00)
      • end(省略可):ISO 形式の新しい終了時刻(例:2025-04-20T13:00:00)
      • timeZone(省略可):イベントの新しいタイムゾーン
      • location(省略可):イベントの新しい場所
      • attendees(省略可):{ email, name(省略可), type(省略可)} の配列
    • 返される内容:変更内容を示す更新後のイベント詳細
  8. update-event-attendees

    • カレンダーイベントの参加者を追加または削除します
    • 入力:
      • eventId(文字列):更新するイベントの ID
      • addAttendees(省略可):追加する参加者の配列:{ email, name(省略可), type(省略可)}
      • removeAttendees(省略可):イベントから削除するメールアドレスの配列
    • 返される内容:更新後のイベント参加者情報

セットアップ

認証モード

この MCP サーバーは、次の 3 つの認証モードに対応しています。

1. 対話型(委任)

Lokka に感謝します

最適な用途:ユーザーの代理として操作する場合、ユーザー固有のデータにアクセスする場合

  • ユーザーに対話形式でのログインを求めます
  • 委任されたアクセス許可を使用します
  • サインイン済みのユーザーとして認証します
2. クライアント資格情報(アプリ専用)

最適な用途:サーバー間のシナリオ、自動化されたプロセス

  • Azure AD アプリケーションの資格情報を使用します
  • アプリケーションのアクセス許可が必要です
  • ユーザーの操作なしで動作します
3. クライアント提供トークン

最適な用途:カスタムトークン管理、事前取得済みトークン

  • クライアントから提供されたトークンを使用します
  • トークンの更新を外部で管理する必要があります
Microsoft Graph API のセットアップ
インタラクティブ(委任)モードの場合
  1. Microsoft Azure Portal でアプリケーションを登録します(または既存のアプリを使用します)。
  2. リダイレクト URI を追加します:http://localhost(モバイルおよびデスクトップ アプリケーション プラットフォーム)
  3. パブリック クライアント フローを有効にする:[認証]>[詳細設定]>「パブリック クライアント フローを許可する」= はい
  4. 必要な委任されたアクセス許可を付与します:Microsoft Graph API > 委任されたアクセス許可 > Calendars.ReadWrite、People.Read、User.Read
  5. クライアント ID とテナント ID を控えます(カスタムアプリでインタラクティブモードを使用する場合、クライアントシークレットは不要です)。

**注:**サーバーはデフォルトで組み込みのマルチテナントアプリを使用するため、カスタムアプリの設定は任意です。認証が必要になると、デバイスコードとログイン URL が MCP クライアントのチャットインターフェースに直接表示されます。

クライアント資格情報(アプリのみ)モードの場合
  1. Microsoft Azure Portal でアプリケーションを登録します。
  2. クライアントシークレットを作成します。
  3. 必要なアプリケーションのアクセス許可を付与します:Microsoft Graph API > アプリケーションのアクセス許可 > Calendars.ReadWrite、People.Read.All、User.ReadBasic.All
  4. 組織の管理者の同意を付与します。
  5. クライアント ID、クライアントシークレット、テナント ID を控えます。
VS Code での使用方法
認証モードの設定

MCP サーバーでは、AUTH_MODE 環境変数を使用して、さまざまな認証モードを設定できます。

  • interactive(デフォルト)- ブラウザーまたはデバイスコードフローによるユーザー認証
  • client_credentials - クライアントシークレットを使用したアプリのみの認証
  • client_provided_token - 事前に取得したトークンを使用

後方互換性:AUTH_MODE が指定されていない場合、サーバーはモードを自動的に検出します。

  • CLIENT_SECRET がある場合 → client_credentials モード
  • ACCESS_TOKEN がある場合 → client_provided_token モード
  • どちらもない場合 → interactive モード(デフォルト)
ローカルの Node.js

ローカルビルドから Node.js を使用して、MCP サーバーを直接実行できます。

  1. リポジトリをクローンし、プロジェクトをビルドします。
git clone https://github.com/anoopt/outlook-meetings-scheduler-mcp-server.git
cd outlook-meetings-scheduler-mcp-server
npm install
npm run build
  1. 手動でインストールする場合は、次の JSON ブロックを VS Code のユーザー設定(JSON)ファイルに追加します。Ctrl + Shift + P を押して「Preferences: Open User Settings (JSON)」と入力すると追加できます。

任意で、ワークスペース内の .vscode/mcp.json というファイルに追加することもできます。これにより、設定をほかのユーザーと共有できます。

インタラクティブモード(デフォルト - 設定不要):

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ]
    }
  }
}

カスタムアプリを使用するインタラクティブモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ],
      "env": {
        "AUTH_MODE": "interactive",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TENANT_ID": "<YOUR_TENANT_ID>"
      }
    }
  }
}

クライアント資格情報モード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ],
      "env": {
        "AUTH_MODE": "client_credentials",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

クライアント提供トークンモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ],
      "env": {
        "AUTH_MODE": "client_provided_token",
        "ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>",
        "TOKEN_EXPIRES_ON": "2025-10-03T12:00:00Z",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

注:

  • 組み込みのマルチテナント Azure AD アプリを使用します(すべての組織で利用できます)。
  • USER_EMAIL はサインイン中のユーザーから自動的に判定されます。
  • ユーザーには初回のみ同意を求めるプロンプトが表示されます(管理者の承認は不要です)。
  • 設定は不要で、すぐに使用できます。

カスタムアプリを使用するインタラクティブモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ],
      "env": {
        "AUTH_MODE": "interactive",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TENANT_ID": "<YOUR_TENANT_ID>"
      }
    }
  }
}

ブランディングの指定やテナントの制限が必要な場合は、カスタムアプリを使用してください。

/path/to/outlook-meetings-scheduler-mcp-server を、クローンしたリポジトリの絶対パスに置き換えてください。

Docker

Docker を使用して、MCP サーバーをローカルで実行します。次のコマンドで Docker イメージをビルドします。

docker build -t mcp/outlook-meetings-scheduler .

手動でインストールする場合は、次の JSON ブロックを VS Code のユーザー設定(JSON)ファイルに追加します。Ctrl + Shift + P を押して「Preferences: Open User Settings (JSON)」と入力すると追加できます。

任意で、ワークスペース内の .vscode/mcp.json というファイルに追加することもできます。これにより、設定をほかのユーザーと共有できます。

{
     "inputs": [
      {
        "type": "promptString",
        "id": "client_secret",
        "description": "Enter the client secret",
        "password": true
      }
    ],
    "servers": {
        "outlook-meetings-scheduler": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "CLIENT_ID",
                "-e",
                "CLIENT_SECRET",
                "-e",
                "TENANT_ID",
                "-e",
                "USER_EMAIL",
                "mcp/outlook-meetings-scheduler"
            ],
            "env": {
                "USER_EMAIL": "<YOUR_EMAIL>",
                "CLIENT_ID": "<YOUR_CLIENT_ID>",
                "CLIENT_SECRET": "${input:client_secret}",
                "TENANT_ID": "<YOUR_TENANT_ID>"
            }
        }
    }
}
NPX

インタラクティブモード(デフォルト - 設定不要):

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ]
    }
  }
}

カスタムアプリを使用するインタラクティブモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "interactive",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TENANT_ID": "<YOUR_TENANT_ID>"
      }
    }
  }
}

クライアント資格情報モード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "client_credentials",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

クライアント提供トークンモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "client_provided_token",
        "ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>",
        "TOKEN_EXPIRES_ON": "2025-10-03T12:00:00Z",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}
Claude Desktop での使用方法
Docker
  1. Docker を使用して、MCP サーバーをローカルで実行します。次のコマンドで Docker イメージをビルドします。
docker build -t mcp/outlook-meetings-scheduler .
  1. claude_desktop_config.json に次の内容を追加します。
{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CLIENT_ID",
        "-e",
        "CLIENT_SECRET",
        "-e",
        "TENANT_ID",
        "-e",
        "USER_EMAIL",
        "mcp/outlook-meetings-scheduler"
      ],
      "env": {
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}
NPX

インタラクティブモード(デフォルト・設定不要):

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ]
    }
  }
}

カスタムアプリを使用するインタラクティブモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "interactive",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TENANT_ID": "<YOUR_TENANT_ID>"
      }
    }
  }
}

クライアント資格情報モード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "client_credentials",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

クライアント提供トークンモード:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "AUTH_MODE": "client_provided_token",
        "ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>",
        "TOKEN_EXPIRES_ON": "2025-10-03T12:00:00Z",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

使用例

GitHub MCP サーバーとの連携

この MCP サーバーは、GitHub MCP サーバーなどの他の MCP サーバーと組み合わせて、強力なワークフローを実現できます。

Issue の作成とフォローアップレビューのスケジュール設定
Create an issue in the organization/repo repository titled "Fix pagination bug in user dashboard" with the description "Users report seeing duplicate entries when navigating between pages." Then schedule a calendar reminder for me to review this issue tomorrow at 3 PM.

次の処理を行います。

  1. GitHub MCP サーバーを使用して Issue を作成します
  2. Outlook Meetings Scheduler MCP サーバーを使用して、レビューのカレンダーイベントを作成します
Pull Request に基づくコードレビュー会議のスケジュール設定
Find the open PR about the authentication feature in the organization/app-backend repository and schedule a code review meeting with the contributors for tomorrow morning.

次の処理を行います。

  1. GitHub MCP サーバーを使用して Pull Request を検索し、コントリビューターを特定します
  2. Outlook Meetings Scheduler MCP サーバーを使用して、該当するチームメンバーとの会議をスケジュールします

複数の MCP サーバーを使用する場合の設定

GitHub と Outlook の MCP サーバーを併用するには:

{
  "mcpServers": {
    "outlook-meetings-scheduler": {
      "command": "npx",
      "args": [
        "-y",
        "outlook-meetings-scheduler"
      ],
      "env": {
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "<YOUR_EMAIL>"
      }
    },
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/github-mcp"
      ],
      "env": {
        "GITHUB_TOKEN": "<YOUR_GITHUB_TOKEN>"
      }
    }
  }
}
直接使用
同僚のメールアドレスを検索する
I need to schedule a meeting with John Smith. Can you find his email address?
シンプルなカレンダーイベントを作成する
Schedule a meeting titled "Weekly Team Sync" for next Monday at 10 AM with the following agenda:
- Project updates
- Resource allocation
- Questions and concerns
参加者 1 人との会議をスケジュールする
Schedule a 1:1 meeting with Sarah for tomorrow at 3 PM.

この操作では、Sarah のメールアドレスを検索し、カレンダーイベントを作成します。 Sarah のメールアドレスを検索するために、MCP サーバーは find-person ツールを使用します。このツールは Microsoft Graph API を使用して USER_EMAIL に関連する人物を検索するか、組織内で名前を検索します。

複数の参加者との会議をスケジュールする
Create a meeting called "Project Kickoff" for tomorrow at 2 PM. 
Add [email protected] and [email protected] as required attendees.
The agenda is:
1. Project overview
2. Timeline discussion
3. Role assignments
4. Next steps

環境変数

インタラクティブモード(デフォルト)
変数説明必須デフォルト
AUTH_MODE認証モードいいえinteractive
CLIENT_IDAzure AD アプリケーション(クライアント)IDいいえ組み込みのマルチテナントアプリ
TENANT_IDAzure AD テナント IDいいえcommon(マルチテナント)
USER_EMAILユーザーのメールアドレスいいえサインイン中のユーザーから自動検出
REDIRECT_URIカスタムリダイレクト URIいいえhttp://localhost
クライアント資格情報モード
変数説明必須
AUTH_MODE認証モードはい
CLIENT_IDAzure AD アプリケーション(クライアント)IDはい
CLIENT_SECRETAzure AD アプリケーションのクライアントシークレットはい
TENANT_IDAzure AD テナント IDはい
USER_EMAILアクセスするカレンダーの所有者のメールアドレスはい
クライアント提供トークンモード
変数説明必須デフォルト
AUTH_MODE認証モードはい-
ACCESS_TOKEN事前に取得したアクセストークンはい-
USER_EMAILユーザーのメールアドレスはい-
TOKEN_EXPIRES_ONトークンの有効期限(ISO 形式)いいえ開始時刻から 1 時間後
アクセストークンの取得方法

アクセストークンは、いくつかの方法で取得できます。

1. Azure CLI(Microsoft Graph 用・テストに推奨):

# Login to Azure
az login

# Get token specifically for Microsoft Graph with correct scopes
az account get-access-token --resource=https://graph.microsoft.com --query accessToken --output tsv

注: Azure CLI のトークンには広範な権限が付与されますが、特定のカレンダースコープ(Calendars.ReadWrite)が含まれない場合があります。本番環境では、明示的にスコープを設定した以下の方法 3 または 4 を検討してください。

2. PowerShell REST API(Windows に推奨):

# For client credentials flow (app-only) - most reliable method
$clientId = "your-client-id"
$clientSecret = "your-client-secret" 
$tenantId = "your-tenant-id"

$body = @{
    grant_type = "client_credentials"
    client_id = $clientId
    client_secret = $clientSecret
    scope = "https://graph.microsoft.com/.default"
}

$response = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" -Method Post -Body $body
$token = $response.access_token
Write-Host "Access Token: $token"

3. 独自のアプリケーションから取得(最も信頼性の高い方法):

// Using @azure/identity with specific scopes
import { ClientSecretCredential } from '@azure/identity';

const credential = new ClientSecretCredential(
  'your-tenant-id',
  'your-client-id', 
  'your-client-secret'
);

// Request token with specific Microsoft Graph scopes
const token = await credential.getToken([
  'https://graph.microsoft.com/Calendars.ReadWrite',
  'https://graph.microsoft.com/People.Read', 
  'https://graph.microsoft.com/User.Read'
]);

// Use token.token as your ACCESS_TOKEN
console.log(token.token);

4. OAuth2 デバイスコードフローを使用(インタラクティブ):

# For personal Microsoft accounts or when you need user consent
curl -X POST \
  https://login.microsoftonline.com/common/oauth2/v2.0/devicecode \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'client_id={your-client-id}&scope=https://graph.microsoft.com/Calendars.ReadWrite https://graph.microsoft.com/People.Read https://graph.microsoft.com/User.Read'

# Follow the device code instructions, then exchange for token
curl -X POST \
  https://login.microsoftonline.com/common/oauth2/v2.0/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=urn:ietf:params:oauth:grant-type:device_code&client_id={your-client-id}&device_code={device-code-from-step-1}'

5. クライアント資格情報フロー(アプリ専用):

curl -X POST \
  https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=client_credentials&client_id={client-id}&client_secret={client-secret}&scope=https://graph.microsoft.com/.default'

重要: Azure AD アプリの登録に、必要な委任またはアプリケーションのアクセス許可が設定されていることを確認してください。

  • 委任:Calendars.ReadWrite、People.Read、User.Read
  • アプリケーション:Calendars.ReadWrite、People.Read.All、User.ReadBasic.All(管理者の同意が必要)
認証モードの詳細
client_credentials
  • 最適な用途: 自動化されたシナリオ、サーバー間通信
  • 必要なもの: CLIENT_ID、CLIENT_SECRET、TENANT_ID、USER_EMAIL
  • 権限: アプリケーションのアクセス許可(例:Calendars.ReadWrite)
  • 注: アプリケーションに対する管理者の同意が必要です
interactive(デフォルト)
  • 最適な用途: ユーザーの代理として操作するシナリオ、委任されたアクセス(最も一般的なユースケース)
  • セットアップ: 設定は不要で、そのまま使用できます
  • 必要なもの: ありません(組み込みのマルチテナントアプリを使用)
  • 任意: カスタムアプリを使用する場合は CLIENT_ID と TENANT_ID
  • 権限: 委任されたアクセス許可(例:Calendars.ReadWrite)
  • 認証フロー:
    • まずブラウザーでの対話型ログインを試みます
    • ブラウザー認証に失敗した場合は、デバイスコードフローにフォールバックします
    • デバイスコードと URL は MCP クライアントのチャットに表示されるため、簡単にアクセスできます
    • ブラウザーでの認証を求められます
  • 注: 組み込みのマルチテナントアプリを使用します(どの組織でも動作します)
client_provided_token
  • 最適な用途: カスタムトークン管理、既存の認証システムとの統合
  • 必要なもの: ACCESS_TOKEN、USER_EMAIL
  • 任意: TOKEN_EXPIRES_ON(指定されていない場合、開始時刻から1時間有効と見なします)
  • トークンの取得元: Microsoft Graph PowerShell、カスタムアプリケーション、OAuth2 フロー、Azure CLI(制限あり)
  • ユースケース: 特定のスコープを指定したテスト、既存の認証フローとの統合、CI/CD パイプライン、開発/デバッグ
  • 注: トークンの更新は外部で処理する必要があります

ビルド

# Install dependencies
npm install

# Build the project
npm run build

# Docker build
docker build -t mcp/outlook-meetings-scheduler .

ライセンス

この MCP サーバーは ISC ライセンスの下でライセンスされています。詳細については、プロジェクトリポジトリ内の LICENSE ファイルを参照してください。

免責事項

この MCP サーバーは Microsoft または Microsoft Graph API とは提携していません。ご自身の責任でご使用ください。このツールを使用する際は、組織のポリシーとガイドラインを遵守してください。

コメント

MCP は初めてですか?

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

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