Skip to content

MCPサーバーを使用してツールを統合する

モデルコンテキストプロトコル(MCP)は、AIエージェントが外部のシステム、ツール、データソースとやりとりするための標準化されたインターフェイスを提供します。 MCPサーバーを使用してエージェントにツールを提供すると、ツールを直接デプロイする場合に比べていくつかの利点があります。

  • ツールの一元管理:すべてのツールが1つのMCPサーバーデプロイで管理されます
  • 標準化されたインターフェイス:ツールはMCPプロトコル標準に準拠しているため、さまざまなエージェントフレームワーク間で互換性があります
  • 動的なツール登録:ツールは、エージェントを再デプロイせずに追加または変更できます
  • 関心の分離を強化:ツールはエージェントとは別にデプロイされるため、個別のスケーリングと更新が可能です。

このガイドでは、DataRobot Agentic Application Templateで実装されている、MCPサーバーを使用してエージェントワークフローにツールを統合する方法について説明します。

MCPベースの統合とローカルツールを使用した統合

このドキュメントでは、MCPサーバーベースのツール統合について説明します。 ローカルツール(直接のツールデプロイ)を使用したツール統合の詳細については、エージェントにツールを追加するを参照してください。 MCPサーバーをエージェントコーディング環境(Cursor、Claude Desktop、VS Code)に接続するには、MCPサーバーをエージェントコーディング環境に接続するを参照してください。

概要

モデルコンテキストプロトコル(MCP)は、エージェントがツールにアクセスする方法を根本的に変えます。 エージェントのコード内でツールロジックを直接定義する代わりに、スタンドアロンの「ツールサーバー」をデプロイします。次に、エージェントはクライアントとしてこのサーバーに接続し、利用可能なツールを要求して、標準化されたプロトコルを介してそれらを実行します。

DataRobot Agentic Application Templateには、LangGraphAgentベースクラスを介したMCPツールのサポートが組み込まれています。このクラスは、設定済みのMCPサーバーに自動的に接続するmcp_toolsプロパティを提供します。 エージェントワークフローでのMCPツールの使用方法に関する詳細については、以下のセクションを参照してください。

MCPアーキテクチャ

  • エージェント(クライアント):タスクを計画する推論エンジン(例:LangGraphアプリケーション)。 これにはツールのコードは含まれておらず、利用可能なツールをMCPサーバーに問い合わせる方法のみを認識しています。
  • MCPサーバー:ツール、リソース、およびプロンプトのロジックをホストするWebサービス。 タスクの実際の実行(例:データベースへのクエリー、外部APIの呼び出し)を処理します。
  • プロトコル:基盤となるインフラストラクチャに関係なく、エージェントとMCPサーバーがセキュアに通信できるようにする標準インターフェイス。

統合ワークフロー

このアーキテクチャを使用してツールを統合するには、次の大まかなプロセスに従います。

  • MCPサーバーをデプロイする:ツールロジックを含むMCPサーバーを作成してデプロイします(DataRobot MCP Templateを使用)。
  • エージェントを接続する:実行中のMCPサーバーのエンドポイントを指すようにエージェントアプリケーションを設定します。
  • 実行:エージェントは実行時にツールを自動的に検出します。 新しいツールを追加するためにエージェントを再デプロイする必要はありません。MCPサーバーを更新するだけです。

前提条件

MCPツールを統合する前に、以下が揃っていることを確認してください。

MCPサーバーのセットアップとデプロイに関する詳細については、MCP Templateのドキュメントを参照してください。

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 task run deploy 

これらのコマンドの詳細については、CLIのtaskコマンドおよびCLIのrunコマンドを参照してください。

  1. デプロイエンドポイントを取得する:デプロイ後、デプロイIDをメモし、MCPエンドポイントURLを構築します。
https://your-datarobot-endpoint.com/api/v2/deployments/{DEPLOYMENT_ID}/directAccess/mcp/ 
  1. エージェントを設定する:本番用MCPエンドポイントを使用するようにエージェントの設定を更新します

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

MCPサーバー接続の設定

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

ローカル開発

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

.env
# MCP Server Configuration
MCP_SERVER_PORT=9000 

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

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

本番環境の設定

本番環境にデプロイする場合は、環境変数を使用してMCPサーバーを設定します。 このプロセスはテンプレートによって自動的に処理されます。

MCPサーバー認証

MCPサーバーで認証が必要な場合は、環境にDATAROBOT_API_TOKENが設定されていることを確認してください。MCPクライアントは、認証されたリクエストにこれを自動的に使用します。

エージェントでのMCPツールの使用

LangGraphAgentベースクラス(DataRobot Agentic Application Templateで使用)は、mcp_toolsプロパティを介して自動的なMCPツール統合を提供します。

LangGraphエージェント

LangGraphエージェントの場合、MCPツールはmcp_toolsプロパティを介して自動的に利用可能になります。

