一个集成Cursor IDE与Jira中的Xray测试管理的Model Context Protocol (MCP)服务器,允许您直接从开发环境中管理测试、测试执行和测试计划。
getTests查询可靠地获取带有步骤的测试详情🚀该包在npm上可用,可以直接使用npx:
npx @korfu/xray-mcp
无需安装!继续到生成Jira API令牌部分。
如果您想贡献代码或修改代码:
git clone https://github.com/Korfu/mcp-xray.git
cd mcp-xray
npm install
npm run build
您需要以下环境变量:
必需:
JIRA_BASE_URL:您的Jira实例URL(例如,https://your-domain.atlassian.net)JIRA_EMAIL:您的Jira账户电子邮件JIRA_API_TOKEN:第3步中的API令牌可选(用于测试步骤):
XRAY_CLIENT_ID:您的Xray Cloud API客户端IDXRAY_CLIENT_SECRET:您的Xray Cloud API客户端密钥要从Xray获取测试步骤,您需要Xray Cloud API凭证:
注意:没有Xray Cloud API凭证,MCP仍然可以用于列出和管理测试,但不会获取测试步骤。
将以下配置添加到您的Cursor MCP设置文件中(通常位于~/.cursor/mcp.json或类似位置):
对于npm安装(推荐):
{
"mcpServers": {
"xray": {
"command": "npx",
"args": ["-y", "@korfu/xray-mcp"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token-here",
"XRAY_CLIENT_ID": "your-xray-client-id",
"XRAY_CLIENT_SECRET": "your-xray-client-secret"
}
}
}
}
重要提示:
XRAY_CLIENT_ID和XRAY_CLIENT_SECRET是可选的——如果不需要测试步骤详细信息,则省略它们添加配置后,重启Cursor IDE以加载MCP服务器。
配置完成后,您可以在Cursor中使用以下工具:
list_tests - 列出项目中的所有测试get_test - 获取详细的测试信息(可能不总是返回步骤)get_test_with_steps - 新功能! 获取带有步骤的详细测试信息(使用可靠的GraphQL查询)create_test - 创建一个新的测试update_test - 更新现有的测试list_test_executions - 列出测试执行get_test_execution - 获取测试执行详情create_test_execution - 创建新的测试执行update_test_run - 更新测试运行状态list_test_plans - 列出所有测试计划get_test_plan - 获取测试计划详情create_test_plan - 创建新的测试计划add_tests_to_test_plan - 将测试添加到计划list_test_sets - 列出所有测试集get_test_set - 获取测试集详情import_execution_results - 导入Xray JSON格式的结果import_cucumber_results - 导入Cucumber JSON结果import_junit_results - 导入JUnit XML结果import_testng_results - 导入TestNG XML结果import_nunit_results - 导入NUnit XML结果import_robot_results - 导入Robot Framework XML结果import_behave_results - 导入Behave JSON结果import_feature_file - 导入Cucumber .feature文件export_cucumber_features - 将Cucumber特性导出为.feature文件获取带有步骤的测试 EXM-123
这使用了新的get_test_with_steps工具,可以可靠地获取测试步骤。
输出包含测试步骤:
**测试:EXM-123**
**摘要:** 验证用户登录功能
**测试类型:** 手动
**测试步骤:**
**步骤1:**
- **动作:** 导航至登录页面
- **数据:** URL: https://example.com/login
- **预期结果:** 显示登录页面
**步骤2:**
- **动作:** 输入有效凭证并点击提交
- **数据:** 用户名:testuser,密码:********
- **预期结果:** 用户成功认证
**步骤3:**
- **动作:** 验证用户仪表板是否显示
- **数据:** N/A
- **预期结果:** 仪表板显示用户资料和导航菜单
从文件test-results/junit.xml导入JUnit测试结果
从文件cucumber-report.json导入Cucumber结果
为测试EXM-1,EXM-2,EXM-3导出Cucumber特性
列出项目PROJ中标记为“回归”的所有测试
在项目PROJ中创建一个新的手动测试,摘要为“登录验证测试”,描述为“验证用户可以使用有效凭证登录”
更新测试PROJ-123在执行PROJ-456中的运行状态为PASS,并附注“所有断言通过”
在项目PROJ中创建一个测试执行,摘要为“冲刺5回归”,并添加测试PROJ-123, PROJ-124, PROJ-125
npm run dev
npm run build
XRayMCP/
├── src/
│ ├── index.ts # 主MCP服务器
│ ├── types.ts # TypeScript接口
│ ├── services/
│ │ └── XrayCloudService.ts # Xray Cloud API服务(GraphQL + REST)
│ └── tools/
│ ├── tests/ # 测试操作
│ │ ├── listTests.ts
│ │ ├── getTest.ts
│ │ ├── createTest.ts
│ │ └── updateTest.ts
│ ├── test-executions/ # 测试执行操作
│ │ ├── listTestExecutions.ts
│ │ ├── getTestExecution.ts
│ │ ├── createTestExecution.ts
│ │ └── updateTestRun.ts
│ ├── test-plans/ # 测试计划操作
│ │ ├── listTestPlans.ts
│ │ ├── getTestPlan.ts
│ │ ├── createTestPlan.ts
│ │ └── addTestsToTestPlan.ts
│ ├── test-sets/ # 测试集操作
│ │ ├── listTestSets.ts
│ │ └── getTestSet.ts
│ ├── import/ # 导入操作(新功能!)
│ │ ├── importExecutionResults.ts
│ │ ├── importCucumberResults.ts
│ │ ├── importJUnitResults.ts
│ │ ├── importTestNGResults.ts
│ │ ├── importNUnitResults.ts
│ │ ├── importRobotResults.ts
│ │ ├── importBehaveResults.ts
│ │ └── importFeatureFile.ts
│ └── export/ # 导出操作(新功能!)
│ └── exportC_ucumberFeatures.ts
├── dist/ # 编译后的JavaScript输出
├── XRAY_CLOUD_API_V2_ENDPOINTS.md # API文档
├── XRAY_CLOUD_V2_IMPLEMENTATION.md # 实现细节
├── package.json
├── tsconfig.json
└── README.md
此MCP服务器使用Xray Cloud提供的两个互补API:
https://xray.cloud.getxray.app/api/v2/graphqlquery {
getTest(issueId: "EXM-123") {
issueId
steps {
id
action
data
result
}
}
}
https://xray.cloud.getxray.app/api/v2POST /import/execution/* - 导入结果(多种格式)POST /import/feature - 导入BDD特性GET /export/cucumber - 导出BDD特性所有操作都使用通过以下方式获得的JWT Bearer令牌:
POST /api/v2/authenticate
Body: { client_id, client_secret }
Response: "eyJhbGciOiJIUzI1NiI..."
令牌:
dist/index.js路径在您的Cursor配置中是否正确npm run build以编译TypeScript代码XRAY_CLIENT_ID和XRAY_CLIENT_SECRET此MCP使用以下Jira和Xray API端点:
/rest/api/3/search/jql,/rest/api/3/issue/* 用于一般问题操作https://xray.cloud.getxray.app/api/v2/* 用于测试步骤和详细的测试信息(可选)MIT许可证 - 详见LICENSE文件
Korfu