1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyを使ってMCPサーバを利用する経験を積む(Microsoft Learn Docs MCP Server)

Posted at

今後普及していくであろうMCPサーバについて、Difyを通じてMCPサーバを利用するまでをやってみました。
なお、Difyワークフローにてエージェントを利用するため、「AIエージェントでMCPサーバを利用してみた」という感じになります。

image.png

イメージ

・DifyからMCPサーバ(Microsoft Learn Docs MCP Server)に接続して回答結果を得る。
image.png

目次

1.環境および接続先
2.Dify環境準備
  2.1.MCPツールの準備
  2.2.エージェンティック戦略の準備
3.動作確認
  3.1.単純動作確認
  3.2.詳細動作確認
4.回答精度
  4.1.一般的な質問
  4.2.最新情報に関する質問
  4.3.専門的な質問
  4.4.あいまいな質問
最後に
参考

1.環境および接続先

本環境ではローカルマシンを準備し、セルフホスト版Difyを利用しています。

Dify 1.4.2 / セルフホスト
OS Ubuntu 22.04.5 LTS
LLM Azure OpenAI gpt-4o
MCP Server Microsoft Learn Docs MCP Server

Microsoft Learn Docs MCP Serverを利用する意図としては、「登録/課金しなくても利用できる」、「MCPサーバが回答する内容が公開されている(Microsoft Learn)」、「Microsoft提供なのでなんとなく安心」、といったところです。

2.Dify環境準備

Difyのインストール自体は以下の記事を参考にしてください。

AzureにセルフホストしたDifyからAzure OpenAI Serviceにプライベート接続する
4.Difyインストール
https://qiita.com/Higemal/items/d32ac73db6fa67851704#4dify%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB


2.1.MCPツールの準備

MCPサーバに接続するための、Difyツールを準備します。

Difyのツール画面にて、検索ボックスにMCPと入力するとMCP SSE / StreamableHTTPが表示されるので、インストールを行います。
image.png
image.png


続いて、認証を行います。
インストールされたMCP SSE / StreamableHTTPをクリックし、認証するをクリックします。
image.png


認証情報の入力画面に以下を入力します。

{
"server_name": {
"transport": "streamable_http",
"url": "https://learn.microsoft.com/api/mcp",
"headers": {},
"timeout": 50,
"sse_read_timeout": 50
}
}

image.png

Microsoft Learn Docs MCP Serverの説明サイトに、StreambleHTTPを使用するよう記載があるため、transportstreamable_httpとしています。

Note: This endpoint is designed for programmatic access by MCP clients via Streamable HTTP. It does not support direct access from a web browser and may return a 405 Method Not Allowed error if accessed manually.

https://github.com/MicrosoftDocs/mcp


認証済みとなることを確認します。
image.png


2.2.エージェンティック戦略の準備

Difyワークフローを新規作成し、その後エージェントブロックを配置します。
エージェントブロック内のエージェンティック戦略は最初は何もない状態なので、マーケットプレイスでさらに見つけてくださいを押下します。
image.png


マーケットプレイス画面にて、タグ選択でAgentを選択すると、Dify Agent Strategiesが表示されるので、こちらをクリックします。
image.png


インストールに進みます。
ローカルマシン等の場合、マッチ棒みたいなプロパティボタンをクリックし、対象のDifyの接続先URLを入力してsaveをすると、Installをクリック後にに目的のDifyへのインストールが開始されます。
image.png


Difyワークフローに戻り、エージェンティック戦略の選択候補が増えていればインストール成功です。
image.png

2.3.ワークフロー作成

以下のようなシンプルなワークフローを作成します。
開始にはテキスト入力の変数inputを、終了にはエージェントから出力を格納するoutputを指定しておきます。
image.png


肝心のエージェントについては以下のようにしています。
image.png


エージェンティック戦略

FunctionCalling

ReActでも可。ただしReActだとthoughtオプションが入ったりして応答が乱れることあり。


MODEL

gpt-4o

その他LLMでも可能と想定(未確認)。


TOOL LIST

Fetch MCP Tools
Call MCP Tool

両方が必要。
Fetch(list)でMCPサーバのツールリストおよび各ツールの用い方を情報収集。
CallでMCPサーバに対し、どのツールを利用し、そのツールで何をしてほしいかを連携。


INSTRUCTION

以下の質問があります。
{x}input

以下のツールを実行してください。
mcp_sse_list_tools
mcp_sse_call_tools

回答は日本語で作成してください。

TOOL LISTに記載したツールを使用することを明記しているのは、そのほうが動作確認時にMCPサーバを利用しないパターンを抑制できたためです。
回答を日本語で作成しするよう指示しているのは、MCPサーバのレスポンスは英語で返却されるため、英語で結果が出力されてしまうことを回避するためです。


QUERY

{x}input

MCPサーバに問い合わせる内容を記入するところになります。
本件の場合は、入力されたテキストをそのまま渡すこととしています。


MAXIMUM ITERATIONS

