关于 xk6-mcp
xk6-mcp 是一个 k6 扩展,用于对 Model Context Protocol (MCP) 服务进行负载和性能测试。它面向需要测试 MCP 服务的开发者,支持 stdio、SSE 和 Streamable HTTP 三种传输方式。该项目为实验性质,不受 Grafana Labs 官方支持。
主要功能
- 01支持 stdio、SSE 和 Streamable HTTP 传输
- 02自动分页的列表接口
- 03记录 MCP 请求的耗时、次数和错误
- 04与 k6 脚本集成
适用场景
- 01在 k6 脚本中测试 MCP 服务的工具、资源和提示词列表
- 02统计 MCP 请求的耗时与错误率
- 03对 MCP 服务进行性能测试
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
xk6-mcp
用于测试 Model Context Protocol (MCP) 服务的 k6 扩展。
注意
此扩展处于实验阶段,且未获得 Grafana Labs 的官方支持。
安装
- 首先,确保已安装 xk6:
go install go.k6.io/xk6/cmd/xk6@latest
- 使用 xk6-mcp 扩展构建 k6 二进制文件:
xk6 build --with github.com/dgzlopes/xk6-mcp
- 在测试脚本顶部导入 mcp 模块:
import mcp from 'k6/x/mcp';
- 构建的二进制文件将位于当前目录中。你可以将其移至 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',
});
分页呢?
此扩展提供两种方式来列出资源、工具和提示词:
// 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)。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。