About Xk6 MCP
Xk6 MCP is an MCP server published by grafana in the Developer Tools category: test MCP servers with k6. It has been installed 0 times through Conduid.
The repository has 21 stars and 5 forks, with the last commit 6 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.
Install
npx xk6-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Xk6 MCP
Powered by Claude · Grounded in docs
Security checks
- ·README presentNot checked yet.
- ·License declaredNot checked yet.
- ·Tests presentNot checked yet.
- ·Dependencies pinnedNot checked yet.
- ·No dynamic code executionNot checked yet.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
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
- First, ensure you have xk6 installed:
go install go.k6.io/xk6/cmd/xk6@latest
- Build a k6 binary with the xk6-mcp extension:
xk6 build --with github.com/dgzlopes/xk6-mcp
- Import the mcp module in your script, at the top of your test script:
import mcp from 'k6/x/mcp';
- The built binary will be in your current directory. You can move it to your PATH or use it directly:
./k6 run script.js
Example
⚠️ 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).
README mirrored from the source repository yesterday. The original is authoritative.