JBAssist - Microsoft Graph MCP Server について
JBAssist は Claude Desktop と Microsoft Graph を接続し、Microsoft 365 ユーザーのプロフィール、メール、予定表、組織情報を扱います。プレゼンス、Teams の活動、組織上の関係、条件付きユーザー検索などのベータ API 機能も備えています。
主な機能
- 01プロフィール、メール、予定表の取得
- 02組織内ユーザーの検索
- 03拡張プロフィールのベータ API 対応
- 04上司と直属の部下の照会
- 05プレゼンスと Teams 情報の取得
- 06スキル、部門、役職によるユーザー絞り込み
活用シーン
- 01最近の受信メールを確認
- 02今後の予定を確認
- 03役職やスキルで同僚を検索
- 04報告関係と在席状況を把握
MCP 対応
MCP サーバーとして Microsoft Graph の標準 API とベータ API の操作をツール化し、Claude Desktop に提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
JBAssist - Microsoft Graph MCP サーバー
Claude Desktop を Microsoft Graph API に接続する、Windows 対応の Model Context Protocol(MCP)サーバー実装です。
概要
このプロジェクトは、Claude が Microsoft Graph API を通じて Microsoft 365 サービスを利用できる、シンプルな MCP サーバーを提供します。このサーバーには、標準およびベータ版の Graph API 機能にアクセスするためのさまざまなツールが用意されています。
標準 API ツール
- get-profile:現在のユーザーのプロフィール情報を取得します
- get-emails:ユーザーの受信トレイから最近のメールを取得します
- get-calendar-events:指定した日数分の今後のカレンダーイベントを取得します
- search-users:組織内のユーザーを検索します
ベータ版 API ツール(拡張ユーザー機能)
- get-enhanced-profile:スキル、関心事項、学校などを含む、詳細なユーザープロフィール情報を取得します
- get-direct-reports:ユーザーの直属の部下に関する詳細情報を取得します
- get-manager:ユーザーの上司の情報を取得します
- get-presence:ユーザーのプレゼンス情報(対応可能状況)を取得します
- get-teamwork:ユーザーの Microsoft Teams およびチームワークのアクティビティを取得します
- advanced-user-search:スキル、部署、役職で高度な絞り込みを行い、ユーザーを検索します
前提条件
- Node.js バージョン 18 以降
- MCP をサポートする Claude Desktop
- Windows 10 または 11
- 適切な権限を持つ Microsoft 365 アカウント
- 適切な権限を持つ Azure AD アプリ登録
セットアップ
1. Azure AD アプリ登録を作成する
- Azure Portal にアクセスし、Azure Active Directory に移動します
- 「App registrations」を選択し、「New registration」をクリックします
- アプリケーションの名前(例:「JBAssist」)を入力します
- サポートされているアカウントの種類として「Accounts in this organizational directory only」を選択します
- 「Register」をクリックします
- 「Application (client) ID」と「Directory (tenant) ID」の値を控えます
- 「Certificates & secrets」で新しいクライアントシークレットを作成し、その値を控えます
2. API 権限を構成する
- アプリ登録で「API permissions」に移動します
- 「Add a permission」をクリックし、「Microsoft Graph」を選択します
- 「Application permissions」(デーモン/サービスからアクセスする場合)または「Delegated permissions」(ユーザーとしてアクセスする場合)を選択します
- 次の権限を追加します:
- User.Read
- Mail.Read
- Calendars.Read
- User.Read.All(ユーザー検索用)
- Presence.Read.All(プレゼンス情報用)
- TeamMember.Read.All(Teams 情報用)
- 「Add permissions」をクリックします
- 「Grant admin consent for [your organization]」をクリックします
3. リポジトリをクローンして構成する
-
このリポジトリをクローンします:
git clone https://github.com/JBAgent/JBAssist.git cd JBAssist -
.env.exampleテンプレートを基に.envファイルを作成します:cp .env.example .env -
Azure AD アプリの詳細を
.envファイルに記入します:TENANT_ID=your-tenant-id CLIENT_ID=your-client-id CLIENT_SECRET=your-client-secret SCOPES=User.Read,Mail.Read,Calendars.Read,User.Read.All,Presence.Read.All,TeamMember.Read.All -
依存関係をインストールします:
npm install -
プロジェクトをビルドします:
npm run build
Claude Desktop で Microsoft Graph サーバーを実行する
-
まず、Claude Desktop を起動します
-
次のいずれかの方法でサーバーを実行します:
-
PowerShell:
.\run-graph-server.ps1 -
コマンドプロンプト:
run-graph-server.bat -
または、Node.js から直接実行します:
npm start
-
-
Claude Desktop の右上にあるパズルピースアイコン(🧩)をクリックして、MCP サーバー選択画面を開きます
-
「Add MCP Server」を選択し、サーバー名を尋ねられたら
msgraphと入力します -
Microsoft Graph サーバーが正常に接続されたことを示す確認メッセージが表示されます
Microsoft Graph ツールの使用
接続したら、自然な言葉で Claude に MS Graph ツールの使用を依頼できます。たとえば:
標準 API の例
- 「プロフィール情報を表示してもらえますか?」
- 「最近のメールを教えてください」
- 「来週のカレンダーイベントを表示してください」
- 「John という名前のユーザーを検索してもらえますか?」
ベータ API の例
- 「スキルや関心を含む、拡張された自分のプロフィールを取得してください。」
- 「私の直属の部下は誰ですか?」
- 「私の上司は誰ですか?」
- 「現在のプレゼンス状態は何ですか?」
- 「Teams の情報を表示してください。」
- 「SQL スキルを持つマーケティング部門のユーザーを検索してください。」
ベータ API の機能
Microsoft Graph のベータ API では、開発中の機能を利用できます。これらの機能は変更される可能性があり、安定していない場合があります。ベータ API では、次の機能を利用できます。
拡張されたユーザープロフィール
ベータ API では、以下を含む、より詳細なユーザープロフィール情報を利用できます。
- スキルと専門知識
- 関心
- 過去のプロジェクト
- 学歴
- 責任
- 自己紹介
- 誕生日
- 優先する言語
- 代替メールアドレス
組織上の関係
- 直属の部下の階層
- 上司の情報
- チームのメンバーシップ
- チームのプレゼンスとステータス
プレゼンス情報
- ユーザーの可用性ステータス
- アクティビティ情報
- ステータスメッセージ
- Teams のプレゼンス情報
高度な検索
- スキルによる検索
- 部門による検索
- 職名による検索
- 複数のフィルターを組み合わせた検索
トラブルシューティング
問題が発生した場合は、以下を確認してください。
-
認証エラー:
.envファイルに記載された Azure AD アプリの資格情報を再確認してください -
アクセス許可エラー:Azure AD アプリに適切なアクセス許可が付与されていることを確認してください
-
接続エラー:Claude Desktop が MCP のアクセス許可を求めたときに、「許可」ボタンをクリックしたことを確認してください
-
ログファイル:詳細なエラー情報については、
graph-server.logファイルを確認してください -
パスの問題:Node.js と npm がシステムの PATH 変数に含まれていることを確認してください
-
Windows でのアクセス許可エラー:コマンドプロンプトまたは PowerShell を管理者として実行してみてください
-
ベータ API エラー:ベータ API のエンドポイントは、変更されたり、ドキュメントの記載とは異なる動作をしたりする場合があることに注意してください
開発
サーバーを変更したり、新しい機能を追加したりするには、以下の手順を行います。
srcディレクトリ内のファイルを編集します- 既存のパターンに従って、
src/index.tsに新しいツールを追加します npm run buildで再ビルドします- サーバーを再起動します
ベータ API の新機能の追加
ベータ API の新機能を追加するときは、以下の手順を行います。
- Microsoft Graph のベータ API ドキュメントを参照します
- ベータ API の呼び出しには
graphBetaClientインスタンスを使用します - ベータ API は変更される場合があるため、十分にテストします
- ベータ機能に適切なエラー処理を追加します
- 制限事項や既知の問題があれば、ドキュメントに記載します
その他の Microsoft Graph エンドポイント
このサーバーは基本的な機能を提供しますが、Microsoft Graph にはさらに多くのエンドポイントがあります。追加できる機能の例を以下に示します。
- OneNote へのアクセス
- SharePoint のドキュメントへのアクセス
- Teams のメッセージへのアクセス
- OneDrive のファイルへのアクセス
- タスク管理
その他のエンドポイントについては、Microsoft Graph のドキュメントを参照してください。
ライセンス
MIT
謝辞
このプロジェクトは、Windows MCP Weather の例をベースに、Microsoft Graph で動作するように変更したものです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。