MCP Server for the Microsoft Graph Api について
Microsoft Graph APIの機能を公開するC#製MCPサーバーです。テナントデータにAIからアクセスしたいユーザー向けで、各国・地域のGraphエンドポイントを設定でき、ClaudeやAzure OpenAI Serviceにデプロイしたモデルからツールを呼び出せます。
主な機能
- 01Entra IDアプリによる認証
- 02複数のGraphクラウドエンドポイント設定
- 03AI向けGraphツールの公開
- 04ClaudeとAzure OpenAIモデルへの対応
活用シーン
- 01AIでMicrosoftテナント情報を照会
- 02米国政府向けや中国向けのGraphクラウドに接続
- 03ClaudeやAzure OpenAIからGraphツールを呼び出す
MCP 対応
Microsoft Graph APIのツールをMCPクライアントに公開します。READMEには、このサーバーに接続するMCPクライアントについての説明もあります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Microsoft Graph API 用 MCP サーバー
C# で実装された、Microsoft Graph API 用の Model Context Protocol(MCP)サーバーです。
前提条件
Entra ID アプリケーション
新しい Entra ID アプリケーションを登録し、少なくとも User.Read.All アプリケーション権限を追加して付与し、新しいクライアントシークレットを作成します。
Microsoft Graph API を介してテナントについて AI に何を質問したいかによって、ほかの権限を付与することもできます。
Claude Desktop アプリ
Claude Desktop アプリを使用していますが、ローカル MCP サーバーを追加できるのであれば、GitHub Copilot を含むほかの MCP クライアントも使用できると思います。
MCP サーバー
ソリューションを開いてビルドします。
MCP サーバーの構成
claude_desktop_config.json ファイルを開きます。Windows では、このファイルは %APPDATA%\Claude\ フォルダーにあります。
MCP サーバーを追加します。args セクションで、プロジェクトフォルダーへのパスを指定します。env セクションで、テナント ID、クライアント ID、クライアントシークレットなど、Entra ID アプリケーションの詳細を設定してください。
既定では Microsoft Graph グローバルサービスが使用されます。NATIONAL_CLOUD 環境変数を変更すると、これを切り替えられます。
NATIONAL_CLOUD に指定できる値は次のとおりです。
- Global: https://graph.microsoft.com - Microsoft Graph グローバルサービス
- US_GOV: https://graph.microsoft.us - 米国政府向け Microsoft Graph L4
- US_GOV_DOD: https://dod-graph.microsoft.us - 米国国防総省(DOD)向け Microsoft Graph L5
- China: https://microsoftgraph.chinacloudapi.cn - 21Vianet が運営する中国向け Microsoft Graph
- Germany: https://graph.microsoft.de - ドイツ向け Microsoft Graph
{
"mcpServers": {
"graphApi": {
"command": "dotnet",
"args": [
"run",
"--project",
"path/to/folder/with/console_project",
"--no-build"
],
"env": {
"TENANT_ID": "<tenant_id>",
"CLIENT_ID": "<client_id>",
"CLIENT_SECRET": "<client_secret>",
"NATIONAL_CLOUD": "Global"
}
}
}
}
MCP サーバーの実行
Claude Desktop アプリを開くと、MCP サーバーが自動的に検出され、実行されます。新しいチャットを開始できます。
Claude Desktop アプリをすでに開いていた場合は、終了(システムトレイから終了)してから、再度開く必要があります。
問題が発生した場合は、%APPDATA%\Claude\logs にあるログを確認できます。
MCP クライアント
MCP クライアントを使うと、MCP サーバーに接続できます。
MCP サーバーが公開するツールは、Claude AI(Anthropic Claude API 経由)または Azure OpenAI Service にデプロイされた任意のモデルから呼び出せます。
AnthropicService.GetAnthropicApiKey() メソッドで Anthropic API キーを設定する必要があります。
private static string GetAnthropicApiKey()
{
return "<anthropic-api-key>";
}
Azure OpenAI Service では、次の設定が必要です。
- API key:
AZURE_OPENAI_API_KEY環境変数を設定するか、AzureOpenAIServiceGetOpenAIApiKey()メソッドでキーを指定します - Azure OpenAI endpoint:
AZURE_OPENAI_ENDPOINT環境変数を設定するか、AzureOpenAIService.GetOpenAIEndpoint()メソッドでエンドポイントを指定します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。