外部のMCPサーバーが提供するツールを直接 Dify Agent やワークフローで利用できます。既存のDifyプラグインに制限される代わりに、特定の機能を提供する成長している MCP サーバーのエコシステムを活用できます。
この記事では、Dify内でMCPツールを使用する方法を解説します。Difyアプリケーションを MCP サーバーとして公開する方法については、こちらをご覧ください。
現在、HTTPトランスポートをサポートしている MCP サーバーのみが利用可能です。
Difyワークスペースのツール → MCPに移動します。ここでは、アプリケーション用にツールを提供する全ての外部MCPサーバーを管理します。
MCP Server (HTTP)を追加 をクリックして、新しい外部ツールプロバイダーに接続します:
サーバーURL: MCPサーバーのHTTPエンドポイント(例: https://api.notion.com/mcp
はNotionとの統合に用いるためのHTTPエンドポイントです)。
名前とアイコン: 提供されるツールを説明する名前を付けます。Difyは可能な限りサーバーのドメインからアイコンを自動で取得し、自分で選ぶこともできます。
サーバーの識別: Difyがこのサーバーを管理するために使用するユニークなID(小文字、数字、アンダースコア、ハイフン、最大24文字)。
サーバーIDは設計上永久的です。これを変更すると、このサーバーのツールを使用している既存の Agent やワークフローが機能しなくなります。これはアプリケーションのポータビリティにとって重要です。
サーバーを追加した後、Difyは自動的に以下を行います:
Difyが少なくとも1つの使用可能なツールを正常に取得するとサーバーカードが追加されます:
サーバーカードをクリックすると、以下ができます:
ツールの更新: サーバーから入手可能なツールを更新します。外部サービスが新しい機能を追加した場合に使用します。
再認証: 認証ステータスをクリックして権限を更新します。
設定の変更: サーバーの詳細を変更します。
注意: URLの変更は再認証を引き起こし、サーバーIDの変更は既存のアプリケーションを破損させます。
サーバーの削除: サーバーを切断します。そのツールを使用しているアプリケーションは、再接続またはツールを削除するまでエラーが表示されます。
サーバーが設定されると、そのツールは作成時のツール選択インターフェースに表示されます:
Agent ノードや Agent に MCP ツールを追加すると、その動作をカスタマイズできます:
MCPサーバーからのデフォルトの説明をオーバーライドできます。これにより、ユースケースに特化した説明が可能です。
各ツールパラメーターについて、次の選択ができます:
自動: コンテキストに基づいてAIモデルがパラメーター値を決定します(デフォルトの動作)。
固定値: 常に使用される特定の値(静的な値または変数)を設定し、AIの推論からパラメーターを取り除きます。
これは次のような状況で便利です:
numResults: 10
のように)。例えば、Web 検索ツールを使う場合、以下のように設定できます:
query
を「自動」に保ち、AIが何を検索するかを決定します。numResults
を「5」として固定値に設定し、応答サイズを制限します。MCPツールを使用するDifyアプリケーションをエクスポートすると:
DSLエクスポート: エクスポートされたDSLは、MCPサーバーをそのIDで参照します。
環境移行: 他の場所でアプリケーションを使用するには、ターゲット環境に同じMCPサーバーを同一のIDで追加します。
アプリの共有: アプリケーションに依存するMCPサーバーを、URLや必要なサーバーIDを含めて文書化します。
一貫したサーバーID: github-mcpやsalesforce-apiのような説明的で永久的なIDを使用します。一度、アプリケーションが依存し始めたら変更しないでください。
環境の一貫性: 開発、ステージング、プロダクション環境間で同じMCPサーバー構成を維持します。
ツールのカスタマイズ: パラメーター設定を活用し、アプリケーションでツールが一貫して機能するようにします。固定値を設定し、動的な入力をAIに処理させます。
ツールの文書化: アプリケーションで使用している外部ツール、行ったカスタマイズ、及びその機能を文書化します。これにより、チームメンバーがアプリケーションの依存関係を理解しやすくなります。
段階的な更新: 外部サービスがMCPサーバーを更新する際、プロダクション環境での統合を更新する前に開発環境でツールの変更をテストします。
バックアッププラン: 外部MCPサーバーが利用できなくなった場合、アプリケーションがどのように動作するかを考慮します。