Skip to content

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サーバーのデプロイについては、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にデプロイするには:

  1. デプロイ設定を行う:Pulumi設定またはデプロイ設定を更新します。
  2. サーバーをデプロイする:デプロイコマンドを使用します。

    dr run deploy 
    

    dr task run deployを使用することもできますが、その場合も同等です。 これらのコマンドの詳細については、CLIのtaskおよびrunコマンドを参照してください。

  3. デプロイエンドポイントを取得する:デプロイ後、デプロイIDをメモし、MCPエンドポイントURLを構築します。

    https://{DATAROBOT_URL}/api/v2/deployments/{DEPLOYMENT_ID}/directAccess/mcp 
    

    一部の環境では、デプロイごとのdirectAccess URLの代わりに、DataRobot Global MCPを使用します。

    https://{DATAROBOT_URL}/api/v2/genai/globalmcp/mcp 
    

    Global MCP URLがデプロイエンドポイントとどのように連携するかについては、DataRobot Global MCPの使用を参照してください。

  4. エージェントを設定する:本番環境のMCPエンドポイント(デプロイで提供されるURL)を使用するようにエージェントの設定を更新します。

デプロイの詳細な手順については、MCPテンプレートのREADMEを参照してください。

MCPサーバー接続の設定

エージェントをMCPサーバーに接続するには、エージェントの環境変数または設定でMCPサーバーのエンドポイントと認証を設定する必要があります。

ローカル開発

ローカル開発の場合は、.envファイルでMCPサーバー接続を設定します。

.env
# MCP Server Configuration
MCP_SERVER_PORT=9000 

MCPサーバーは、デフォルトで次の2つのポートのいずれかを使用します。

エージェントを設定するときは、必ず正しいポートを使用してください。

本番環境の設定

本番環境にデプロイする場合は、環境変数を使用して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ノードにそのまま渡します。

agent/agent/myagent.py (excerpt)
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にあります)。

agent/agent/myagent.py (excerpt)
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デコレーターを使用して定義されます。

dr_mcp/app/recipe/tools/my_custom_tool.py
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接続の失敗またはツールが利用不可であることが示される。

解決方法

  1. 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 
    
  2. 環境変数を確認します。

    • MCP_SERVER_PORTがサーバー設定と一致していることを確認します(ローカル開発の場合)。
    • DATAROBOT_API_TOKENが設定されていることを確認します(認証済み接続の場合)。
  3. ネットワーク接続を確認します。

    • エージェントがMCPサーバーのエンドポイントに到達できることを確認します。
    • ネットワークをまたいでデプロイする場合は、ファイアウォールの設定を確認します。
    • HTTPSエンドポイントのSSL証明書を確認します。

ツールが表示されない

症状:MCPサーバーは接続されているが、エージェントがツールを使用できない。

解決方法

  1. ツール登録の確認:ツールがMCPサーバーに正しく登録されていることを確認します。
  2. ツールメタデータの確認:ツールの説明とスキーマが正しく定義されていることを確認します。
  3. サーバーログの確認:ツールの登録エラーがないか、MCPサーバーのログを確認します。
  4. エージェント設定の確認:mcp_toolsプロパティが正しく使用されていることを確認します。

認証に関する問題

症状:MCPサーバーのリクエストが認証エラーで失敗する。

解決方法

  1. APIトークンの確認:DATAROBOT_API_TOKENが設定されており、有効であることを確認します。
  2. トークン権限の確認:MCPサーバーへのアクセスに必要な権限がトークンにあることを確認します。
  3. サーバー設定の確認:使用されている認証方法を受け入れるようにMCPサーバーが設定されていることを確認します。

その他のリソース