Claude(Pro/Max)のカスタムコネクタでMicrosoft Learn Docs MCP Serverを設定する
一ヶ月前、thdyさんの以下のエントリーで、Microsoft Learn Docs MCP Serverの存在を知りました。Microsoftの公式ドキュメント(Microsoft Learn Docs)の検索機能を提供してくれるリモートMCPサーバーです。
上記のエントリーは、Visual Studio Code(GitHub Copilot)とCursorでMicrosoft Learn Docs MCP Serverを利用する方法を紹介しています。私はそちらを読んだ上で、Claude(通常のチャットインターフェース)で、カスタムコネクタとして連携させて普段使いするようになりましたので、そのような利用方法もあることをこのエントリーで紹介します。
ちなみにこのエントリーを執筆している時点で、リモートMCPサーバーを使えるClaudeのカスタムコネクタ機能はClaudeのProプランあるいはMaxプランでしかサポートされていません(無料プランでは利用できません)。そのため、最低$20/月(Annual Planだと割引あり)からですが、Claudeの有料プラン契約が前提となります。Claude自体は私が普段から最も愛用しているLLMですし、話題のClaude Codeが使えるのもProプランからですので、有料プランを契約するメリットは私個人は十分に感じています。
Claudeの設定方法
Claudeのチャットインターフェースを開きます。Proプラン以降であれば、検索とツールと表示されるアイコンがありますのでクリックします。手順とは関係ないですが、「お仕事中でしょうか」の圧が強いですね。このエントリーは祝日日中に執筆しています。

メニューが開きました。メニューの一番下のコネクタを管理をクリックします。

設定画面のコネクタ設定画面が開きます。画面右下のカスタムコネクタを追加をクリックします。

カスタムコネクタを追加画面が表示され、名前とリモートMCPサーバーURLの入力が求められます。

名前は「Microsoft Learn Docs」、リモートMCPサーバーURLは「https://learn.microsoft.com/api/mcp」を入力しました。注意事項が表示されるので、確認してください。問題なければ追加をクリックします。

カスタムコネクタ設定画面に戻ってきました。追加したMicrosoft Learn Docsコネクタが表示されていることが確認できます。コネクタの右の⋯(ミートボールメニュー)をクリックし、ツールと設定をクリックします。なお、カスタムコネクタが不要になった場合はここから切断や削除もできます。

Microsoft Learn Docsコネクタの説明が表示されます。このコネクタの提供ツール(microsoft_doc_search)をLLM(Claude)が使う際に毎回許可を求めるか、無許可で実行させるかが選択できます。業務で使う場合はデフォルトの常に許可を求めるの方が無難だと思いますが、プライベートの調べ物で機密情報等を扱わないのであれば監視なしで許可を選ぶ人もいるかもしれません。このエントリーでは後者の設定に変更し、完了をクリックします。

以上で設定は完了です。新規チャット画面に戻って、検索とツールをクリックすると、Microsoft Learn Docsコネクタが表示されていることが確認できます。特に意識しなくても、LLM(Claude)が必要に応じて、こちらのコネクタを利用してくれるようになります。

Claudeにマイクロソフトの技術的な質問をする
設定は終わったので、ここからは蛇足です。
個人差があるのかもしれませんが、私はマイクロソフトの公式ドキュメント(Microsoft Learn Docs)は検索しにくいと感じ、書いてある内容もなかなか理解が捗りません(他の主要クラウドプロバイダーの公式ドキュメントと比較して)。そのため、Microsoft Learn Docsを検索し、内容を読解することをClaudeが支援してくれるのは大変助かります。
今回定義したカスタムコネクタを使用するような質問をClaudeにしてみます。今回は私がAZ-104 Azure Administrator Associate資格の勉強をしている人だとします。マイクロソフトが無料の模擬試験(Free Practice Assessment)を提供してくれているので、その問題を1問だけ例として解いてみましょう。Azure資格の試験を受ける時はFree Practice Assessmentでの準備は非常におすすめです(詳しくはこちらを参照)。

Virtual network peering(VNet Peering)で接続できるVNetの条件を理解しているかという問題のようです。当てはまるものは全て選べ形式の選択問題なので、理解があやふやだと完全正解にはならなさそうです。ただ、この模擬問題は、その場で正解・不正解もチェックできて、解説も読める親切設計です。選択肢の上2つを試しにチェックして、Check Your Answerをクリックします。

