{"_id":"@chenyingxian/jmeter-mcp","_rev":"3-d9e8aec9913e97d32f2914a78e9aa47c","name":"@chenyingxian/jmeter-mcp","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@chenyingxian/jmeter-mcp","version":"1.0.0","keywords":["mcp","jmeter","jmx","api-testing"],"author":"","license":"ISC","_id":"@chenyingxian/jmeter-mcp@1.0.0","maintainers":[{"name":"chenyingxian","email":"a1030307996@gmail.com"}],"dist":{"shasum":"8237982d42afecc9527a41f04a80f1ab9adca028","tarball":"https://registry.npmjs.org/@chenyingxian/jmeter-mcp/-/jmeter-mcp-1.0.0.tgz","fileCount":15,"integrity":"sha512-mqo3rCG1I0AoeKta5MKbtCTkRDbQjaZFRp3y0HYvAyAQAtOIazXxNBFjhybYNdBVMmHsaynurAtQznimKdLgTA==","signatures":[{"sig":"MEQCIB8sQweQ1PtebbTNtet5Ph7EnP0loI2uAFgXbs+5AhXoAiAcrs+pnU5+pAAGZ7wkQM8asOJe1FfaorRrMIJiBUxJjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274680},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"chenyingxian","email":"a1030307996@gmail.com"},"_npmVersion":"11.9.0","description":"JMeter MCP（stdio）：根据接口文档描述生成和维护 JMeter HTTP 请求组件与场景线程组","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@xmldom/xmldom":"^0.9.10","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/jmeter-mcp_1.0.0_1779242605319_0.4293930666420107","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chenyingxian/jmeter-mcp","version":"1.0.1","keywords":["mcp","jmeter","jmx","api-testing"],"author":"","license":"ISC","_id":"@chenyingxian/jmeter-mcp@1.0.1","maintainers":[{"name":"chenyingxian","email":"a1030307996@gmail.com"}],"bin":{"jmeter-mcp":"dist/index.js"},"dist":{"shasum":"516f214acb92d1084e77ae7375af44f7eb57cc0a","tarball":"https://registry.npmjs.org/@chenyingxian/jmeter-mcp/-/jmeter-mcp-1.0.1.tgz","fileCount":15,"integrity":"sha512-EniynRM0p/jZ/3XY9lgYbFYczc8gv0PAkqrlpo9qMnZTXJ0VFV5EZkF0MWqtZz9BJnEWdzYjPwtqRxb+42pOQQ==","signatures":[{"sig":"MEYCIQC9R6lFBn8idjSOiI21wiPRRXVQJNaPejtcfcXZnGTWUgIhAJHZWNfuoWOOIkHwwu40mUY+YX8Nz/gubh+BMzyuSR1P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274452},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"chenyingxian","email":"a1030307996@gmail.com"},"_npmVersion":"11.9.0","description":"JMeter MCP（stdio）：根据接口文档描述生成和维护 JMeter HTTP 请求组件与场景线程组","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@xmldom/xmldom":"^0.9.10","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/jmeter-mcp_1.0.1_1779243100296_0.9777367717435459","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chenyingxian/jmeter-mcp","version":"1.0.2","description":"JMeter MCP（stdio）：根据接口文档描述生成和维护 JMeter HTTP 请求组件与场景线程组","main":"dist/index.js","bin":{"jmeter-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js"},"keywords":["mcp","jmeter","jmx","api-testing"],"author":"","license":"ISC","type":"module","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","@xmldom/xmldom":"^0.9.10","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.7.0","typescript":"^6.0.3"},"types":"./dist/index.d.ts","_id":"@chenyingxian/jmeter-mcp@1.0.2","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-8aG5mxwfwhiDg+qLWVBcT945PcldxcdgoGXotJ/rlutq8znReofESivB3Q8759YSrWKpxUmigJk7AvVtwb4fqQ==","shasum":"e80183ebc60f746804badc6406f9c76ea831cde3","tarball":"https://registry.npmjs.org/@chenyingxian/jmeter-mcp/-/jmeter-mcp-1.0.2.tgz","fileCount":19,"unpackedSize":299976,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC5EHGoPz3rAyBi/Ck7rD/kmvpr/0QrLKrdvKB5u+Gl8QIhAN8qqlQ8um1YULAjqVwCuBxxgLtAd2ERWL7T1tYq5MEn"}]},"_npmUser":{"name":"chenyingxian","email":"a1030307996@gmail.com"},"directories":{},"maintainers":[{"name":"chenyingxian","email":"a1030307996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jmeter-mcp_1.0.2_1779243802097_0.4477663926827864"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-20T02:03:25.227Z","modified":"2026-05-20T02:23:22.358Z","1.0.0":"2026-05-20T02:03:25.463Z","1.0.1":"2026-05-20T02:11:40.439Z","1.0.2":"2026-05-20T02:23:22.243Z"},"license":"ISC","keywords":["mcp","jmeter","jmx","api-testing"],"description":"JMeter MCP（stdio）：根据接口文档描述生成和维护 JMeter HTTP 请求组件与场景线程组","maintainers":[{"name":"chenyingxian","email":"a1030307996@gmail.com"}],"readme":"# JMeter MCP\r\n\r\n[English](README.md)\r\n\r\n文档导航：[配置说明](CONFIG.zh-CN.md) | [工具说明](MCP_TOOLS.zh-CN.md) | [Configuration](CONFIG.md) | [Tools](MCP_TOOLS.md)\r\n\r\nJMeter MCP 是一个基于 stdio 的 MCP Server，用于根据结构化接口信息生成和维护 JMeter `.jmx` 中的 HTTP 请求组件。\r\n\r\n它适用于 Codex、Cursor 以及其他支持 MCP 的 AI 客户端。AI 只需要提供项目名、接口路径、HTTP 方法、参数名列表以及是否需要签名；MCP 会根据项目配置自动完成 JMX 写入、请求体生成和 JMeter 运行时签名。\r\n\r\n## 功能特性\r\n\r\n- 生成 `GenericController` 和 `HTTPSamplerProxy` XML 片段。\r\n- 在配置的 JMeter 线程组中新增或更新基础请求组件。\r\n- 查询和列出现有可复用请求组件。\r\n- 基于基础组件生成场景线程组。\r\n- 根据参数名生成 JSON Raw Body 或 form-data 请求参数。\r\n- 使用 JMeter 内置 `__digest` 在运行时计算签名字段。\r\n\r\n## 安装与接入\r\n\r\n在 MCP 客户端中可以直接通过 npm 包启动：\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"jmeter-mcp\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@chenyingxian/jmeter-mcp\"],\r\n      \"env\": {\r\n        \"JMETER_MCP_CONFIG_PATH\": \"D:\\\\jmeter\\\\jmeter-mcp.config.json\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n本地开发命令：\r\n\r\n```powershell\r\nnpm install\r\nnpm run build\r\nnpm start\r\n```\r\n\r\n## 项目配置\r\n\r\n创建一个 JSON 配置文件，并通过 `JMETER_MCP_CONFIG_PATH` 指向它。\r\n\r\n```json\r\n{\r\n  \"projects\": {\r\n    \"example-api-project\": {\r\n      \"jmx_dir\": \"D:\\\\jmeter\\\\plans\",\r\n      \"jmx_file\": \"example-api-project.jmx\",\r\n      \"sign_algorithm\": \"key_equals_value\",\r\n      \"body_type\": \"json\",\r\n      \"thread_group_testname\": \"基础请求组件\",\r\n      \"scenario_thread_group_testname\": \"场景测试\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n支持的 `sign_algorithm`：\r\n\r\n- `key_equals_value`：签名源字符串按 `key=value` 拼接。\r\n- `key_value`：签名源字符串按 `keyvalue` 拼接。\r\n\r\n支持的 `body_type`：\r\n\r\n- `json`：根据 `parameter_names` 生成 Raw JSON 请求体。\r\n- `form_data`：根据 `parameter_names` 生成 JMeter 表单参数。\r\n\r\n## 常用工具\r\n\r\n- `jmeter_list_project_config`：检查当前加载的项目配置。\r\n- `jmeter_list_basic_request_components`：列出可复用的基础请求组件。\r\n- `jmeter_query_basic_request_component`：检查指定组件是否已经存在。\r\n- `jmeter_generate_controller_fragment`：只生成 XML，不写入 JMX 文件。\r\n- `jmeter_upsert_basic_request_component`：新增或替换基础请求组件。\r\n- `jmeter_upsert_scenario_thread_group`：创建或更新单个场景控制器。\r\n- `jmeter_upsert_scenario_suite_thread_group`：创建或更新场景套件线程组。\r\n\r\n## 请求示例\r\n\r\n```json\r\n{\r\n  \"project\": \"example-api-project\",\r\n  \"match_by\": \"api_path\",\r\n  \"match_value\": \"/api/example\",\r\n  \"controller_name\": \"Example API\",\r\n  \"need_sign\": true,\r\n  \"doc_url\": \"https://docs.example.com/api/example\",\r\n  \"steps\": [\r\n    {\r\n      \"http_sampler\": {\r\n        \"testname\": \"Example API\",\r\n        \"method\": \"POST\",\r\n        \"path\": \"/api/example\",\r\n        \"parameter_names\": [\"deviceId\", \"channel\"]\r\n      }\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n## 注意事项\r\n\r\n- 不要传真实参数值，只传参数名或 JSON 路径。\r\n- 不要在 `parameter_names` 中传 `sign` 或 `secret_key`。\r\n- 协议、域名、端口、签名密钥建议放在 JMeter 变量或项目级 JMeter 配置中。\r\n- 详细配置见 [CONFIG.zh-CN.md](CONFIG.zh-CN.md)，完整工具行为见 [MCP_TOOLS.zh-CN.md](MCP_TOOLS.zh-CN.md)。\r\n","readmeFilename":"README.zh-CN.md"}