agent/agentic_workflow/agent.py
from datarobot_genai.core.agents import make_system_prompt
from datarobot_genai.langgraph.agent import LangGraphAgent
from langgraph.prebuilt import create_react_agent
from typing import Any

class MyAgent(LangGraphAgent):
    """Agent that uses MCP tools for external integrations."""

    @property
    def agent_planner(self) -> Any:
        return create_react_agent(
            self.llm(preferred_model="datarobot/azure/gpt-5-mini-2025-08-07"),
            tools=self.mcp_tools,  # MCP tools are automatically available
            prompt=make_system_prompt(
                "You are a content planner. Use available tools to gather information and plan content."
            ),
            name="Planner Agent",
        ) 

mcp_toolsプロパティは、自動的に以下のことを実行します。

  • 設定済みのMCPサーバーに接続する
  • 利用可能なツールを検出する
  • MCPツールをLangChain互換のツールに変換する
  • 必要に応じて認証を処理する

MCPツールとローカルツールの組み合わせ

ツールリストをマージすることで、MCPツールとローカルツールを組み合わせることができます。

agent/agentic_workflow/agent.py
from datarobot_genai.core.agents import make_system_prompt
from datarobot_genai.langgraph.agent import LangGraphAgent
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import Tool
from typing import Any

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")

class MyAgent(LangGraphAgent):
    """Agent that uses both MCP tools and local tools."""

    @property
    def agent_planner(self) -> Any:
        # Combine MCP tools with local tools
        local_tools = [DateTimeTool()]
        all_tools = list(self.mcp_tools) + local_tools

        return create_react_agent(
            self.llm(preferred_model="datarobot/azure/gpt-5-mini-2025-08-07"),
            tools=all_tools,
            prompt=make_system_prompt(
                "You are a content planner. Use available tools to gather information and plan content."
            ),
            name="Planner Agent",
        ) 

カスタムMCPツールの作成

MCPサーバーにカスタムツールを追加するには、DataRobot MCP Templateを使用します。 このテンプレートは、ツール、リソース、およびプロンプトを作成するための構造化されたアプローチを提供します。

ツールの構造

カスタム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 Templateリポジトリの構造を参照しています。

ツールのベストプラクティス

MCPツールを作成するときは、以下のベストプラクティスに従ってください。

  • 明確な説明:詳細なdocstringを提供します。LLMはこれを使用してツールの機能を理解します
  • 型ヒント:常にパラメーターと戻り値に型ヒントを使用します
  • エラーハンドリング:適切なエラーハンドリングを実装し、意味のあるエラーメッセージを返します
  • 非同期関数:パフォーマンスを向上させるために、ツールは非同期関数にする必要があります
  • タグ:わかりやすいタグを使用してツールを分類します(ツールのフィルターに役立ちます)
  • SDKクライアント:DataRobot APIへのアクセスにはget_sdk_client()を使用します

カスタムMCPツールの作成に関する詳細については、MCP Templateカスタムツールのドキュメントを参照してください。

トラブルシューティング

エージェントがMCPサーバーに接続できない

症状:エージェントのエラーに、MCP接続の失敗またはツールが利用不可であることが示される。

解決方法

  1. MCPサーバーが実行されていることを確認
# For local development
curl http://localhost:9000/mcp/

# For production
curl https://your-endpoint.com/api/v2/deployments/{DEPLOYMENT_ID}/directAccess/mcp/ 
  1. 環境変数を確認
  2. MCP_SERVER_PORTがサーバー設定と一致していることを確認します(ローカル開発の場合)
  3. DATAROBOT_API_TOKENが設定されていることを確認します(認証済み接続の場合)

  4. ネットワーク接続を確認

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

ツールが表示されない

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

解決方法

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

認証に関する問題

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

解決方法

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

比較:MCPとToolClient

特徴量 MCPサーバー ToolClient(直接デプロイ)
ツールの管理 1つのサーバーで一元化 各ツールを個別にデプロイ
プロトコル MCP標準プロトコル DataRobotカスタムプロトコル
ツール検出 MCPによる自動検出 ツールごとの手動設定
動的な更新 エージェントを再デプロイせずにツールを追加または変更可能 新しいツールのためにエージェントの再デプロイが必要
フレームワークの互換性 あらゆるMCP互換フレームワークで動作 DataRobot固有
デプロイの複雑さ 単一のMCPサーバーのデプロイ 複数のツールのデプロイ
スケーリング MCPサーバーを個別にスケール 各ツールを個別にスケール

以下の場合には、MCPサーバー統合を選択してください。

  • ツール管理を一元化したい場合
  • 動的なツール登録が必要な場合
  • ツールを共有する複数のエージェントを使用している場合
  • 標準プロトコルへの準拠を求めている場合

以下の場合には、ToolClient統合を選択してください。

  • 個々のツールデプロイに対してきめ細かな制御が必要な場合
  • ツールごとにスケーリング要件が大きく異なる場合
  • DataRobot固有のツール管理機能を使用したい場合

その他のリソース