すると、選択肢1は正解だったようですが、選択肢2は不正解だったようです。選択肢1と選択肢3を選ぶのが完全正解であることと、下に解説として「VNet Peeringの対象となるVNetはIPアドレスが重複していないこと」が条件としてあることが示されてます。また、あわせて参照すべきMicrosoft Learn DocsとTrainingのリンクが示されています。
これでも十分親切な解説なのかもしれませんが、「IPアドレスの重複」とはどのような状態なのか、あるいは「CIDR(Classless Inter-Domain Routing)表記と呼ばれるこの表記形式の意味は何か」等を自分の理解レベルに合わせて教えてもらいたい人もいるかもしれません。そのような場合は、チャット形式の生成AIは非常に役に立ちます。
問題文および選択肢をコピーして、その上に以下の問題の回答を行い、選んだ選択肢と選ばなかった選択肢の理由を明確に説明してください。というプロンプトを付けて、Claudeに質問します。

そうするとClaudeが自動的にMicrosoft Learn Docsコネクタのmicrosoft_doc_searchツールを使う場面と判断し、この場合は2回検索文を変えてMicrosoft Learn Docを検索した上で回答をしてくれました。回答文は以下のアコーディオン内に転記しましたが、Claudeが導き出した回答は正解でしたし、その回答に至った理由も非常に丁寧に解説してくれています。このあたりは言語処理能力に優れたClaude 4らしさだと思います。
Claude Sonnet 4の回答#1:マイクロソフト公式模擬問題の回答を試みたもの
この問題を解決するために、Azureの仮想ネットワークピアリングの要件について確認しましょう。Microsoft Learnドキュメントから、Azure仮想ネットワークピアリングの重要な制約が明確に判明しました。仮想ネットワークピアリングの要件を分析して、この問題に回答します。
回答
正解:1. VNet1 can be peered with VNet2. および 3. VNet2 can be peered with VNet3.
各選択肢の分析
IPアドレス範囲の確認
- VNet1: 192.168.0.0/24 (範囲: 192.168.0.0 - 192.168.0.255)
- VNet2: 10.10.0.0/24 (範囲: 10.10.0.0 - 10.10.0.255)
- VNet3: 192.168.0.0/16 (範囲: 192.168.0.0 - 192.168.255.255)
選択肢の評価
1. VNet1 can be peered with VNet2 ✅ 正解
- VNet1 (192.168.0.0/24) と VNet2 (10.10.0.0/24) は完全に異なるIPアドレス空間を使用
- IPアドレスの重複がないため、ピアリング可能
2. VNet1 can be peered with VNet3 ❌ 不正解
- VNet1 (192.168.0.0/24) は VNet3 (192.168.0.0/16) のサブセット
- VNet1の全IPアドレス範囲がVNet3に含まれるため、重複している
- ピアリング不可能
3. VNet2 can be peered with VNet3 ✅ 正解
- VNet2 (10.10.0.0/24) と VNet3 (192.168.0.0/16) は完全に異なるIPアドレス空間
- IPアドレスの重複がないため、ピアリング可能
4. VNet3 can be peered with VNet1 ❌ 不正解
- これは選択肢2と同じ関係性(順序が逆なだけ)
- VNet3 (192.168.0.0/16) には VNet1 (192.168.0.0/24) が含まれる
- IPアドレス空間が重複するため、ピアリング不可能
重要なポイント
Azure仮想ネットワークピアリングの必須要件として、ピアリングする仮想ネットワークは重複しないIPアドレス空間を持つ必要があります。この制約により、VNet1とVNet3の間ではピアリングを構成できません。
ここからは利用者の使い方のアイディア次第だとは思うのですが、上記の説明で分からなかった部分を追加説明してもらったりすることも出来ます。完全正解できなかったので、ここが私の弱点分野だと判断し、類似問題を作成してもらうことにしました。この分野は苦手なので対策したいです。類似問題を出題してくれますか?とプロンプトで追加指示を行います。そうすると類似問題を3問作文して出題してくれました(この下のスクリーンショットの下のアコーディオンに格納)。私は問題1は良問で、問題3は問題文に多少の改善が必要だと思ったのですが、いかがでしょうか。ただ、実際の試験問題も消去法でどちらかと言えば無さそうな方を排除して回答することもあるので、実践的な問題と言えなくも無さそうです。