5

イテレーション回数ですが、試行のなかでエージェントの動作がほぼ3回で収束したことから+2回の5回としています。

正常時
ROUND1 ツールリストの要求
ROUND2 質問リクエストとレスポンス
ROUND3 レスポンスの日本語化

3.動作確認

3.1.単純動作確認

Difyワークフローを使用した質問と回答は以下のようになります。
image.png

質問
Microsoft Copilot Agentの機能について教えてください
回答
Microsoft Copilot Agentは、MicrosoftのAI技術を活用したエージェントであり、効率的かつ効果的に業務やタスクを補助します。以下はその主な特徴と機能についてです:

1. Microsoft Security Copilot Agents
Microsoft Security Copilot Agentsは、セキュリティとIT運用を支援するAIエージェントです。具体的には以下のことが可能です:
脅威インテリジェンスブリーフィングや条件付きアクセスの最適化など、リソース集約的なタスクの自動化。
ユーザー要求やシステムイベントに反応して効率的に対応。
チームの負荷を軽減し、高い影響力のある業務に集中できる環境を提供。
既存のワークフローと自然に統合され、特別なトレーニングやライセンスを必要としない。
セキュリティチームにおいては効率を向上させ、迅速な脅威への対応を可能にします。
詳細情報はこちら

2. Microsoft 365 Copilot Agents
Microsoft 365 Copilotは、生産性向上を目的としたエージェントで、企業向けの具体的なニーズに応じて以下を提供します:
組織の知識を活用し、業務プロセスの簡略化。
リアルタイムでのデータ取得や更新、ワークフローのトリガー。
Microsoft Graphやその他のデータソースに安全に接続して情報を要約し、洞察を提供。
プリビルト(事前構築済み)エージェントおよびカスタマイズ可能なエージェント:
プリビルトエージェントは即座に導入可能で、カスタマイズして特定の業務ニーズに適応できます。
カスタムエージェントは、プロコードやローコードツールを利用して独自のエージェントを構築可能。
エージェント例:
営業エージェントがDynamicsやSalesforce内でのリード管理を自動化。
帳票提出やカスタマーサポート業務の自動化。
詳細情報はこちら

3. Microsoft Defenderにおけるエージェント
Microsoft Defender内で利用可能なエージェントの例:
Phishing Triage Agent: フィッシングのインシデントを解析し、分類するエージェント。
自動的にユーザーから送信されたメールを解析し、フィッシングか否かを判断。
詳細情報はこちら

4. Microsoft Intuneのエージェント
Microsoft Intune内で利用可能な例には「脆弱性修正エージェント」があります。このエージェントでは以下のことを実現可能です:
セキュリティ脆弱性の優先順位付けとガイド付きの修正。
時間を大幅に短縮し、効率的な脆弱性管理を実現。
詳細情報はこちら

主な利点
自動化: 反復的な業務負荷を削減して、チームが戦略的業務に集中できる環境を提供。
拡張性: 企業の規模や業界に応じたカスタマイズ。
安全性とコンプライアンス: Microsoftのセキュリティプロトコルに準拠。
導入が容易: 直感的なインターフェースとシームレスな統合。
Microsoft Copilot Agentによる効率化とセキュリティ強化は、IT運用およびビジネスプロセスにおいて非常に有益な支援を提供します。

パット見では通常のLLMと同様に見えますが、MCPサーバを利用していることの簡単な見分け方としては、参考情報となるURLが応答に含まれるかどうかです。

ただしMicrosoft Learn Docs MCP Serverを利用した場合に限ります。


3.2.詳細動作確認

ワークフローの実行追跡を利用することでMCPサーバとの応答有無/応答履歴を確認することができます。
MCPサーバを利用せず、LLMが回答を作成するパターンがあるので、アプリリリース前に動作を確認することを推奨します。

3.2.1.MCPサーバに問い合わせないパターン

まずは失敗パターンの確認方法から記載します。
Dify Test Runの実行追跡を表示し、エージェントを展開し、詳細情報をクリックします。
image.png


ROUND1のみ表示される場合は、まずMCPサーバを利用していない可能性が大です。
Action Logsをクリックします。
image.png


GPT-4o THOUGHTのみ存在する場合、MCPサーバに問い合わせず、LLMが直接回答を作成しています。
"MCPサーバを利用する"という観点では失敗となります。
image.png


3.2.2.MCPサーバ応答するパターン

成功パターンについて確認します。
Dify Test Runの実行追跡を表示し、エージェントを展開し、詳細情報をクリックします。
image.png


ROUND1~3が表示されるので、まずはROUND1のAction Logsをクリックします。
image.png


ROUND1の実行として、GPT-4o THOUGHTCALL MCP_SSE_LIST_TOOLSが実行されています。
image.png

同様に確認すると、以下のような状況が確認されます。

ROUND1
GPT-4o THOUGHT MCPサーバのツールリストを要求
CALL MCP_SSE_LIST_TOOLS MCPサーバと通信、ツール一覧およびツールの説明をGet

