MCPサーバーを使用してツールを統合する¶
モデルコンテキストプロトコル(MCP)は、AIエージェントが外部のシステム、ツール、データソースとやりとりするための標準化されたインターフェイスを提供します。 MCPサーバーを使用してエージェントにツールを提供すると、ツールを直接デプロイする場合に比べていくつかの利点があります。
- ツールの一元管理:すべてのツールが1つのMCPサーバーデプロイで管理されます
- 標準化されたインターフェイス:ツールはMCPプロトコル標準に準拠しているため、さまざまなエージェントフレームワーク間で互換性があります
- 動的なツール登録:ツールは、エージェントを再デプロイせずに追加または変更できます
- 関心の分離を強化:ツールはエージェントとは別にデプロイされるため、個別のスケーリングと更新が可能です。
このガイドでは、DataRobot Agentic Starterのテンプレートで実装されている、MCPサーバーを使用してエージェントワークフローにツールを統合する方法について説明します。 MCPエンドポイントは、Agentic Starterアプリ、DataRobot MCPのテンプレートを使用して構築されたスタンドアロンサーバー、またはDataRobot Global MCPから取得できます。このページでは、エージェントアプリケーションを、デプロイで使用しているMCP URLに接続する方法について説明します。
MCPベースの統合とローカルツールを使用した統合
このドキュメントでは、MCPサーバーベースのツール統合について説明します。 ローカルツール(直接のツールデプロイ)を使用したツール統合の詳細については、エージェントにツールを追加するを参照してください。 Cursor、Claude Desktop、またはVS CodeのMCPクライアント(DataRobot Global MCPおよびデプロイURLを含む)を接続するには、エージェントコーディング環境をMCPサーバーに接続するを参照してください。
概要¶
モデルコンテキストプロトコル(MCP)は、エージェントがツールにアクセスする方法を根本的に変えます。 エージェントのコード内でツールロジックを直接定義する代わりに、スタンドアロンの「ツールサーバー」をデプロイします。次に、エージェントはクライアントとしてこのサーバーに接続し、利用可能なツールを要求して、標準化されたプロトコルを介してそれらを実行します。
DataRobot Agentic Starterテンプレートは、実行時にMCPツールを接続します。LangGraphワークフローは、custompy_adaptor(DRUM)およびregister.py(DRAgent)内のmcp_tools_contextを使用して、graph_factoryへのtools引数としてMCP(およびオプションのワークフロー)ツールを受け取ります。 エージェントコードにMCPサーバーをインポートする必要はありません。
エージェントワークフローでのMCPツールの使用方法に関する詳細については、以下のセクションを参照してください。
MCPアーキテクチャ¶
- エージェント(クライアント):タスクを計画する推論エンジン(例:LangGraphアプリケーション)。 これにはツールのコードは含まれておらず、利用可能なツールをMCPサーバーに問い合わせる方法のみを認識しています。
- MCPサーバー:ツール、リソース、およびプロンプトのロジックをホストするWebサービス。 タスクの実際の実行(例:データベースへのクエリー、外部APIの呼び出し)を処理します。
- プロトコル:基盤となるインフラストラクチャに関係なく、エージェントとMCPサーバーがセキュアに通信できるようにする標準インターフェイス。
統合ワークフロー¶
このアーキテクチャを使用してツールを統合するには、次の大まかなプロセスに従います。
- MCPエンドポイントをデプロイまたは選択する:(DataRobot MCPのテンプレートを使用して)ツールロジックを含むMCPサーバーを作成してデプロイするか、DataRobot Agentic StarterのテンプレートにバンドルされているMCPサーバーを使用するか、環境でDataRobot Global MCPを使用する場合はそのサービスを介して接続します。
- エージェントを接続する:エージェントアプリケーションがMCPサーバーのURLを指すように設定します(デプロイの
directAccessURL、Gateway URL、ローカル開発URLなど)。 - 実行:エージェントは実行時にツールを自動的に検出します。 新しいツールを追加するためにエージェントを再デプロイする必要はありません。MCPサーバーを更新するだけです。
前提条件¶
MCPツールを統合する前に、以下が揃っていることを確認してください。
- アクセス可能なMCPエンドポイント:DataRobot MCPのテンプレートで構築されたサーバー、DataRobot Agentic Starterのテンプレートに含まれるMCPサーバー、またはDataRobot Global MCP(設定によって異なります)。
- DataRobot Agentic Starterのテンプレートに基づいたエージェントワークフロー。
- MCPエンドポイントのURLと認証資格情報(必要な場合)。
スタンドアロンMCPサーバーのデプロイについては、MCPテンプレートのドキュメントを参照してください。 URLのパターン(ローカルポート、デプロイのdirectAccess、Gateway)については、エージェントコーディング環境をMCPサーバーに接続するを参照してください。
MCPサーバーのデプロイ¶
MCPサーバーは、開発用としてローカルにデプロイすることも、本番用としてDataRobotにデプロイすることも可能です。
ローカルデプロイ¶
ローカル開発の場合は、開発コマンドを使用してMCPサーバーを起動します。
cd mcp_server
dr task run mcp_server:dev
MCPサーバーは設定されたポート(デフォルト:9000)で起動し、http://localhost:9000/mcp/でアクセス可能になります。
本番デプロイ¶
MCPサーバーをDataRobotにデプロイするには:
- デプロイ設定を行う:Pulumi設定またはデプロイ設定を更新します。
-
サーバーをデプロイする:デプロイコマンドを使用します。
dr run deploydr task run deployを使用することもできますが、その場合も同等です。 これらのコマンドの詳細については、CLIのtaskおよびrunコマンドを参照してください。 -
デプロイエンドポイントを取得する:デプロイ後、デプロイIDをメモし、MCPエンドポイントURLを構築します。
https://{DATAROBOT_URL}/api/v2/deployments/{DEPLOYMENT_ID}/directAccess/mcp一部の環境では、デプロイごとの
directAccessURLの代わりに、DataRobot Global MCPを使用します。https://{DATAROBOT_URL}/api/v2/genai/globalmcp/mcpGlobal MCP URLがデプロイエンドポイントとどのように連携するかについては、DataRobot Global MCPの使用を参照してください。
-
エージェントを設定する:本番環境のMCPエンドポイント(デプロイで提供されるURL)を使用するようにエージェントの設定を更新します。
デプロイの詳細な手順については、MCPテンプレートのREADMEを参照してください。
MCPサーバー接続の設定¶
エージェントをMCPサーバーに接続するには、エージェントの環境変数または設定でMCPサーバーのエンドポイントと認証を設定する必要があります。
ローカル開発¶
ローカル開発の場合は、.envファイルでMCPサーバー接続を設定します。
# MCP Server Configuration
MCP_SERVER_PORT=9000
MCPサーバーは、デフォルトで次の2つのポートのいずれかを使用します。
- DataRobot MCPのテンプレートを使用してデプロイした場合はポート8080
- DataRobot Agentic Starterのテンプレートを使用してデプロイした場合はポート9000
エージェントを設定するときは、必ず正しいポートを使用してください。
本番環境の設定¶
本番環境にデプロイする場合は、環境変数を使用してMCPサーバーを設定します。 このプロセスはテンプレートによって自動的に処理されます。
MCPサーバー認証
MCPサーバーで認証が必要な場合は、環境にDATAROBOT_API_TOKENが設定されていることを確認してください。MCPクライアントは、認証されたリクエストにこれを自動的に使用します。 HTTP MCPエンドポイントでは、多くの場合、Authorization: Bearerおよびx-datarobot-api-tokenの両方のヘッダーが要求されます。通常、クライアントはDataRobot APIの資格情報からこれらのヘッダーを提供します。 Cursor、Claude Desktop、およびVS Codeにおける同様のヘッダーについては、エージェントコーディング環境をMCPサーバーに接続するを参照してください。
エージェントでのMCPツールの使用¶
現在のDataRobot Agentic Starterテンプレート(LangGraph)では、MCPツールはtoolsリストとしてgraph_factory(llm, tools, verbose)に渡されます。 テンプレートは、MyAgentを呼び出す前に、MCP Discoveryを任意のワークフローツールとマージします。
LangGraphエージェント¶
LangGraphエージェントの場合、tools引数を各create_agentノードにそのまま渡します。
from datarobot_genai.core.agents import make_system_prompt
from langchain.agents import create_agent
def graph_factory(llm, tools, verbose=False):
planner = create_agent(
llm,
tools=tools,
system_prompt=make_system_prompt(
"You are a content planner. Use available tools to gather information and plan content."
),
name="planner_agent",
debug=verbose,
)
...
実行時に、toolsにはmcp_tools_contextを介して解決されたMCPツールが含まれます(テンプレートのcustompy_adaptorおよびregister.pyを参照してください)。 そのフローでは:
- 設定済みのMCPサーバーに接続する
- 利用可能なツールを検出する
- LangChain互換のツールをグラフに公開します
- 必要に応じて、認証ヘッダーと認可コンテキストを適用します
MCPツールとローカルツールの組み合わせ¶
リストを拡張して、graph_factory内にローカルツールを追加します(MCPツールはすでにtoolsにあります)。
from langchain_core.tools import Tool
class DateTimeTool(Tool):
"""Local datetime tool."""
name = "datetime_tool"
description = "Returns the current date and time."
def run(self, query: str = "") -> str:
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def graph_factory(llm, tools, verbose=False):
local_tools = [DateTimeTool()]
all_tools = list(tools) + local_tools
planner = create_agent(
llm,
tools=all_tools,
system_prompt=make_system_prompt("You are a content planner..."),
name="planner_agent",
debug=verbose,
)
...
カスタムMCPツールの作成¶
MCPサーバーにカスタムツールを追加するには、DataRobot MCPのテンプレートを使用します。 このテンプレートは、ツール、リソース、およびプロンプトを作成するための構造化されたアプローチを提供します。
ツールの構造¶
カスタムMCPツールは、@dr_mcp_toolデコレーターを使用して定義されます。
from app.base.core.mcp_instance import dr_mcp_tool
from app.base.core.common import get_sdk_client
@dr_mcp_tool(tags={"custom", "recipe", "your-domain"})
async def my_custom_tool(input_param: str, optional_param: int = 10) -> str:
"""
Brief description of what your tool does.
This description helps LLMs understand when and how to use your tool.
Be specific about the tool's purpose and behavior.
Args:
input_param: Description of the required parameter
optional_param: Description of the optional parameter
Returns:
Description of what the tool returns
"""
# Use the DataRobot SDK client for API operations
client = get_sdk_client()
# Your custom logic here
result = f"Processed {input_param} with {optional_param}"
return result
MCPテンプレートリポジトリ
上記のパスとインポートは、DataRobot MCPのテンプレートリポジトリの構造を参照しています。
ツールのベストプラクティス¶
MCPツールを作成するときは、以下のベストプラクティスに従ってください。
- 明確な説明:詳細なdocstringを提供します。LLMはこれを使用してツールの機能を理解します
- 型ヒント:常にパラメーターと戻り値に型ヒントを使用します
- エラーハンドリング:適切なエラーハンドリングを実装し、意味のあるエラーメッセージを返します
- 非同期関数:パフォーマンスを向上させるために、ツールは非同期関数にする必要があります
- タグ:わかりやすいタグを使用してツールを分類します(ツールのフィルターに役立ちます)
- SDKクライアント:DataRobot APIへのアクセスには
get_sdk_client()を使用します
カスタムMCPツールの作成に関する詳細については、MCPテンプレートのカスタムツールのドキュメントを参照してください。
比較:MCPとToolClient¶
| 特徴量 | MCPサーバー | ToolClient(直接デプロイ) |
|---|---|---|
| ツールの管理 | 1つのサーバーで一元化 | 各ツールを個別にデプロイ |
| プロトコル | MCP標準プロトコル | DataRobotカスタムプロトコル |
| ツール検出 | MCPによる自動検出 | ツールごとの手動設定 |
| 動的な更新 | エージェントを再デプロイせずにツールを追加または変更可能 | 新しいツールのためにエージェントの再デプロイが必要 |
| フレームワークの互換性 | あらゆるMCP互換フレームワークで動作 | DataRobot固有 |
| デプロイの複雑さ | 単一のMCPサーバーのデプロイ | 複数のツールのデプロイ |
| スケーリング | MCPサーバーを個別にスケール | 各ツールを個別にスケール |
以下の場合には、MCPサーバー統合を選択してください。
- ツール管理を一元化したい場合
- 動的なツール登録が必要な場合
- ツールを共有する複数のエージェントを使用している場合
- 標準プロトコルへの準拠を求めている場合
以下の場合には、ToolClient統合を選択してください。
- 個々のツールデプロイに対してきめ細かな制御が必要な場合
- ツールごとにスケーリング要件が大きく異なる場合
- DataRobot固有のツール管理機能を使用したい場合
トラブルシューティング¶
エージェントがMCPサーバーに接続できない¶
症状:エージェントのエラーに、MCP接続の失敗またはツールが利用不可であることが示される。
解決方法:
-
MCPサーバーが実行されていることを確認します。
# For local development curl -i http://localhost:9000/mcp # For production (deployment MCP endpoint) curl -i https://{DATAROBOT_URL}/api/v2/deployments/{DEPLOYMENT_ID}/directAccess/mcp # If your environment uses the DataRobot Global MCP curl -i https://{DATAROBOT_URL}/api/v2/genai/globalmcp/mcp -
環境変数を確認します。
MCP_SERVER_PORTがサーバー設定と一致していることを確認します(ローカル開発の場合)。DATAROBOT_API_TOKENが設定されていることを確認します(認証済み接続の場合)。
-
ネットワーク接続を確認します。
- エージェントがMCPサーバーのエンドポイントに到達できることを確認します。
- ネットワークをまたいでデプロイする場合は、ファイアウォールの設定を確認します。
- HTTPSエンドポイントのSSL証明書を確認します。
ツールが表示されない¶
症状:MCPサーバーは接続されているが、エージェントがツールを使用できない。
解決方法:
- ツール登録の確認:ツールがMCPサーバーに正しく登録されていることを確認します。
- ツールメタデータの確認:ツールの説明とスキーマが正しく定義されていることを確認します。
- サーバーログの確認:ツールの登録エラーがないか、MCPサーバーのログを確認します。
- エージェント設定の確認:
mcp_toolsプロパティが正しく使用されていることを確認します。
認証に関する問題¶
症状:MCPサーバーのリクエストが認証エラーで失敗する。
解決方法:
- APIトークンの確認:
DATAROBOT_API_TOKENが設定されており、有効であることを確認します。 - トークン権限の確認:MCPサーバーへのアクセスに必要な権限がトークンにあることを確認します。
- サーバー設定の確認:使用されている認証方法を受け入れるようにMCPサーバーが設定されていることを確認します。
その他のリソース¶
- エージェントコーディング環境をMCPサーバーに接続する — DataRobot Global MCP、デプロイおよびローカルURL、クライアント設定(Cursor、Claude Desktop、VS Code)
- DataRobot MCPのテンプレート - MCPサーバーを作成およびデプロイするためのテンプレート
- DataRobot Agentic Starterのテンプレート - MCP統合を備えたアプリケーションテンプレート
- MCP Protocolのドキュメント - MCPプロトコルの公式仕様
- エージェントにツールを追加する - ToolClientベースのツール統合に関するドキュメント
- MCP Client Setup Guide - MCPクライアントの設定ガイド