Skip to main content
Glama

useful-outlook-mcp

適切なOAuth2とエージェント向けに最適化されたツールを備えた、Microsoft Outlook用のリモートMCPサーバー。

機能

  • 仕様準拠: RFC 9728/8414 OAuthメタデータ、RFC 7591動的クライアント登録

  • ステートレスOAuth: トークンはサーバーではなくクライアントが管理します—OAuthの意図どおり

  • エージェント最適化ツール: ツールの説明における広範なプロンプトエンジニアリング

  • 動的スコープ: OAuthスコープは有効なツールに自動調整されます

  • 本番対応: Docker、レート制限、読み取り専用モード、ツールフィルタリング

Related MCP server: M365 MCP Server

クイックスタート

npm install
npm run build
npm start  # Server at http://localhost:3000

必要な環境:

MS365_MCP_CLIENT_ID=your-azure-ad-client-id
MS365_MCP_CLIENT_SECRET=your-azure-ad-client-secret
MS365_MCP_TENANT_ID=your-tenant-id  # or 'common'

Azure ADのセットアップ

  1. Azure Portal → Microsoft Entra ID → アプリの登録 → 新規登録

  2. 委任されたアクセス許可を追加: User.Read, Mail.Read, Mail.ReadWrite, Mail.Send, Calendars.Read, Calendars.ReadWrite, Calendars.Read.Shared, Place.Read.All, People.Read, offline_access

  3. リダイレクトURIを追加: http://localhost:6274/oauth/callback(MCP Inspector用)

  4. 証明書とシークレット → 新しいクライアント シークレット → 値をコピー

  5. Client ID、Client Secret、Tenant IDを.envにコピーします

ツール

メール

list-mail-folders · list-mail-messages · search-mail · get-mail-message · send-mail · create-draft-mail · reply-mail · reply-all-mail · create-reply-draft · create-reply-all-draft · delete-mail-message · move-mail-message

カレンダー

list-calendars · list-calendar-events · search-calendar-events · find-meeting-times · get-calendar-event · get-calendar-view · create-calendar-event · update-calendar-event · delete-calendar-event

連絡先

lookup-contact-emal

会議室の検索

対面会議の場合、find-meeting-timesは自動的に:

  • 組織全体で利用可能なすべての会議室を取得します

  • 出席者とともに空き状況の確認対象に含めます

  • 空き会議室を場所(都市/建物)ごとにグループ化します

  • 予約用のメールアドレスを持つ利用可能な会議室のみを返します

isOnlineMeeting: falseを設定すると、会議室の検索が有効になります。オンライン会議(デフォルト: true)の場合、Teamsの会議リンクが自動的に生成されます。

必要なスコープ: Place.Read.All(Azure ADアプリのアクセス許可に追加)

設定

変数

デフォルト

説明

MS365_MCP_CLIENT_ID

必須

Azure ADクライアントID

MS365_MCP_CLIENT_SECRET

-

クライアントシークレット(オプション)

MS365_MCP_TENANT_ID

common

テナントID

MS365_MCP_PORT

3000

サーバーポート

MS365_MCP_READ_ONLY_MODE

false

書き込み操作を無効化

MS365_MCP_ENABLED_TOOLS

すべて

カンマ区切りのツール許可リスト

MS365_MCP_CORS_ORIGIN

*

CORSオリジン

MS365_MCP_RATE_LIMIT_REQUESTS

30

ウィンドウあたりのリクエスト数

MS365_MCP_RATE_LIMIT_WINDOW_MS

60000

ウィンドウサイズ(ms)

MS365_MCP_ALLOWED_TENANTS

-

特定のテナントに制限

Docker

GitHub Container Registryから:

docker run -p 3000:3000 \
  -e MS365_MCP_CLIENT_ID=xxx \
  -e MS365_MCP_CLIENT_SECRET=xxx \
  -e MS365_MCP_TENANT_ID=xxx \
  ghcr.io/Leonine-Studios/useful-outlook-mcp:latest

またはローカルでビルド:

docker build -t useful-outlook-mcp .
docker run -p 3000:3000 \
  -e MS365_MCP_CLIENT_ID=xxx \
  -e MS365_MCP_CLIENT_SECRET=xxx \
  -e MS365_MCP_TENANT_ID=xxx \
  useful-outlook-mcp

エンドポイント

エンドポイント

説明

POST /mcp

MCPプロトコル

GET /health

ヘルスチェック

GET /.well-known/oauth-protected-resource

RFC 9728

GET /.well-known/oauth-authorization-server

RFC 8414

GET /authorize

OAuth(Microsoftへのプロキシ)

POST /token

トークン交換(Microsoftへのプロキシ)

POST /register

動的クライアント登録

テスト

npm run dev
npx @modelcontextprotocol/inspector  # Connect to http://localhost:3000/mcp

設計ノート

既存サーバーの問題点

  1. レガシーアーキテクチャ: HTTPを後付けたstdioとして構築されています。本サーバーはHTTPネイティブです。

  2. 誤ったOAuth実装: ほとんどのサーバーはトークンをサーバー側に保存します。本サーバーはステートレスです—トークンはAuthorizationヘッダーでリクエストごとに渡され、保存されることはありません。

  3. 考慮を欠いたツール: 一般的なサーバーはAPIエンドポイントをガイダンスなしに1:1でマッピングします。エージェントはAPIの癖や複数ステップのワークフローを知らないため、実際の使用で失敗します。

何が違うのか

すべてのツールには以下が含まれます:

  • いつ使用するか、代替手段との比較

  • 既知のGraph APIの癖(多数あります)

  • 複数ステップのタスクのためのワークフローガイダンス

  • 失敗するパラメータの組み合わせ

例: find-meeting-timesは、メールアドレスが必要であること(名前では機能しない)、search-mailを使用して名前からメールアドレスを検索する方法、OrganizerUnavailableの意味、そしてisOrganizerOptional=trueにはユーザーの確認が必要であることを説明しています。

既知のGraph APIの癖

  • メール送信者のフィルタリング: from/emalAddress/addressに対するeqは信頼できません—startswith()を使用します

  • メール受信者のフィルタリング: $filterではto/cc/bccをフィルタリングできません—$searchを使用する必要があります

  • カレンダー開催者のフィルタリング: 開催者のメールに対する$filterは500を返します—クライアント側でフィルタリングされます

  • 並行処理: 並列呼び出しはMailboxConcurrencyエラーを返すことがあります

  • 検索 + 並び替え: $searchは$orderbyと組み合わせることができません

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    MCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.
    71
    796 PyPI
    41
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for sending and managing Microsoft Outlook email via the Microsoft Graph API, including drafts, replies, contacts, and directory search.
    89 npm
    MIT