ROUND2
GPT-4o THOUGHT MCPサーバに回答を要求
CALL MCP_SSE_CALL_TOOLS MCPサーバと通信、使用するツールと質問を投げ、回答を受ける

ROUND3
GPT-4o THOUGHT MCPサーバ回答を日本語化

シーケンス図のようにすると以下のようになると考えています。
image.png

4.回答精度

MCPサーバを利用することが確認できたので、回答内容や回答精度の確認を行います。
以下の観点で質問を作成し、応答を確認します。

・一般的な質問
・最新情報に関する質問
・専門的な質問
・あいまいな質問

先に総合評価を記載します。

質問ケース MCPサーバ利用 通常LLM利用 評価
一般的な質問 MCP利用のほうが参考URLを返すので良い
最新情報に関する質問 × 通常LLMは回答返せないのでMCP一択
専門的な質問 MCP利用のほうが参考URLを返すので良い
あいまいな質問 どちらも推測や一般論を返す

4.1.一般的な質問

質問① Azure VMのSLA
どちらも凡そ正しい回答生成を行い、また以下のURLを添付してくれるところまで結果が同一でした。


質問② Windows Server フェールオーバー クラスタリングにおいて、共有ボリュームに使用可能なファイルシステムを教えてください。
MCPサーバ利用エージェントはMCPサーバに問い合わせを行わず、通常LLM利用と同じような回答を出力しました。内容は凡そ正しかったです。

4.2.最新情報に関する質問

質問③ SQL Server 2025 プレビューの新機能について箇条書きで教えてください
MCPサーバ利用については正しい内容を返すのに対し、通常LLM利用では以下の応答となり結果が得られませんでした。

通常LLM回答
申し訳ありませんが、私の知識は2023年10月で止まっています。そのため、SQL Server 2025のプレビューに関する情報は持っていません。


質問④ Azure AI Servicesの最新機能
MCPサーバ利用については2~3日前の最新情報を返すのに対し、通常LLM利用では以下の応答となり結果が得られませんでした。

通常LLM回答
2023年10月時点でのAzure AI Servicesの最新機能やアップデートには以下のようなものがあります。ただし、この情報はリリース時期や地域によって異なる場合がありますので、公式ドキュメントやアップデート情報を参考にしてください。

4.3.専門的な質問

質問⑤ AzureFirewallはアクティブFTPを使用できるか
MCPサーバは正しい回答(アクティブFTPを利用できる)という回答と参考URLを返すのに対し、通常LLMは誤答(アクティブFTPは使用できない)という回答になりました。
理由こそわかりませんがハルシネーションを起こしています。

MCPサーバ回答
Azure FirewallはアクティブFTPとパッシブFTPの両方をサポートします。ただし、アクティブFTPを使用するにはデフォルトで無効化されているプロパティを明示的に有効化する必要があります。詳細は以下にまとめます。
関連の詳細や制約について理解を深めたい場合は、次の公式ドキュメントを参照してください:
https://learn.microsoft.com/en-us/azure/firewall/ftp-support

通常LLM回答
Azure FirewallはアクティブFTPをサポートしていません。Azure Firewallはプロキシ型のサービスであり、一部のプロトコルに関して制限があります。その中で特に注意すべきなのがFTPプロトコルで、Azure FirewallはパッシブFTPをサポートしていますが、アクティブFTPには対応していないという点です。


質問⑥ .net error 402 Payment Required
通常LLMはHTTPステータスコードに関する一般的な状況を説明するのに対し、MCP利用の場合はMicrosoft.AspNetCore.Http、AzureやMicrosoftAPIの請求エラーに関する可能性や参照リンクを回答しました。
専門的な視点を持っているという点ではMCP利用の方が優れているといえそうです。

4.4.あいまいな質問

質問⑦ AzureVMで最も低コストなタイプ
どちらの回答も同じように、VMのAシリーズやBシリーズ、またspot instanceについての回答を生成しました。MCP側はリンクも回答してくれたので少しだけ優勢といった感触です。


質問⑧ Azureでコンピュートリソースを利用する際の最も低コストかつ簡単に利用開始できるサービス
敢えてサービス名などを挙げずにあいまいな質問を投入をしました。
何回か試しましたがMCPサーバ利用エージェントはMCPサーバへの問い合わせを行わず、どちらの回答も同じような回答を出力しました(AppServiceやFunctionsの説明)。

最後に

本件を通じ、MCPプロトコル(sse/streamble http)の違いがわからず数日躓いたことや、DifyツールとMCPツールの区別がつかずにかなり試行したり、MCPツールをプロンプト等に明記するのかしないのかで未だにわからなかったり、それでもなんとかMCPサーバに接続した回答を得られたりと、かなりの転び/学びを経験することができました。

机上の理解だけで済ましたり、AI要約に頼るばかりではなく、手を動かして理解する重要さをあらためて嚙み締めたように思います。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?