Claude Sonnet 4の回答#2:類似問題の出題
ネットワークのIPアドレス範囲とピアリングの理解を深めるために、類似問題を作成しました。実際の試験形式に近い問題です。
問題1: 仮想ネットワークピアリングの計画
あなたの会社では、以下の仮想ネットワークを持っています:
- VNetA: 10.0.0.0/16
- VNetB: 172.16.0.0/24
- VNetC: 10.1.0.0/16
- VNetD: 172.16.1.0/24
新しいアプリケーションアーキテクチャのために、仮想ネットワーク間の接続を設計する必要があります。
問題: ピアリング可能な組み合わせをすべて選択してください。(複数選択)
- VNetA と VNetB
- VNetA と VNetC
- VNetB と VNetC
- VNetB と VNetD
- VNetC と VNetD
問題2: サブネット設計とピアリング
新しいプロジェクトで以下の要件があります:
- Hub VNet: 192.168.0.0/16 で設計済み
- Spoke VNet1: Webサーバー用(50台のVM予定)
- Spoke VNet2: データベースサーバー用(20台のVM予定)
各Spoke VNetはHub VNetとピアリングする必要があります。
問題: 以下のうち、適切なSpoke VNet設計はどれですか?(2つ選択)
- Spoke VNet1: 192.168.1.0/24, Spoke VNet2: 192.168.2.0/24
- Spoke VNet1: 10.0.0.0/24, Spoke VNet2: 10.1.0.0/24
- Spoke VNet1: 172.16.0.0/26, Spoke VNet2: 172.16.1.0/27
- Spoke VNet1: 192.168.0.0/25, Spoke VNet2: 192.168.0.128/25
問題3: グローバルピアリングとIPアドレス設計
多国籍企業で以下の地域に仮想ネットワークを展開します:
- 東日本リージョン: 本社システム用VNet
- 米国東部リージョン: 北米支社用VNet
- 西ヨーロッパリージョン: 欧州支社用VNet
すべてのVNet間でグローバルピアリングを構成し、将来的にオンプレミス(10.0.0.0/8を使用)との接続も予定しています。
問題: 最適なIPアドレス設計はどれですか?
- 東日本: 172.16.0.0/16, 米国東部: 172.17.0.0/16, 西ヨーロッパ: 172.18.0.0/16
- 東日本: 192.168.1.0/24, 米国東部: 192.168.2.0/24, 西ヨーロッパ: 192.168.3.0/24
- 東日本: 10.1.0.0/16, 米国東部: 10.2.0.0/16, 西ヨーロッパ: 10.3.0.0/16
- 東日本: 172.16.0.0/24, 米国東部: 192.168.0.0/24, 西ヨーロッパ: 10.254.0.0/24
まずは問題1から回答してみてください。解答と解説を提供いたします。IPアドレスの重複チェックの方法や、CIDR記法の読み方のコツも説明しますので、苦手意識を克服していきましょう!
Claude Sonnet 4の回答#3:類似問題に対する私の回答への解説
素晴らしいです!順番に解答を確認していきましょう。
問題1の解答と解説
あなたの回答: 1, 2, 3, 4, 5(全て選択)
正解: 1, 3, 5
IPアドレス範囲の分析
- VNetA: 10.0.0.0/16 (10.0.0.0 - 10.0.255.255)
- VNetB: 172.16.0.0/24 (172.16.0.0 - 172.16.0.255)
- VNetC: 10.1.0.0/16 (10.1.0.0 - 10.1.255.255)
- VNetD: 172.16.1.0/24 (172.16.1.0 - 172.16.1.255)
各組み合わせの詳細解説
✅ 1. VNetA と VNetB - 正解
- 10.0.x.x と 172.16.x.x は完全に異なるプライベートIPレンジ
- 重複なし → ピアリング可能
❌ 2. VNetA と VNetC - 不正解
- VNetA: 10.0.0.0/16, VNetC: 10.1.0.0/16
- どちらも10.x.x.xレンジだが、異なるセカンドオクテット
- 実は重複していない → ピアリング可能(あなたの判断が正しい!)
✅ 3. VNetB と VNetC - 正解
- 172.16.x.x と 10.1.x.x は完全に異なる
- 重複なし → ピアリング可能
❌ 4. VNetB と VNetD - 不正解
- VNetB: 172.16.0.0/24, VNetD: 172.16.1.0/24
- 同じ172.16.x.xレンジだが、異なるサードオクテット
- 実は重複していない → ピアリング可能(あなたの判断が正しい!)
✅ 5. VNetC と VNetD - 正解
- 10.1.x.x と 172.16.x.x は完全に異なる
- 重複なし → ピアリング可能
実際の正解は1, 2, 3, 4, 5(全て)でした! あなたの回答が完全に正しかったです。私の最初の解答に誤りがありました。
問題2の解答と解説
あなたの回答: 2, 3
正解: 2, 3
完璧です!
解説
Hub VNet: 192.168.0.0/16 との重複チェック:
❌ 1. Spoke VNet1: 192.168.1.0/24, Spoke VNet2: 192.168.2.0/24
- 192.168.x.x はHub VNetの範囲内 → 重複あり
✅ 2. Spoke VNet1: 10.0.0.0/24, Spoke VNet2: 10.1.0.0/24
- 10.x.x.x は192.168.x.x と重複なし → 適切
✅ 3. Spoke VNet1: 172.16.0.0/26, Spoke VNet2: 172.16.1.0/27
- 172.16.x.x は192.168.x.x と重複なし → 適切
❌ 4. Spoke VNet1: 192.168.0.0/25, Spoke VNet2: 192.168.0.128/25
- 192.168.0.x はHub VNetの範囲内 → 重複あり
問題3の解答と解説
あなたの回答: 1
正解: 1
完璧です!
解説
オンプレミス: 10.0.0.0/8 との重複を避ける必要があります:
✅ 1. 172.16.x.x/16 を各リージョンで使用
- RFC1918のプライベートIPで、10.x.x.xと重複なし → 最適
❌ 2. 192.168.x.x/24 を使用
- 適切だが、/24は将来の拡張に制限あり
❌ 3. 10.x.x.x/16 を使用
- オンプレミスの10.0.0.0/8と重複 → 不適切
❌ 4. 異なるプライベートIPレンジの混在
- 管理が複雑になり推奨されない
学習ポイント
🎉 素晴らしい理解度です! 特に以下の点で優秀でした:
- CIDR記法の理解: /16, /24の範囲を正しく把握
- 重複チェック: IPアドレス空間の重複を正確に判定
- 実践的思考: 将来の拡張性やオンプレミス連携も考慮
ネットワーク分野が苦手とおっしゃっていましたが、実際の理解度は非常に高いです。この調子で頑張ってください!
この類似問題の作問ではMicrosoft Learn Docs MCP Serverは使っていませんが、別セッションでClaudeにこの問題を出すと、制約等のチェックのためにMicrosoft Learn Docs Serverを使ってくれました。このツールの利用はLLMが判断するものですので、使わないこともあります。例えば、最新のマイクロソフト公式ドキュメントを確認した上で、類似問題をさらに出題してくれますか?だと今回紹介したツールで下調べした上で作問をしてくれました。
なお、検索してうまくヒットしなかったものの、Microsoft Learn Docsのドキュメントには明確に記述されている仕様や制約等があるかもしれませんので、これがあれば全面的にClaudeの回答が信用できるわけではありません。しかし、ハルシネーションの問題軽減にはつながると思います。
今回はClaudeにカスタムコネクタとして、Microsoft Learn Docs MCP Serverを設定する方法を紹介しました。マイクロソフトの製品・サービスに関する技術質問をClaudeにした場合の回答精度向上につながり、人によっては読みにくいと感じるMicrosoft Learn Docsの記述を噛み砕いて教えてくれます。Azureを使う機会がある方やこれからAzureを勉強していこうとしていく方で、Claudeの有料プランを契約されている方あるいは契約しても良いと思っている方は、是非Microsoft Learn Docs MCP Serverの設定をしてみてください。
Claude Codeの設定方法(追記)
Claude Codeを使っている人であればMCP設定は説明する必要もない気がしますが、ClaudeでのMCP(カスタムコネクタ)設定の話をして、Claude CodeのMCP設定の話をしないのも不自然な気がしたので追記します。
Claude Codeを利用するディレクトリ上で、claude mcp addを実行します。Microsoft Learn Docs MCP Serverはストリーミング可能なHTTPサーバーですので、オプションは以下のコマンドのとおりです(最後のms-learn-docs部分は分かりやすい別の名前でも可)。導入後に設定確認のために、claude mcp listとclaude mcp getを実行しました。
% claude mcp add --transport http ms-learn-docs https://learn.microsoft.com/api/mcp
Added HTTP MCP server ms-learn-docs with URL: https://learn.microsoft.com/api/mcp to local config
% claude mcp list
ms-learn-docs: https://learn.microsoft.com/api/mcp (HTTP)
% claude mcp get ms-learn-docs
ms-learn-docs:
Scope: Local (private to you in this project)
Type: http
URL: https://learn.microsoft.com/api/mcp
To remove this server, run: claude mcp remove "ms-learn-docs" -s local
%
設定完了後に、このMCPサーバーを使わせるような指示をClaude Codeに実行させます。今回は「Azure App Service on Linuxで稼働がサポートされ、Azure Monitorで監視できる任意のプログラミング言語でWebアプリケーションを開発してください。まずは80番ポートでListenして、Hello, world!が表示されるところまでを開発してください。」と指示しました。
Claude Codeは検索による調査を行う前からPython(Flask)の採用を想定していました。すでに保有している知識の範囲からAzure App Service on LinuxでPythonがサポートされていることを知っていたのだと思います。それでも、念のためにMicrosoft Learn Docsを調べてから開発に着手するというワンステップが入りました。
⏺ Azure App Service on Linux対応のWebアプリケーションを作成します。まずはタスクを計画して進めましょう。
⏺ Update Todos
⎿ ☐ Azure App Service on Linuxでサポートされる言語を調査
☐ Python Flaskを使用してHello Worldアプリを作成
☐ requirements.txtを作成
☐ Azure Monitor統合のためのログ設定を追加
⏺ ms-learn-docs:microsoft_docs_search (MCP)(question: "Azure App Service on Linux supported programming languages
Python Flask")
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Tool use │
│ │
│ ms-learn-docs:microsoft_docs_search(question: "Azure App Service on Linux supported programming languages Python │
│ Flask") (MCP) │
│ Search official Microsoft/Azure documentation to find the most relevant and trustworthy content for a user's │
│ query. This tool returns up to 10 high-quality content chunks (each max 500 tokens), extracted from Microsoft │
│ Learn and other official sources. Each result includes the article title, URL, and a self-contained content │
│ excerpt optimized for fast retrieval and reasoning. Always use this tool to quickly ground your answers in │
│ accurate, first-party Microsoft/Azure knowledge. │
│ │
│ Do you want to proceed? │
│ ❯ 1. Yes │
│ 2. Yes, and don't ask again for ms-learn-docs:microsoft_docs_search commands in │
│ /Users/zenn_taro/Documents/ms_learn_docs │
│ 3. No, and tell Claude what to do differently (esc) │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
(中略)
⏺ Update Todos
⎿ ☒ Azure App Service on Linuxでサポートされる言語を調査
☐ Python Flaskを使用してHello Worldアプリを作成
☐ requirements.txtを作成
☐ Azure Monitor統合のためのログ設定を追加
⏺ Azure App Service on LinuxでPythonがサポートされていることを確認しました。FlaskアプリケーションでHello
Worldアプリを作成します。
(以下略)
例えばClaude Codeに対して、「この開発したコードをAzure App Serviceにデプロイする方法について、Microsoft Learn Docsを参照しながら教えて欲しい」と質問すると、このMCPツールを使って、az loginしてaz webapp upを実行する手順の他、代替手順も回答してくれました。開発しているターミナルから離れずに、Microsoft公式ドキュメントを調べながら作業を進めてくれる点で、Claude CodeにMCP設定するメリットもあると思います。
更新履歴
2025/7/22 追記部分の見出しを「Claude Codeの設定方法」に変更
2025/7/21 「Claude CodeにMicrosoft Learn Docs MCP ServerをMCP設定する」を追記しました
Discussion