Perforce ALM MCP服务器
注: Helix ALM已更名为 表演ALM。此服务器以Perforce ALM(以前为Helix ALM)REST API为目标。环境变量、工具名称和配置键仍然使用 HELIX_ALM_ 前缀用于向后兼容性。A. 模型上下文协议(MCP) 将Claude(和其他兼容MCP的AI助手)连接到 表演ALM (前身为Helix ALM)REST API。它允许您直接从对话中管理需求、测试用例、文档和自动化结果,并具有可选的Azure DevOps集成,用于将CI/CD测试结果拉入Perforce ALM。
______________________________________________________________________
特性
- 需求 --列出、搜索、创建、更新、删除和触发工作流事件
- 测试用例 --列出、搜索、创建、读取、更新和附加步骤;链接到需求
- 需求文件 --浏览文档树,向部分添加要求,创建快照
- 自动化套房 --提交测试运行结果(手动、从JUnit/xUnit XML或从Azure DevOps构建中);按名称或ID列出的参考套件
- Azure DevOps --从构建中提取测试结果,并将其直接推送到Perforce ALM自动化套件中
- 默认项目 --设置一次
set_default_project并省略project_name每次后续通话 - 现场发现 --在创建项目之前查找有效的优先级、状态、类别或类型值
- 基于会话的身份验证 --凭据仅保存在内存中,从不写入磁盘
______________________________________________________________________
需求
- Python 3.11+
mcp包装(pip install mcp)- 启用REST API的正在运行的Perforce ALM服务器(以前推荐使用Helix ALM,24版或更高版本)
- API令牌(推荐)或用户名/密码
______________________________________________________________________
安装
git clone https://github.com/gerhardkrugerdev/alm_mcp.git
cd alm_mcp
pip install mcp复制示例环境文件并填写您的详细信息(可选——您还可以通过 configure_helix_alm 运行时工具):
cp .env.example .env______________________________________________________________________
运行服务器
python helix_alm_mcp.py服务器通过以下方式进行通信 标准,这是MCP客户端(如Claude Desktop和Claude Code)的标准传输。
Claude桌面配置
将此块添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"helix-alm": {
"command": "python",
"args": ["C:/path/to/alm_mcp/helix_alm_mcp.py"],
"env": {
"HELIX_ALM_URL": "https://your-server:8443/",
"HELIX_ALM_API_KEY": "your-api-key",
"HELIX_ALM_API_SECRET": "your-api-secret"
}
}
}
}Claude代码配置
将相同的块添加到您的Claude代码中 settings.json 在...之下 "mcpServers".
______________________________________________________________________
认证
服务器支持两种身份验证方法:
| 方法 | 环境变量 | configure_helix_alm 论点 |
|---|---|---|
| API代币 *(推荐)* | HELIX_ALM_API_KEY + HELIX_ALM_API_SECRET | api_token="key:secret" |
| 基本身份验证 | HELIX_ALM_USER + HELIX_ALM_PASSWORD | username= + password= |
通过环境变量设置的凭据在启动时加载。您可以随时通过调用来覆盖它们 configure_helix_alm 在谈话中。
______________________________________________________________________
工具参考
配置
configure_helix_alm
为当前会话配置Perforce ALM(以前称为Helix ALM)连接。URL会自动规范化——您可以传递基本URL或其下的任何路径(例如。 https://server:8443/helix-alm/api/v0),它将正确解决。如果服务器只有一个项目,则会自动选择它作为默认项目。
| 参数 | 描述 |
|---|---|
url | 服务器基本URL,例如。 https://your-server:8443/ |
api_token | 中的API令牌 key:secret 格式 *(推荐)* |
username / password | 基本身份验证替代方案 |
ssl_verify | 验证SSL证书(默认 false 对于自签名证书) |
default_project | 可选默认项目--省略 project_name 从后续通话中 |
configure_azure_devops
为当前会话配置Azure DevOps连接。
| 参数 | 描述 |
|---|---|
organization | Azure DevOps组织名称 |
project | Azure DevOps项目名称 |
pat | 个人访问令牌 |
get_connection_status
返回Perforce ALM和Azure DevOps的当前连接状态(不透露凭据)。包括当前默认项目。
set_default_project
设置会话的默认项目。一旦设置,所有接受的工具 project_name 当省略参数时,将使用此项目。
| 参数 | 描述 |
|---|---|
project_name | 用作默认值的Helix ALM项目的名称 |
get_field_values
发现需求或测试用例中特定字段当前使用的值。在创建或更新项目之前,可用于查找有效的优先级、状态、类别或其他菜单字段值。
| 参数 | 描述 |
|---|---|
project_name | Helix ALM项目(如果省略,则使用默认值) |
item_type | "requirements" 或 "testCases" |
field_label | 用于查找值的字段名(例如。 "Priority", "Status", "Category") |
注: 这会从现有项目中发现值,因此尚未使用的值可能不会出现。如果找不到字段名,该工具将返回可用字段标签的列表。
______________________________________________________________________
需求
| 工具 | 说明 |
|---|---|
list_projects | 列出Perforce ALM中可用的所有项目 |
list_requirements | 列出项目中的要求(支持列选择和保存的筛选器) |
get_requirement | 通过标签获取单个需求的完整细节(例如。 BR-1960)或数字ID |
get_requirement_types | 列出项目中配置的需求类型 |
create_requirement | 使用摘要、描述、类型、优先级和自定义字段创建新需求 |
update_requirement | 更新现有需求的字段 |
delete_requirement | 删除需求 |
add_requirement_event | 根据需求触发工作流事件(例如。 Comment, Approve) |
search_requirements | 在摘要和描述字段中进行全文搜索 |
get_requirement_workflow_events | 列出当前可用于需求的工作流事件 |
示例——创建需求:
Create a functional requirement in "My Project" with summary "User login via SSO"
and description "The system must support SAML 2.0 SSO for all users."______________________________________________________________________
测试用例
| 工具 | 说明 |
|---|---|
list_test_cases | 列出项目中的测试用例(支持列选择和保存的筛选器) |
search_test_cases | 在摘要和描述字段中进行全文搜索 |
get_test_case | 通过标签或ID获取测试用例的完整详细信息,包括步骤和链接项 |
get_test_case_types | 列出项目中使用的测试用例类型 |
create_test_case | 使用可选步骤创建新的测试用例(步骤通过单独的PUT添加到 /steps 创建后的子资源) |
update_test_case | 更新现有测试用例上的字段和/或步骤(替换所有步骤) |
add_test_case_steps | 将步骤附加到现有测试用例中,而不删除当前步骤 |
link_test_case_to_requirement | 使用“需求测试人”可追溯性链接将测试用例链接到需求 |
create_test_case 参数
| 参数 | 描述 |
|---|---|
project_name | Perforce ALM项目名称 |
summary | 测试用例标题 |
test_case_type | 键入菜单项(例如。 "Validation", "Functional").默认为 "Validation" |
description | 详细说明 |
priority | 优先级菜单项值(如果在项目中的测试用例上配置) |
steps_json | JSON步骤数组——见下面的格式 |
additional_fields | 额外字段值的JSON对象 |
步骤格式:
[
{"text": "Open the login page", "expectedResult": "Login page is displayed"},
{"text": "Enter valid credentials", "expectedResult": "User is redirected to the dashboard"}
]注: Perforce ALM REST API不支持在测试用例创建(POST)期间内联添加步骤。此服务器通过首先创建测试用例,然后通过PUT向/testCases/{id}/steps使用子资源detailed步骤格式。
get_test_case 参数
| 参数 | 描述 |
|---|---|
project_name | Perforce ALM项目名称 |
test_case_identifier | 测试用例标签(例如。 TC-382)或数字ID |
返回测试用例字段、所有步骤(具有预期结果)和链接项。步骤从 /steps 子资源,因为主测试用例端点不包括它们。
update_test_case 参数
| 参数 | 描述 |
|---|---|
project_name | Perforce ALM项目名称 |
test_case_identifier | 测试用例标签(例如。 TC-382)或数字ID |
summary | 新摘要(留空以保持最新) |
description | 新描述(留空以保持最新) |
test_case_type | 新建类型值(留空以保持最新) |
steps_json | 替换现有步骤的JSON步骤数组(格式与 create_test_case) |
additional_fields | 额外字段值的JSON对象 |
所有参数都是可选的,只有您提供的字段才会被更新。步骤被完全替换(未合并)。要添加步骤而不删除现有步骤,请使用 add_test_case_steps 相反。
add_test_case_steps 参数
| 参数 | 描述 |
|---|---|
project_name | Helix ALM项目(如果省略,则使用默认值) |
test_case_identifier | 测试用例标签(例如。 TC-382)或数字ID |
steps_json | JSON步骤数组 附加 (格式与 create_test_case) |
该工具获取现有的步骤,附加新的步骤,并将组合列表PUT返回到API。
link_test_case_to_requirement 参数
| 参数 | 描述 |
|---|---|
project_name | Perforce ALM项目名称 |
test_case_identifier | 测试用例标签(例如。 TC-42)或数字ID |
requirement_identifier | 需求标签(例如。 BR-1960)或数字ID |
link_type | 链接定义名称。默认为 "Requirement Tested By" |
例子:
Create a test case in "My Project" titled "Verify SSO login flow" with type Validation
and steps: navigate to login, click SSO, verify redirect. Then link it to requirement BR-1960.______________________________________________________________________
需求文件
| 工具 | 说明 |
|---|---|
list_documents | 列出项目中的所有需求文档 |
create_document | 创建新的需求文档 |
get_document_tree | 获取文档的完整层次树(部分和要求) |
get_document_node_children | 获取文档树中特定节点的直接子节点 |
add_to_document_tree | 将需求作为子节点添加到特定节点下 |
add_to_document_tree_top_level | 将需求添加为文档中的顶级节点 |
get_document_requirements | 列出属于文档的所有要求(通过文档列表字段) |
create_document_snapshot | 创建文档的时间点快照以作为基线 |
______________________________________________________________________
自动化套房
所有自动化套件工具都接受一个套件 名字 (例如。 "Regression Suite")或 数字ID.
| 工具 | 说明 |
|---|---|
list_automation_suites | 列出项目中的所有自动化套件 |
create_automation_suite | 创建新的自动化套件 |
get_automation_suite | 获取特定套件的详细信息(按名称或ID) |
list_automation_builds | 列出提交到套件的构建 |
submit_automation_build | 以构建形式提交测试结果(完整JSON格式) |
submit_automation_results_simple | 使用逗号分隔的通过/失败/跳过列表提交结果 |
______________________________________________________________________
JUnit / xUnit XML 文件
这些工具允许您直接从CI生成的XML文件中提交测试结果。
| 工具 | 说明 |
|---|---|
submit_junit_results | 从JUnitXML文件提交结果 |
submit_xunit_results | 从xUnit v2 XML文件提交结果 |
submit_test_results_xml | 自动检测格式(JUnit或xUnit)并提交 |
preview_test_results_xml | 无需提交即可解析和预览XML文件 |
示例XML文件在 samples/ 目录。
______________________________________________________________________
Azure DevOps集成
| 工具 | 说明 |
|---|---|
azdo_list_pipelines | 列出Azure DevOps项目中的构建管道 |
azdo_list_builds | 列出最新版本,可选择按管道筛选 |
azdo_get_test_results | 从特定版本获取测试结果 |
azdo_submit_to_helix_alm | 从构建中获取结果并将其提交给Perforce ALM自动化套件(按名称或ID) |
azdo_submit_latest_to_helix_alm | 与上述相同,但会自动选择最新完成的构建 |
端到端示例:
Fetch the latest completed build from Azure DevOps pipeline 42 and submit
the test results to Perforce ALM automation suite 7 in project "My Project".______________________________________________________________________
环境变量
所有变量都是可选的——服务器将回退到 configure_* 如果没有设置工具。
| 变量 | 描述 |
|---|---|
HELIX_ALM_URL | 执行ALM服务器基本URL |
HELIX_ALM_USER | 基本身份验证的用户名 |
HELIX_ALM_PASSWORD | 基本身份验证密码 |
HELIX_ALM_API_KEY | API密钥(首选) |
HELIX_ALM_API_SECRET | API机密(首选) |
HELIX_ALM_SSL_VERIFY | 设置为 true 强制执行SSL证书验证 |
HELIX_ALM_DEFAULT_PROJECT | 默认项目名称(可选-也可以通过以下方式设置 set_default_project) |
AZDO_ORG | Azure DevOps组织 |
AZDO_PROJECT | Azure DevOps项目 |
AZDO_PAT | Azure DevOps个人访问令牌 |
______________________________________________________________________
安全注意事项
- 凭据是 从未写入磁盘 --它们仅在会话的生命周期内存在于进程内存中。
- 这
.env通过以下方式将文件排除在版本控制之外.gitignore.使用.env.example作为模板。 - 默认情况下,SSL验证被禁用,以支持内部Perforce ALM部署中常见的自签名证书。启用它(
ssl_verify=true)当连接到具有可信证书的服务器时。
