mcpField
X
xk6-mcp

xk6-mcp

ローカル
github.com/dgzlopes開発ツール2129 週間前に更新

xk6-mcp について

xk6-mcp は、Model Context Protocol (MCP) サーバーをテストするための k6 拡張機能です。k6 スクリプトから stdio、SSE、Streamable HTTP の各トランスポートを利用してサーバーを検証する開発者を対象としています。本プロジェクトは実験的なもので、Grafana Labs による公式サポートはありません。

主な機能

  1. 01stdio、SSE、Streamable HTTP への対応
  2. 02一覧取得時の自動ページネーション
  3. 03MCP リクエストごとの所要時間と件数の計測
  4. 04k6 テストスクリプトとの統合

活用シーン

  1. 01k6 スクリプトでのツール、リソース、プロンプト一覧のテスト
  2. 02MCP リクエストの所要時間とエラー率の計測
  3. 03MCP サーバーに対する負荷テスト

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

xk6-mcp

Model Context Protocol(MCP)サーバーをテストするための k6 拡張機能です。

注意

この拡張機能は実験的なものであり、Grafana Labs による公式サポートはありません。

インストール

  1. まず、xk6がインストールされていることを確認します:
go install go.k6.io/xk6/cmd/xk6@latest
  1. xk6-mcp 拡張機能を含む k6 バイナリをビルドします:
xk6 build --with github.com/dgzlopes/xk6-mcp
  1. テストスクリプトの先頭で、スクリプトに mcp モジュールをインポートします:
import mcp from 'k6/x/mcp';
  1. ビルドしたバイナリは現在のディレクトリにあります。PATH に移動するか、そのまま使用できます:
./k6 run script.js

例

⚠️ この例は mcp-example-serverに依存しています
最新バージョンはリリースページからダウンロードできます。

import mcp from 'k6/x/mcp';

export default function () {
  // Initialize MCP Client with stdio transport
  const client = new mcp.StdioClient({
    path: './mcp-example-server',
  });

  // Check connection to MCP server
  console.log('MCP server running:', client.ping());

  // List all available tools
  console.log('Tools available:');
  const tools = client.listAllTools().tools;
  tools.forEach(tool => console.log(`  - ${tool.name}`));

  // List all available resources
  console.log('Resources available:');
  const resources = client.listAllResources().resources;
  resources.forEach(resource => console.log(`  - ${resource.uri}`));

  // List all available prompts
  console.log('Prompts available:');
  const prompts = client.listAllPrompts().prompts;
  prompts.forEach(prompt => console.log(`  - ${prompt.name}`));

  // Call a sample tool
  const toolResult = client.callTool({ name: 'greet', arguments: { name: 'Grafana k6' } });
  console.log(`Greet tool response: "${toolResult.content[0].text}"`);

  // Read a sample resource
  const resourceContent = client.readResource({ uri: 'embedded:info' });
  console.log(`Resource content: ${resourceContent.contents[0].text}`);

  // Get a sample prompt
  const prompt = client.getPrompt({ name: 'greet' });
  console.log(`Prompt: ${prompt.messages[0].content.text}`);
}
よくある質問
stdio 以外のトランスポートについて

SSE と Streamable HTTP もサポートされています!

次のように使用できます:

// SSE
const client = new mcp.SSEClient({
    base_url: 'http://localhost:3002',
});

// Streamable HTTP
const client = new mcp.StreamableHTTPClient({
    base_url: 'http://localhost:3001',
});
ページネーションについて

この拡張機能では、リソース、ツール、プロンプトを一覧表示する方法が 2 つあります:

// With All: Handles pagination automatically
const allTools = client.listAllTools();
const allResources = client.listAllResources();
const allPrompts = client.listAllPrompts();

// Without All: Requires manual pagination
const first = client.listTools()
const second = client.listTools({ cursor: first.next_cursor });
メトリクスについて

この拡張機能は、すべての MCP 操作について RED スタイルのメトリクスを自動的に追跡します:

  • mcp_request_duration(trend):各 MCP リクエストの所要時間(ミリ秒)。
  • mcp_request_count(counter):実行された MCP リクエストの数。
  • mcp_request_errors(counter):失敗した MCP リクエストの数。

各メトリクスには次のタグが付与されます:

  • method:呼び出された MCP メソッド(例:GetPrompt、ListTools)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。