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(直接デプロイ)
ツールの管理 Centralized in one server. Each tool deployed separately.
プロトコル MCP standard protocol. DataRobot custom protocol.
ツール検出 Automatic via MCP. Manual configuration per tool.
動的な更新 Tools can be added/modified without agent redeployment. Requires agent redeployment for new tools.
フレームワークの互換性 Works with any MCP-compatible framework. DataRobot-specific.
デプロイの複雑さ Single MCP server deployment. Multiple tool deployments.
スケーリング Scale MCP server independently. Scale each tool independently.

以下の場合には、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サーバーが設定されていることを確認します。

その他のリソース