MCP ExplorerExplorer

Xk6 Mcp

@dgzlopeson a year ago
3 Apache-2.0
FreeCommunity
AI Systems
#xk6
Test MCP servers with k6

Overview

What is Xk6 Mcp

xk6-mcp is a k6 extension designed for testing Model Context Protocol (MCP) servers, enabling users to perform load testing and monitor the performance of MCP-based applications.

Use cases

Use cases for xk6-mcp include testing the responsiveness of MCP servers under load, validating the availability of tools and resources, and ensuring the correct functionality of prompts and tool calls.

How to use

To use xk6-mcp, first install xk6, then build a k6 binary with the xk6-mcp extension. Import the mcp module in your test script and run your tests using the built binary.

Key features

Key features of xk6-mcp include the ability to ping MCP servers, list available tools, resources, and prompts, as well as call tools and read resources directly from the MCP server.

Where to use

xk6-mcp can be used in software development and testing environments where MCP servers are implemented, particularly in applications that require performance testing and monitoring.

Content

xk6-mcp

A k6 extension for testing Model Context Protocol (MCP) servers.

Installation

  1. First, ensure you have xk6 installed:
go install go.k6.io/xk6/cmd/xk6@latest
  1. Build a k6 binary with the xk6-mcp extension:
xk6 build --with github.com/dgzlopes/xk6-mcp
  1. Import the mcp module in your script, at the top of your test script:
import mcp from 'k6/x/mcp';
  1. 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

import mcp from 'k6/x/mcp';

// Initialize MCP Client with stdio transport
const client = new mcp.StdioClient({
  path: 'npx',
  env: [],
  args: ['-y', '@modelcontextprotocol/server-everything', '/tmp'],
});

export default function () {
  console.log('Checking MCP server status...');
  console.log('MCP server running:', client.ping());

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

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

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

  // Call a sample tool
  const toolResult = client.callTool({
    params: { name: 'echo', arguments: { message: 'Hello, world!' } }
  });
  console.log('Echo tool response:', toolResult.content[0].text);

  // Read a sample resource
  const resourceContent = client.readResource({
    params: { uri: 'test://static/resource/1' }
  });
  console.log('Resource content:', resourceContent.contents[0].text);

  // Get a sample prompt
  const prompt = client.getPrompt({
    params: { name: 'simple_prompt' }
  });
  console.log('Prompt:', prompt.messages[0].content.text);
}

You can also use the SSE transport to connect to an MCP server that supports it:

const client = new mcp.SSEClient({
  baseURL: 'http://localhost:3001/sse',
  headers: { Authorization: 'Bearer abc123' },
  timeout: '30s'
});

Run the SSE server with:

docker run -p 3001:3001 --rm -it tzolov/mcp-everything-server:v1

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers