此仓库包含用于 Polarion 应用生命周期管理(ALM)集成的模型上下文协议(MCP)服务器实现。
MCP 工具可用于 Polarion 工作项,包括:
get_text_for_workitems_by_id: 获取指定工作项ID的主要文本内容。get_details_for_workitems: 获取指定工作项ID的详细信息,包括状态、类型、分配人和其他标准字段。get_documents: 列出项目中的文档,可选地按标题过滤。get_documents_by_space_names: 列出指定空间名称内的文档。get_space_names: 列出项目中所有可用的空间名称。get_sections_in_document: 获取文档中的章节列表。get_section_content_in_document: 获取文档中特定章节的内容。search_workitems_in_document: 根据文本条件在文档中搜索工作项。get_configured_custom_fields: 根据当前项目的设置,获取为特定工作项类型ID配置的自定义字段列表。list_configured_workitem_types: 列出当前项目设置中定义了自定义字段配置的所有工作项类型ID。get_custom_fields_for_workitems: 获取给定工作项ID列表的指定自定义字段值。get_revisions_list_for_workitem: 获取特定工作项的修订ID列表,从最新到最旧排序。get_revisions_content_for_workitem: 获取工作项在不同修订中的内容,包括标题、状态、描述和其他标准字段。在您的Linux服务器上,创建一个目录用于配置和日志文件:
mkdir -p /opt/polarion-mcp-server
cd /opt/polarion-mcp-server
拉取Docker镜像:
docker pull peakflames/polarion-remote-mcp-server
创建一个定制化的/opt/polarion-mcp-server/appsettings.json文件以匹配您的Polarion配置:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"PolarionProjects": [
{
"ProjectUrlAlias": "starlight",
"Default": true,
"SessionConfig": {
"ServerUrl": "https://polarion.int.mycompany.com/",
"Username": "shared_user_read_only",
"Password": "linear-Vietnam-FLIP-212824",
"ProjectId": "Starlight_Main",
"TimeoutSeconds": 120
},
"PolarionWorkItemTypes": [
{
"id": "requirement",
"fields": ["custom_field_1", "priority", "severity"]
},
{
"id": "defect",
"fields": ["defect_type", "found_in_build"]
}
]
},
{
"ProjectUrlAlias": "octopus",
"Default": false,
"SessionConfig": {
"ServerUrl": "https://polarion.int.mycompany.com/",
"Username": "some_other_user",
"Password": "linear-Vietnam-FLIP-212824",
"ProjectId": "octopus_gov",
"TimeoutSeconds": 120
}
},
{
"ProjectUrlAlias": "grogu",
"Default": false,
"SessionConfig": {
"ServerUrl": "https://polarion-dev.int.mycompany.com/",
"Username": "vader",
"Password": "12345",
"ProjectId": "grogu_boss",
"TimeoutSeconds": 120
}
}
]
}
运行Docker容器:
docker run -d \
--name polarion-mcp-server \
-p 8080:8080 \
-v appsettings.json:/app/appsettings.json \
peakflames/polarion-remote-mcp-server
服务器现在应该正在运行。MCP客户端将使用特定于所需项目配置别名的URL进行连接:
http://{{your-server-ip}}:8080/{ProjectUrlAlias}。http://{{your-server-ip}}:8080/{ProjectUrlAlias}/sse。📢重要提示 - 不要运行服务器的副本实例,因为会话连接不会在副本之间共享。
appsettings.json)服务器使用appsettings.json中的PolarionProjects数组来定义一个或多个Polarion实例配置。数组中的每个对象代表可通过唯一URL别名访问的不同配置。
| 顶级设置 | 描述 |
|---|---|
PolarionProjects | (数组)包含一个或多个Polarion项目配置对象。 |
每个项目配置对象:
| 设置 | 描述 | 必需 | 默认值 |
|---|---|---|---|
ProjectUrlAlias | 用于连接URL(/{ProjectUrlAlias}/sse)中的唯一字符串,用于标识此配置。 | 是 | N/A |
Default | (布尔值)如果为true,则此配置将在客户端未指定ProjectUrlAlias时使用。仅能有一个条目为true。 | 否 | false |
SessionConfig | (对象)包含此Polarion实例的具体连接详情。 | 是 | N/A |
PolarionWorkItemTypes | (数组,可选)定义在此项目中特定工作项类型的自定义字段。数组中的每个对象应具有一个id(字符串,工作项类型ID)和fields(字符串数组,自定义字段名称)。 | 否 | 空列表 |
SessionConfig对象详情:
| 设置 | 描述 | 必需 | 默认值 |
|---|---|---|---|
ServerUrl | Polarion服务器的URL(例如:"https://polarion.example.com/") | 是 | N/A |
Username | 具有适当权限的Polarion用户名。 | 是 | N/A |
Password | Polarion用户的密码。(建议使用更安全的方法存储凭据) | 是 | N/A |
ProjectId | 要交互的实际Polarion项目ID。 | 是 | N/A |
TimeoutSeconds | 连接超时时间(秒)。 | 否 | 60 |
注意:强烈建议使用更安全的方法存储凭据(如用户密钥、Azure Key Vault等),而不是在appsettings.json中放置明文密码。
配置Cline:
appsettings.json中的每个ProjectUrlAlias,用户想要连接的:{
"mcpServers": {
...
...
"Polarion Starling": {
"autoApprove": [],
"disabled": true,
"timeout": 60,
"url": "http://{{your-server-ip}}:8080/starlight/sse",
"transportType": "sse"
},
"Polarion Octopus": {
"autoApprove": [],
"disabled": true,
"timeout": 60,
"url": "http://{{your-server-ip}}:8080/octopus/sse",
"transportType": "sse"
}
...
...
}
ProjectUrlAlias重复上述步骤。配置Visual Studio Code:
在您的settings.json文件中添加以下配置:
"servers": {
"polarion-starlight": { // 使用描述性键
"type": "sse",
"url": "http://{{your-server-ip}}:8080/starlight/sse", // 替换为您自己的别名
"env": {}
},
"polarion-octopus": {
"type": "sse",
"url": "http://{{your-server-ip}}:8080/octopus/sse", // 替换为您自己的别名
"env": {}
}
// 为每个ProjectUrlAlias添加条目
}
配置Claude Desktop:
Claude Desktop目前不支持SSE,但您可以使用代理,并在claude_desktop_config.json文件中添加以下内容:
{
"mcpServers": {
"polarion-remote": {
"command": "npx",
"args": [
"mcp-remote",
"http://{{your-server-ip}}:8080/{ProjectUrlAlias}/sse" // 替换{ProjectUrlAlias}
]
}
// 为每个ProjectUrlAlias添加条目,可能使用不同的键,如"polarion-starlight"
}
}
对于本地开发或工作站使用,您可以运行基于stdio的MCP服务器:
对于希望贡献或从源代码构建的开发者,请参阅CONTRIBUTING.md。
详情见LICENSE。