Skip to content

use_mcp_tool

use_mcp_tool ツールは、接続されたモデルコンテキストプロトコル(Model Context Protocol、MCP)サーバーが提供する外部ツールとのインタラクションをサポートします。このツールは、標準化されたプロトコルを通じてVJSPのドメイン固有の機能を拡張します。

パラメータ説明

このツールは以下のパラメータを受け入れます:

  • server_name(必須):ツールを提供するMCPサーバーの名前
  • tool_name(必須):実行するツールの名前
  • arguments(オプション/必須):ツールの入力スキーマに従う必要がある、ツールの入力パラメータを含むJSONオブジェクト。入力が不要なツールの場合、このパラメータはオプションです。

機能概要

このツールは、VJSPが外部MCPサーバーが提供する専門的な機能を呼び出すことを可能にします。各MCPサーバーは、VJSPのネイティブ機能の境界を超える、独自の能力を持つ複数のツールを提供できます。システムはスキーマに基づいて入力パラメータを検証し、サーバー接続を管理し、さまざまなコンテンツタイプ(テキスト、画像、リソース)のレスポンスを処理します。

適用シナリオ

  • コアツールで提供されていない専門的な機能が必要な場合
  • ドメイン固有の操作を実行する必要がある場合
  • 外部システムやサービスと統合する必要がある場合
  • データに特定の処理または分析を行う必要がある場合
  • 標準化されたインターフェースを介してプロプライエタリツールを呼び出す必要がある場合

コア機能

  • @modelcontextprotocol/sdk開発パッケージに基づき、標準化されたMCPプロトコルを採用
  • 複数のトランスポートメカニズムをサポート(標準入出力クライアントトランスポート、サーバー送信イベントクライアントトランスポート)
  • Zodスキーマ検証フレームワークに基づき、クライアント側とサーバー側の両方で入力パラメータを双方向に検証
  • 複数のレスポンスコンテンツタイプを処理するサポート:テキスト、画像、リソース参照
  • サーバーのライフサイクル管理をサポートし、サーバーコードが変更されたときに自動的に再起動
  • 信頼できるツールの実行承認プロセスをスキップできる「常に許可」メカニズムを提供
  • 付属のaccess_mcp_resourceツールと連携してリソース検索を実現
  • 失敗した操作に対する包括的なエラー追跡と処理
  • 設定可能なタイムアウト時間をサポート(1-3600秒、デフォルトは60秒)
  • ファイルリスナーをサポートし、サーバーコードの変更を自動的に検出してリロードをトリガー

制限事項

  • 利用可能で接続された外部MCPサーバーに依存
  • 接続されたサーバーが提供するツールのみを呼び出すことができる
  • MCPサーバーごとにツールの能力に差がある
  • ネットワークの問題はサービスの信頼性とパフォーマンスに影響する可能性がある
  • ツール実行前にユーザーの承認が必要(「常に許可」リストに追加されたツールを除く)
  • 複数のMCPツール操作を同時に実行することはサポートされていない

サーバー構成

MCPサーバーは、グローバル構成とプロジェクトレベル構成の2つの構成方法をサポートしています:

  • グローバル構成:VS CodeのVJSP拡張設定で管理され、すべてのプロジェクトに適用され、プロジェクトレベルの構成で上書きできます。
  • プロジェクトレベル構成:プロジェクトルートディレクトリの.vjsp/mcp.jsonファイルで定義され、特定のプロジェクトの専用サーバーを構成できます。
  • グローバル構成とプロジェクトレベル構成に同じ名前のサーバーが存在する場合、プロジェクトレベルの構成の優先度が高くなります。
  • .vjsp/mcp.jsonファイルはバージョン管理システムにコミットして、チームで構成を共有できます。

ワークフロー

