脾气暴躁的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