返回 MCP 目录
public公开dns本地运行

Locust

一个基于Model Context Protocol的Locust负载测试服务器实现,支持AI开发环境集成

article

README

🚀 本地群载测试 MCP 服务器

这是一个基于 Locust 进行负载测试的模型上下文协议 (MCP) 服务器实现,它实现了 Locust 负载测试功能与 AI 驱动开发环境的无缝集成,能帮助用户高效开展负载测试工作。

🚀 快速开始

环境准备

在开始之前,请确保安装以下内容:

  • Python 3.13 或更高版本
  • uv 包管理器(安装指南

安装步骤

  1. 克隆仓库:
git clone https://github.com/qainsights/locust-mcp-server.git
  1. 安装所需的依赖项:
uv pip install -r requirements.txt
  1. 设置环境变量(可选): 在项目根目录创建一个 .env 文件:
LOCUST_HOST=http://localhost:8089  # 测试默认主机
LOCUST_USERS=3                     # 默认用户数
LOCUST_SPAWN_RATE=1               # 用户生成率
LOCUST_RUN_TIME=10s               # 默认测试时长

测试脚本创建

创建一个 Locust 测试脚本(例如 hello.py):

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 5)

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

    @task(3)
    def view_items(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")
            time.sleep(1)

    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})

配置 MCP 服务器

使用以下配置在您的首选 MCP 客户端(Claude Desktop、Cursor、Windsurf 等)中配置 MCP 服务器:

{
  "mcpServers": {
    "locust": {
      "command": "/Users/naveenkumar/.local/bin/uv",
      "args": [
        "--directory",
        "/Users/naveenkumar/Gits/locust-mcp-server",
        "run",
        "locust_server.py"
      ]
    }
  }
}

启动测试

现在让大语言模型运行测试,例如:运行 locust 测试以分析 hello.py。Locust MCP 服务器将使用以下工具来启动测试:

  • run_locust:根据配置选项运行测试(包括无头模式、主机、时长、用户数和生成率)

✨ 主要特性

  • 简单易用的 Model Context Protocol 框架集成
  • 支持无头模式和有图形界面模式
  • 可配置的测试参数(用户数、生成率、运行时间)
  • 用于运行 Locust 负载测试的简单 API
  • 实时测试执行输出
  • 原生支持 HTTP/HTTPS 协议
  • 支持自定义任务场景

Locust-MCP-Server

💻 使用示例

基础用法

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 5)

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

    @task(3)
    def view_items(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")
            time.sleep(1)

    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})

高级用法

# 这里可以根据不同的使用场景,对测试脚本进行更复杂的配置,如添加更多任务、调整参数等
# 例如,可以创建多个不同的 HttpUser 类,每个类代表不同的用户行为

from locust import HttpUser, task, between

class AdvancedUser1(HttpUser):
    wait_time = between(2, 6)

    @task
    def special_task1(self):
        self.client.get("/special/endpoint1")

class AdvancedUser2(HttpUser):
    wait_time = between(3, 7)

    @task
    def special_task2(self):
        self.client.get("/special/endpoint2")

📚 详细文档

API 参考

运行 Locust 测试

run_locust(
    test_file: str,
    headless: bool = True,
    host: str = "http://localhost:8089",
    runtime: str = "10s",
    users: int = 3,
    spawn_rate: int = 1
)

参数说明:

  • test_file:Locust 测试脚本的路径
  • headless:是否以无头模式(True)或有图形界面(False)运行
  • host:默认测试主机地址
  • runtime:默认测试时长
  • users:默认用户数
  • spawn_rate:用户生成率

使用场景

  • 性能测试:通过配置不同的用户数和生成率,模拟高并发访问场景。
  • 稳定性测试:验证系统在极端负载下的稳定性和响应能力。
  • 压力测试:识别系统瓶颈并评估其承受压力的能力。

📄 注意事项

⚠️ 重要提示

  • 确保安装的 Python 版本符合要求(3.13 或更高)。
  • 在运行高负载测试时,建议监控系统资源使用情况。
  • 如果遇到性能问题,请考虑优化代码或增加硬件资源。

通过以上步骤,您可以轻松配置和运行基于 Locust 的负载测试,并将其集成到 AI 驱动的开发环境中。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端