项目简介

Goku MCP Server是一款基于Rust开发的高性能HTTP负载测试工具Goku的MCP服务端实现。它允许大型语言模型(LLM)或其他兼容MCP协议的客户端直接通过标准接口与其交互,执行负载测试并获取结果,从而将性能测试无缝集成到自动化工作流和AI代理应用中。

主要功能点

  • LLM代理集成: 允许AI代理或LLM直接调用Goku进行HTTP负载测试,无需手动命令行操作。
  • 自动化性能分析: 触发测试、收集性能指标并分析结果,实现自动化性能分析流程。
  • 工具调用: 提供查询95/99分位延迟、最大/最小请求时间等工具,方便LLM获取关键性能数据。
  • 标准化协议: 通过JSON-RPC协议与客户端通信,确保互操作性。

安装步骤

  1. 安装Rust: 确保您的系统已安装Rust编程语言及其包管理器Cargo。您可以访问 Rust官网 获取安装指南。
  2. 通过Cargo安装Goku MCP:
    cargo install goku-mcp
  3. (可选)自动下载安装脚本 (Linux, OSX, WSL):
    curl -sSL https://raw.githubusercontent.com/jcaromiq/goku/v2.0.1/scripts/install_mcp.sh | sh
    此命令会将Goku MCP的可执行文件下载到当前目录。
  4. (可选)手动下载: 访问Goku的 GitHub Releases页面,下载适合您系统的 'goku-mcp' 相关'.tar.gz'文件。

服务器配置

MCP客户端需要配置MCP服务器的启动命令。以下是适用于Goku MCP Server的配置示例:

{
  "server_name": "Goku MCP Server",
  "command": "goku-mcp",
  "args": [],
  "description": "Goku MCP Server是一个用于HTTP负载测试的Model Context Protocol (MCP) 服务器。它允许LLM客户端调用工具来执行性能测试,并获取请求延迟的95分位、99分位、最大值和最小值等指标。",
  "tools": [
    {
      "name": "percentile_95",
      "description": "显示给定目标、并发客户端数量和总请求数量下请求延迟的95分位。",
      "parameters": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "执行基准测试的目标URL,例如:http://localhost:3000/"
          },
          "clients": {
            "type": "integer",
            "description": "使用的并发客户端数量,例如:100"
          },
          "requests": {
            "type": "integer",
            "description": "执行的总请求数量,例如:10000"
          }
        },
        "required": ["target", "clients", "requests"]
      }
    },
    {
      "name": "percentile_99",
      "description": "显示给定目标、并发客户端数量和总请求数量下请求延迟的99分位。",
      "parameters": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "执行基准测试的目标URL,例如:http://localhost:3000/"
          },
          "clients": {
            "type": "integer",
            "description": "使用的并发客户端数量,例如:100"
          },
          "requests": {
            "type": "integer",
            "description": "执行的总请求数量,例如:10000"
          }
        },
        "required": ["target", "clients", "requests"]
      }
    },
    {
      "name": "min",
      "description": "显示给定目标、并发客户端数量和总请求数量下请求延迟的最小值。",
      "parameters": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "执行基准测试的目标URL,例如:http://localhost:3000/"
          },
          "clients": {
            "type": "integer",
            "description": "使用的并发客户端数量,例如:100"
          },
          "requests": {
            "type": "integer",
            "description": "执行的总请求数量,例如:10000"
          }
        },
        "required": ["target", "clients", "requests"]
      }
    },
    {
      "name": "max",
      "description": "显示给定目标、并发客户端数量和总请求数量下请求延迟的最大值。",
      "parameters": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "执行基准测试的目标URL,例如:http://localhost:3000/"
          },
          "clients": {
            "type": "integer",
            "description": "使用的并发客户端数量,例如:100"
          },
          "requests": {
            "type": "integer",
            "description": "执行的总请求数量,例如:10000"
          }
        },
        "required": ["target", "clients", "requests"]
      }
    }
  ]
}

请注意,'command'字段的值应为'goku-mcp'可执行文件在系统路径中的名称。如果不是,您可能需要提供其完整路径。'args'字段在默认情况下为空,因为Goku MCP服务器通过Stdio通信,其自身启动无需额外命令行参数。MCP客户端会通过JSON-RPC协议发送请求来调用内部工具。

基本使用方法

安装并配置好Goku MCP服务器后,您的MCP客户端(例如LLM代理)即可通过JSON-RPC协议与其通信,调用预定义的工具来执行负载测试。

例如,LLM客户端可以生成一个请求来调用 'percentile_95' 工具,以获取某个网站的性能数据。 LLM可以像这样提问:

"在 https://github.com 上运行一个性能测试,使用2个并发用户和总共30个请求,并提供95分位响应时间。"

LLM代理将自动将此请求转换为相应的MCP工具调用,然后通过Goku MCP Server执行测试并解析返回的结果。

信息

分类

开发者工具