xk6-mcp
Test MCP servers with k6
Documentation
xk6-mcp
A k6 extension for testing Model Context Protocol (MCP) servers.
> [!CAUTION]
> This extension is experimental and not officially supported by Grafana Labs.
Installation
1. First, ensure you have xk6 installed:
go install go.k6.io/xk6/cmd/xk6@latest2. Build a k6 binary with the xk6-mcp extension:
xk6 build --with github.com/dgzlopes/xk6-mcp3. Import the mcp module in your script, at the top of your test script:
import mcp from 'k6/x/mcp';4. The built binary will be in your current directory. You can move it to your PATH or use it directly:
./k6 run script.jsExample
> ⚠️ This example depends on mcp-example-server
> You can download the latest version from the releases page.
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}`);
}F.A.Q.
What about non-stdio transports?
Both SSE and Streamable HTTP are supported too!
You can use them like this:
// SSE
const client = new mcp.SSEClient({
base_url: 'http://localhost:3002',
});
// Streamable HTTP
const client = new mcp.StreamableHTTPClient({
base_url: 'http://localhost:3001',
});What about pagination?
The extension offers two ways to list resources, tools, and prompts:
// 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 });What about metrics?
The extension automatically tracks RED-style metrics for every MCP operation:
- `mcp_request_duration` (trend): Duration of each MCP request (in milliseconds).
- `mcp_request_count` (counter): Number of MCP requests made.
- `mcp_request_errors` (counter): Number of failed MCP requests.
Each metric is tagged wit:
- `method`: The MCP method called (e.g., `GetPrompt`, `ListTools`).
Frequently asked questions
What is xk6-mcp?
xk6-mcp is Test MCP servers with k6
How do I install xk6-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is xk6-mcp open source?
Yes — it is hosted on GitHub at https://github.com/dgzlopes/xk6-mcp and has 12 stars.
Related MCP tools
MCP server for Grafana Go-based implementation. Trusted by 1700+ developers. Trusted by 1700+ developers. Trusted by 1700+ developers.
Flux Operator is a Kubernetes controller for managing the lifecycle of Flux CD for the Model Context Protocol. Enhance AI assistants with powerful integrations.
MCP server connecting to Kubernetes Go-based implementation.
Lunar.dev: Ground Control for 3rd Party APIs for the Model Context Protocol. Enhance AI assistants with powerful integrations. Go-based implementation.
:robot: The free, Open Source alternative to OpenAI, Claude and others. Self-hosted and local-first. Drop-in replacement for OpenAI, running on consumer-gra...
MCP Toolbox for Databases is an open source MCP server for databases. Go-based implementation. Trusted by 10900+ developers.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP