Polarion MCP服务器
此存储库包含用于Polarion应用程序生命周期管理(ALM)集成的模型上下文协议(MCP)服务器实现。
MCP工具可用于Polarion工作项,包括:
get_text_for_workitems_by_id:获取指定工作项ID的主文本内容。get_text_for_workitem_at_revision:获取特定修订版中单个工作项的文本内容。get_details_for_workitems:获取指定工作项ID的详细信息,包括状态、类型、受让人、自定义字段和链接的工作项。get_documents:列出项目中的文档,可选择按标题筛选。get_documents_by_space_names:列出指定空间名称内的文档。get_space_names:列出项目中所有可用的空间名称。get_sections_in_document:获取文档中的节列表。get_section_content_for_document:获取文档中特定节的内容。search_workitems_in_document:根据文本条件在文档中搜索工作项。list_available_custom_fields_for_workitem_types:列出特定工作项类型的所有可用自定义字段。list_available_workitem_types:列出项目中可用的所有工作项类型。get_revisions_list_for_workitem:获取特定工作项的修订ID列表,从最新到最旧排序。get_revisions_content_for_workitem:获取不同版本的工作项的内容,包括标题、状态、描述和其他标准字段。
项目
- PolarionRemoteMcpServer:用于基于服务器的安装的基于(流式HTTP或SSE)的MCP服务器
- PolarionMcpServer:用于本地工作站安装的Polarion集成的基于控制台的MCP服务器
通过Docker和Linux服务器运行(推荐)
- 在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": "*",
"ApiConsumers": {
"Consumers": {
"my_app": {
"Name": "My Application",
"ApplicationKey": "your-secure-api-key-here",
"Active": true,
"AllowedScopes": ["polarion:read"],
"Description": "API consumer for my application"
}
}
},
"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": 60
},
"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": 60
}
},
{
"ProjectUrlAlias": "grogu",
"Default": false,
"SessionConfig": {
"ServerUrl": "https://polarion-dev.int.mycompany.com/",
"Username": "vader",
"Password": "12345",
"ProjectId": "grogu_boss",
"TimeoutSeconds": 60
}
}
]
}- 运行Docker容器:
docker run -d \
--name polarion-mcp-server \
-p 8080:8080 \
-v appsettings.json:/app/appsettings.json \
peakflames/polarion-remote-mcp-server- 服务器现在应该正在运行。MCP客户端将使用特定于所需项目配置别名的URL进行连接:
1. 可流式HTTP传输: http://{{your-server-ip}}:8080/{ProjectUrlAlias}. 1. 苏格兰和南方能源公司运输: http://{{your-server-ip}}:8080/{ProjectUrlAlias}/sse.
- 服务器还提供:
- REST API: http://{{your-server-ip}}:8080/polarion/rest/v1/projects/{ProjectId}/... (使用 SessionConfig.ProjectId) - 注: REST API端点需要通过 X-API-Key 头球 - API文件: http://{{your-server-ip}}:8080/scalar/v1 (包括身份验证UI) - 健康检查: http://{{your-server-ip}}:8080/api/health
- 📢重要提示-不要与服务器的副本实例一起运行,因为会话连接不会在副本之间共享。
配置选项
配置文件:
appsettings.json-生产/服务器部署的基本配置appsettings.Development.json-覆盖本地开发的基础设置(gitignored,在开发模式下优先).env-可选环境变量(复制自.env.example),可以设置POLARION_DEFAULT_PROJECT
服务器使用 PolarionProjects 数组输入 appsettings.json 定义一个或多个Polarion实例配置。数组中的每个对象代表一个可通过唯一URL别名访问的不同配置。
| 顶层设置 | 说明 |
|---|---|
PolarionProjects | (数组)包含一个或多个Polarion项目配置对象。 |
每个项目配置对象:
| 设置 | 说明 | 必填 | 默认 |
|---|---|---|---|
ProjectUrlAlias | 连接URL中使用的唯一字符串(/{ProjectUrlAlias}/sse)以识别此配置。 | 是 | 不适用 |
Default | (布尔值)如果 true,如果客户端连接时没有指定 ProjectUrlAlias。只能输入一个条目 true。 | 没有 | false |
SessionConfig | (对象)包含此Polarion实例的特定连接详细信息。 | 是 | 不适用 |
PolarionWorkItemTypes | (数组,可选)定义此项目中特定工作项类型的要检索的自定义字段。数组中的每个对象都应该有一个 id (字符串,工作项类型ID)和 fields (字符串数组、自定义字段名)。 | 否 | 空列表 |
SessionConfig 对象详细信息:
| 设置 | 说明 | 必填 | 默认 |
|---|---|---|---|
ServerUrl | Polarion服务器的URL(例如,“https://polarion.example.com/“) | 是 | 不适用 |
Username | 具有适当权限的Polarion用户名。 | 是 | 不适用 |
Password | Polarion用户的密码。 (考虑安全的替代方案) | 是 | 不适用 |
ProjectId | The *实际的* 要与之交互的Polarion项目的ID。 | 是 | 不适用 |
TimeoutSeconds | 连接超时(秒)。 | 没有 | 60 |
环境变量密码覆盖
不要在配置文件中放置密码,而是设置 POLARION_PASSWORD 环境变量。设置后,它将覆盖 SessionConfig.Password 对于所有已配置的项目。
Docker示例:
docker run -d \
--name polarion-mcp-server \
-p 8080:8080 \
-e POLARION_PASSWORD=your-secret-password \
-v appsettings.json:/app/appsettings.json \
peakflames/polarion-remote-mcp-server这对两者都有效 PolarionRemoteMcpServer (HTTP)和 PolarionMcpServer (stdio)。
*注意:强烈建议使用 POLARION_PASSWORD 用于存储凭据的环境变量或更安全的方法(如用户机密、Azure密钥库等),而不是将纯文本密码放置在 appsettings.json.*
REST API规范协调
REST API旨在与 官方Polarion REST API 规格可在 https://testdrive.polarion.com/polarion/rest/v1/definition该定义的本地副本保存在 docs/polarion-rest-vq-definition.json 以供实现或扩展端点时参考。
API密钥验证(仅适用于REST API)
REST API端点需要通过API密钥进行身份验证。在中配置API使用者 ApiConsumers 部分 appsettings.json:
| 设置 | 说明 | 必填 |
|---|---|---|
ApiConsumers.Consumers | 按消费者ID键入的消费者配置词典 | 是 |
Name | API使用者的显示名称 | 是 |
ApplicationKey | 用于身份验证的API密钥 | 是 |
Active | 是否允许消费者进行身份验证 | 是 |
AllowedScopes | 范围列表(例如。, ["polarion:read"]) | 是 |
Description | 消费者的可选描述 | 否 |
可用范围:
polarion:read-读取对所有REST API端点的访问权限
用途:
curl -H "X-API-Key: your-api-key" http://localhost:8080/polarion/rest/v1/projects/{projectId}/spaces注: MCP端点、健康检查(/api/health, /api/version)和API文档(/scalar/v1)不需要身份验证。
配置MCP客户端
要配置Cline,请执行以下操作:
- 打开Cline的MCP设置界面
- 单击“远程服务器”选项卡
- 对于每一个
ProjectUrlAlias在你的appsettings.json用户想要连接到:
{
"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代码,请执行以下操作:
将以下配置添加到您的settings.json文件中:
"servers": {
"polarion-starlight": { // Use a descriptive key
"type": "sse",
"url": "http://{{your-server-ip}}:8080/starlight/sse", // Replace with your alias
"env": {}
},
"polarion-octopus": {
"type": "sse",
"url": "http://{{your-server-ip}}:8080/octopus/sse", // Replace with your alias
"env": {}
}
// Add entries for each ProjectUrlAlias
}前往克劳德桌面:
Claude Desktop目前不支持SSE,但您可以在Claude_Desktop_config.json文件中添加以下代理:
{
"mcpServers": {
"polarion-remote": {
"command": "npx",
"args": [
"mcp-remote",
"http://{{your-server-ip}}:8080/{ProjectUrlAlias}/sse" // Replace {ProjectUrlAlias}
]
}
// Add entries for each ProjectUrlAlias, potentially using different keys like "polarion-starlight"
}
}本地运行(stdio)
对于本地开发或工作站使用,您可以运行基于stdio的MCP服务器:
- 从下载适用于您平台的可执行文件 发布页面
- 配置您的MCP客户端,使其使用带有可执行路径的stdio传输
贡献
对于希望从源代码进行贡献或构建的开发人员,请参阅 贡献.md.
许可证
看 许可证 了解详情。