use_mcp_toolツールを呼び出すと、システムは次のフローを実行します:

  1. 初期化と検証

    • MCP中央サービスの可用性を検証
    • 指定されたサーバーが存在し、接続されていることを確認
    • 呼び出すツールがターゲットサーバーにデプロイされていることを検証
    • ツールのスキーマ定義に基づいて入力パラメータを検証
    • サーバー構成からタイムアウト設定を抽出(デフォルトは60秒)
  2. 実行と通信

    • システムは適切なトランスポートメカニズムを選択:
      • 標準入出力クライアントトランスポート:標準入出力を介してローカルプロセスと通信
      • サーバー送信イベントクライアントトランスポート:サーバー送信イベントを介してHTTPサーバーと通信
    • 有効なサーバー名、ツール名、入力パラメータを含むリクエストを送信
    • @modelcontextprotocol/sdk開発パッケージに基づいて標準化された通信インタラクションを実装
    • リクエストの実行プロセスを追跡し、タイムアウト処理によって操作がハングするのを防ぐ
  3. レスポンス処理

    • レスポンスは複数のコンテンツタイプをサポート:
      • テキストコンテンツ:プレーンテキスト形式のレスポンス結果
      • 画像コンテンツ:MIMEタイプ情報を含むバイナリ画像データ
      • リソース参照:サーバーリソースにアクセスするための統一リソース識別子(access_mcp_resourceツールと連携)
    • システムはisErrorフラグを検出して、エラー処理ロジックを実行する必要があるかどうかを判断
    • VJSPインターフェースの表示要件を満たすように結果をフォーマット
  4. リソースとエラー処理

    • メモリリークを防ぐために弱参照デザインパターンを採用
    • 連続エラーカウンターを通じてエラーの追跡と管理を実装
    • ファイルリスナーに基づいてサーバーコードの変更を監視し、自動再起動をトリガー
    • セキュリティモデルでは、ツール実行前にユーザーの承認が必要(「常に許可」リストに追加されたツールを除く)

セキュリティと権限制御

MCPアーキテクチャは複数のセキュリティ機能を提供します:

  • ツール実行前にデフォルトでユーザーの承認が必要
  • 特定のツールを「常に許可」としてマークして自動承認実行を可能に
  • Zodスキーマを通じてサーバー構成を検証し、構成の完全性を確保
  • 操作がハングするのを防ぐために設定可能なタイムアウト時間をサポート(1-3600秒)
  • 視覚的なインターフェースを通じてサーバー接続を有効または無効にできる

典型的なアプリケーション例

  • サーバー側処理ツールを使用して専門的なデータ形式を分析
  • 外部サーバーにデプロイされたAIモデルを通じて画像やその他のメディアリソースを生成
  • ローカルでの実装なしで複雑なドメイン固有の計算を直接実行
  • 制御されたインターフェースを通じてプロプライエタリなアプリケーションプログラミングインターフェースやサービスにアクセス
  • 専門的なデータベースやデータソースからデータを取得

使用例

テキスト形式の天気予報データを取得するツールを呼び出す

<use_mcp_tool>
<server_name>weather-server</server_name>
<tool_name>get_forecast</tool_name>
<arguments>
{
  "city": "サンフランシスコ",
  "days": 5,
  "format": "text"
}
</arguments>
</use_mcp_tool>

ソースコードを分析し、JSON形式の分析結果を取得するツールを呼び出す

<use_mcp_tool>
<server_name>code-analysis</server_name>
<tool_name>complexity_metrics</tool_name>
<arguments>
{
  "language": "typescript",
  "file_path": "src/app.ts",
  "include_functions": true,
  "metrics": ["cyclomatic", "cognitive"]
}
</arguments>
</use_mcp_tool>

指定されたパラメータを渡して、画像を生成するツールを呼び出す

<use_mcp_tool>
<server_name>image-generation</server_name>
<tool_name>create_image</tool_name>
<arguments>
{
  "prompt": "飛行車のある未来都市",
  "style": "photorealistic",
  "dimensions": {
    "width": 1024,
    "height": 768
  },
  "format": "webp"
}
</arguments>
</use_mcp_tool>

リソース参照を返すツールを呼び出して、リソースアクセスを実現

<use_mcp_tool>
<server_name>database-connector</server_name>
<tool_name>query_and_store</tool_name>
<arguments>
{
  "database": "users",
  "type": "select",
  "fields": ["name", "email", "last_login"],
  "where": {
    "status": "active"
  },
  "store_as": "active_users"
}
</arguments>
</use_mcp_tool>

入力パラメータが不要なツールを呼び出す

<use_mcp_tool>
<server_name>system-monitor</server_name>
<tool_name>get_current_status</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>