数据库压力测试工具

stroppy-mcp是一个为AI助手提供直接访问Stroppy数据库压力测试工具的MCP服务器,支持结构化工具调用、无权限摩擦和自然集成。

  • by stroppy-io
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 stroppy-io/stroppy-mcp

使用说明

脾气暴躁的mcp

MCP服务器,允许AI助手直接访问 动辄生气的,一个基于k6的数据库压力测试工具。助手调用结构化工具,而不是构造shell命令和解析终端输出,这些工具包括检查数据库、搭建测试工作区、运行基准测试、读取结果。

AI assistant  ──>  stroppy-mcp (MCP stdio)  ──>  stroppy CLI  ──>  PostgreSQL

为什么选择MCP而不是bash

AI助手已经可以通过shell命令运行stropy。MCP包装器改变了三件事:

没有许可摩擦。 每个独特的bash命令都需要Claude Code中的用户批准。参数扫描(10个基准测试运行,具有不同的VU计数)意味着10个批准提示。MCP工具通过配置获得一次批准;所有后续呼叫都会不间断地进行。这很重要,因为基准测试的价值在于迭代,当每一步都需要点击时,迭代就会终止。

结构化参数,结构化结果。 助手不需要记住k6标志语法、环境变量名称或输出格式。 stroppy_run(script="tpcc.ts", env="VUS_SCALE=3", duration="30s") 是明确的。返回的指标在没有grep的情况下是机器可读的。

与助手的其他功能自然融合。 MCP将助手置于基准循环中。一旦到达那里,它就会带来它所能做的一切——读取测试脚本以发现参数,编辑它们以修复瓶颈(如硬编码的连接池大小),推理吞吐量为何停滞不前,建议PostgreSQL配置更改。工具调用和代码编辑不是单独的工作流程;它们是一次谈话。

工具

工具 它做什么
inspect_db 连接到PostgreSQL,返回版本、调优参数、数据库大小
stroppy_gen 从预设(tpcb、tpcc、tpcds、simple、execute_sql)构建测试工作区
stroppy_run 使用可配置的并发性、持续时间、环境变量和HTML报告输出执行压力测试
stroppy_validate 模拟运行传输文件检查——在实际运行之前捕获脚本错误
list_presets 列出可用的工作负载预设及其说明
read_file 读取最大100KB的项目文件(.ts、.sql、.yaml、.json等)
read_k6_summary 将k6 JSON摘要解析为格式化的延迟百分位数、吞吐量、错误率

资源

URI 描述
stroppy://docs 完整的Stroppy文档,嵌入二进制文件中

快速开始

先决条件

  • PostgreSQL 14+ --可通过a到达 postgres:// 连接URL
  • Stroppy命令行界面 — 下载一个版本 或从源代码构建

构建

go build -o stroppy-mcp .

配置

添加到Claude代码设置(~/.claude/settings.json 或项目 .mcp.json):

{
  "mcpServers": {
    "stroppy": {
      "command": "/absolute/path/to/stroppy-mcp",
      "env": {
        "STROPPY_BIN": "/usr/local/bin/stroppy"
      }
    }
  }
}

服务器通过以下方式查找stroppy二进制文件: STROPPY_BIN env 是 → ./build/stroppy → stroppy 上 $PATH.

要跳过每个工具的审批提示,请添加通配符权限:

{
  "permissions": {
    "allow": ["mcp__stroppy__*"]
  }
}

使用

You: "benchmark my postgres install"

Assistant calls inspect_db → sees stock config (shared_buffers=128MB on a 64GB machine)
Assistant calls stroppy_gen with tpcc preset → scaffolds workspace
Assistant calls stroppy_run → gets baseline: 9,700 TPS at 11 VUs
Assistant suggests ALTER SYSTEM SET shared_buffers = '16GB' ...
Assistant calls stroppy_run again → compares before/after

项目结构

main.go            Server setup, tool/resource registration, stdio transport
exec.go            Stroppy binary discovery and command execution
tools_gen.go       stroppy_gen, list_presets
tools_run.go       stroppy_run, stroppy_validate
tools_inspect.go   inspect_db, read_k6_summary, read_file
tools_docs.go      stroppy://docs resource (embeds llms-full.txt via go:embed)
instructions.md    System prompt shipped to the assistant

依赖项

包装 用途
mcp走 Go MCP SDK——stdio传输、工具/资源协议
佩里格机场 PostgreSQL驱动程序 inspect_db

延伸阅读

  • 设置.md --具有真实基准测试结果的端到端设置演练:股票与优化的PostgreSQL配置、TPC-B与TPC-C扩展特性、连接池大小、并发扫描结果
  • CLAUDE.md --助手快速参考(构建、工具、架构)
  • 说明.md --系统提示,决定助手如何使用工具