报告门户MCP服务器
A. 模型上下文协议(MCP) 使AI助手能够与之交互的服务器 报告门户,一个全面的测试自动化结果聚合和分析平台。
概述
此MCP服务器为AI助手提供了以下能力:
- 查询测试执行数据 -访问启动、测试项、日志和执行历史记录
- 分析测试失败 -搜索错误模式,执行根本原因分析,并跟踪片状测试
- 产生见解 -创建每周/每两周的总结和趋势分析
- 管理仪表板 -检索仪表板配置、小部件和过滤器
- 导出报告 -将分析报告作为谷歌文档发布到谷歌云端硬盘
主要特点
- API全面覆盖:完全访问报告门户的启动、测试项、日志、仪表板、小部件、过滤器和项目API
- 智能提示:用于根本原因分析(RCA)、每周和每两周总结的内置提示
- Google Drive集成:可选集成,用于将降价报告导出为格式化的谷歌文档
- 柔性运输:支持stdio、SSE、HTTP和可流式传输的HTTP
- 有条件的工具注册:工具会根据可用凭据自动启用/禁用
- 生产就绪:全面的测试套件、代码质量检查和适当的错误处理
目录
快速开始
# 1. Clone and setup
git clone https://github.com/Demostenes777/report-portal-mcp-server.git
cd report-portal-mcp-server
uv sync && source .venv/bin/activate
# 2. Configure credentials
cp env.example .env
# Edit .env with your Report Portal credentials
# 3. Run the server
uv run main.py
# 4. Run tests
uv run pytest -v -m "not integration"先决条件
- Python 3.12+
- 紫外线 包管理器
- 具有API访问权限的报表门户实例
- (可选)为Google Drive功能启用Drive API的Google Cloud项目
设置
uv sync && source .venv/bin/activate配置
复制 env.example 到 .env 并填写您的凭据:
cp env.example .env报告门户(RP工具所需)
RP_URL=https://your-reportportal-instance.com
RP_API_TOKEN=your_api_token_here
RP_PROJECT=your_project_name从以下位置获取API令牌:报表门户->用户配置文件->API密钥。
谷歌云端硬盘(可选)
GOOGLE_CREDENTIALS_PATH=/path/to/credentials.json
GOOGLE_TOKEN_PATH=/path/to/token.json看 Google云端硬盘设置 以下为详细说明。
MCP客户端配置
克劳德桌面
将此添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"report-portal": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/report-portal-mcp-server",
"env": {
"RP_URL": "https://your-reportportal-instance.com",
"RP_API_TOKEN": "your_api_token",
"RP_PROJECT": "your_project",
"RP_VERIFY_SSL": "false"
}
}
}
}游标/其他MCP客户端
配置服务器,使stdio传输指向 uv run main.py 在这个目录中。
跑步
# stdio transport (default, for MCP clients like Cursor/Claude Desktop)
uv run main.py
# SSE transport (for web-based clients)
MCP_TRANSPORT=sse uv run main.py
# HTTP transport on custom port
MCP_TRANSPORT=http MCP_PORT=9000 uv run main.py环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
RP_URL | - | 报表门户实例URL |
RP_API_TOKEN | - | 报表门户API令牌 |
RP_PROJECT | - | 报告门户项目名称 |
RP_VERIFY_SSL | false | SSL证书验证(true 对于CA签名的证书) |
GOOGLE_CREDENTIALS_PATH | - | 谷歌OAuth2证书JSON路径 |
GOOGLE_TOKEN_PATH | - | 存储/加载OAuth2令牌的路径 |
MCP_TRANSPORT | stdio | 运输: stdio, sse, http, streamable-http |
MCP_HOST | 127.0.0.1 | SSE/HTTP传输主机 |
MCP_PORT | 8000 | SSE/HTTP传输端口 |
可用工具
服务器提供了一套按功能组织的全面工具。工具根据可用凭据有条件地注册。
报告门户工具
需求: RP_URL, RP_API_TOKEN,以及 RP_PROJECT 必须进行配置。
这些工具提供了对Report Portal的REST API v1的完全访问,并提供了正确的身份验证、分页和过滤支持。
启动工具
启动代表测试执行运行。这些工具支持按状态、名称、属性和日期范围进行高级筛选。
| 工具 | 说明 | 关键参数 |
|---|---|---|
list_launches | 列表启动时带有过滤和分页功能 | filter_eq_status, filter_eq_name, filter_gte_start_time, page_size |
get_launch | 通过数字ID获取发布详细信息 | launch_id |
get_launch_by_uuid | 通过UUID获取启动详细信息 | uuid |
get_launch_attribute_keys | 获取用于筛选的可用属性键 | - |
get_launch_attribute_values | 获取特定键的属性值 | key |
测试项目工具
测试项表示启动中的单个测试用例、套件或步骤。
| 工具 | 说明 | 关键参数 |
|---|---|---|
list_test_items | 列出具有过滤和分页功能的测试项 | filter_eq_launch_id, filter_eq_status, filter_eq_type, page_size |
get_test_item | 通过数字ID获取测试项目详细信息 | item_id |
get_test_item_history | 获取跨发布的测试项执行历史记录 | item_id, history_depth |
日志工具
日志包含详细的测试执行输出、错误消息和堆栈跟踪。
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_logs | 通过过滤和分页获取日志 | filter_eq_item_id, filter_eq_log_level, page_size |
get_log_by_uuid | 通过UUID获取特定的日志条目 | uuid |
search_similar_errors | 在不同的发布中搜索类似的错误模式 | error_message, similarity_threshold |
仪表板、小部件和筛选工具
| 工具 | 说明 |
|---|---|
list_dashboards | 列出仪表板 |
get_dashboard | 获取仪表板详细信息,包括小部件 |
get_widget | 获取小部件详细信息和内容数据 |
list_filters | 列出已保存的筛选器 |
get_filter | 获取过滤器详细信息和条件 |
项目工具
| 工具 | 说明 |
|---|---|
list_projects | 列出可访问的项目 |
get_project | 获取项目详细信息 |
谷歌云端硬盘工具
需求:两者都有 GOOGLE_CREDENTIALS_PATH 和 GOOGLE_TOKEN_PATH 必须进行配置。
将报告门户分析导出到专业格式的Google文档,支持表格、标题和标记格式。
| 工具 | 说明 | 关键参数 |
|---|---|---|
create_google_doc_from_markdown | 从markdown内容创建Google文档 | title, content, folder_id 或 folder_name |
create_google_doc_from_file | 从本地markdown文件创建Google文档 | file_path, title, folder_id 或 folder_name |
convert_report_to_google_doc | 将RP分析报告转换为Google文档 | report_path, title, folder_name |
list_google_docs | 在您的驱动器中列出Google文档 | query, max_results |
find_folder_by_name | 在驱动器或共享驱动器中按名称查找文件夹 | folder_name, include_shared_drives |
日期工具
需求:无-始终可用。
用于筛选和报告生成中的日期/时间计算的实用工具。
| 工具 | 描述 | 返回 |
|---|---|---|
today | 获取UTC | ISO 8601日期字符串(YYYY-MM-DD)中的今天日期 |
now | 获取UTC | ISO 8601日期时间字符串中的当前日期和时间(YYYY-MM-DTHH:MM:SS.sssZ) |
提示
服务器包括三个用于常见分析工作流的内置提示:
| 提示 | 说明 | 用法 |
|---|---|---|
rca | 失败启动的根本原因分析说明 | 分析失败的测试、错误日志和历史记录,以确定根本原因 |
weekly | 每周发布分析摘要 | 提供通过率、故障模式和建议 |
biweekly | 双周发布分析,包括趋势比较 | 每周趋势、片状测试检测和异常分析 |
所有提示都会生成结构化的降价报告,并保存到 /tmp/rp/.
使用示例
根本原因分析
问你的AI助手:
Perform an RCA on launch 12345助理将:
- 检索发布详细信息和统计数据
- 识别所有未通过的测试项目
- 分析模式的错误日志
- 搜索其他发布中的类似错误
- 检查测试历史记录,以确定新故障与重复故障
- 生成一份包含建议的综合报告
每周总结
Generate a weekly summary for project my-project这分析了过去7天的发射情况,并提供了:
- 总发射次数和通过/失败细分
- 总体通过率
- 最常见的三种故障模式
- 经常失败的测试
- 可采取行动的建议
查询特定数据
List all failed launches from the last 3 daysShow me the error logs for test item 67890Find similar errors to "NullPointerException in UserService"Google Drive导出
Convert the RCA report for launch 12345 to a Google Doc in the "Test Reports" folderGoogle云端硬盘设置
1.创建谷歌云项目
- 首选 谷歌云控制台
- 点击“选择项目”->“新建项目”
- 输入项目名称,然后单击“创建”
2.启用Google Drive API
- 转到“API和服务”->“库”
- 搜索“Google Drive API”
- 点击“启用”
3.创建OAuth 2.0凭据
- 转到“API和服务”->“凭据”
- 点击“创建凭据”->“OAuth客户端ID”
- 如果系统提示,配置OAuth同意屏幕(选择“内部”用户类型)
- 选择“桌面应用程序”作为应用程序类型
- 下载JSON文件并将其另存为
credentials.json
4.配置环境
添加到您的 .env:
GOOGLE_CREDENTIALS_PATH=/absolute/path/to/credentials.json
GOOGLE_TOKEN_PATH=/absolute/path/to/token.json5.初始化身份验证
运行一次以完成OAuth浏览器流程:
uv run python -c "
from mcp_server.services.google_drive_service import GoogleDriveService
service = GoogleDriveService()
print('Google Drive service initialized successfully')
"将打开一个浏览器窗口进行身份验证。授予访问权限后,令牌会自动保存以供将来使用。
6.测试集成
uv run python -c "
from mcp_server.tools.google_drive_tools import register_google_drive_tools
from fastmcp import FastMCP
mcp = FastMCP('test')
register_google_drive_tools(mcp)
print('✓ Google Drive tools registered successfully')
"故障排除
报告门户工具不可用
问题:服务器已启动,但RP工具未注册。
解决方案:检查是否设置了所有必需的环境变量:
echo $RP_URL
echo $RP_API_TOKEN
echo $RP_PROJECT确保您的 .env 文件位于项目根目录中,格式正确。
SSL证书错误
问题: SSL: CERTIFICATE_VERIFY_FAILED 连接到报表门户时出错。
解决方案:如果使用自签名证书,请设置:
RP_VERIFY_SSL=false对于具有有效CA签名证书的生产环境,请使用 RP_VERIFY_SSL=true.
Google Drive身份验证失败
问题:OAuth流失败或找不到凭据。
解决方案:
- 验证
GOOGLE_CREDENTIALS_PATH指向有效的OAuth2凭据JSON文件 - 确保在您的Google Cloud项目中启用Google Drive API
- 检查OAuth同意屏幕是否配置正确
- 删除
token.json如果令牌损坏,则重新进行身份验证
导入错误
问题: ModuleNotFoundError 运行服务器时。
解决方案:确保虚拟环境已激活并安装了依赖项:
uv sync
source .venv/bin/activate # On Windows: .venv\Scripts\activate常见问题
我可以将其用于多个报告门户项目吗?
是的,但您需要使用不同的配置单独的MCP服务器实例 RP_PROJECT 价值观。
这支持Report Portal v5吗?
是的,此服务器与Report Portal v5 API兼容。
我可以在不集成Google Drive的情况下使用它吗?
当然!Google Drive集成是可选的。所有报告门户工具都独立工作。
如何运行集成测试?
集成测试需要一个实时报告门户实例。在中设置您的凭据 .env那么:
uv run pytest -v -m integration发展
# Run all checks (format, lint, tests)
bash scripts/run-checks.sh
# Run tests (unit only)
uv run pytest -v -m "not integration"
# Run integration tests (requires RP credentials in .env)
uv run pytest -v -m integration
# Format code
./.venv/bin/python -m ruff format .
./.venv/bin/python -m isort .
# Lint
./.venv/bin/python -m ruff check .项目结构
report-portal-mcp-server/
main.py # Entry point
pyproject.toml # Dependencies and tool config
pytest.ini # Test configuration
env.example # Environment template
scripts/
run-checks.sh # Code quality checks
mcp_server/
__init__.py
main.py # FastMCP server factory
config.py # Configuration and credential validation
services/
rp_base_service.py # Base HTTP client with Bearer auth
rp_launch_service.py # Launch API operations
rp_test_item_service.py # Test item API operations
rp_log_service.py # Log API operations
rp_dashboard_service.py # Dashboard API operations
rp_widget_service.py # Widget API operations
rp_filter_service.py # Filter API operations
rp_project_service.py # Project API operations
google_drive_service.py # Google Drive API operations
tools/
launch_tools.py # Launch MCP tools
test_item_tools.py # Test item MCP tools
log_tools.py # Log MCP tools
dashboard_tools.py # Dashboard MCP tools
widget_tools.py # Widget MCP tools
filter_tools.py # Filter MCP tools
project_tools.py # Project MCP tools
google_drive_tools.py # Google Drive MCP tools
date_tools.py # Date/time utility tools
prompts/
prompts.py # RCA, weekly, biweekly prompts
tests/
integration_test.py # Integration tests (need RP credentials)
test_launch_tools.py # Launch service unit tests
test_google_drive_tools.py # Google Drive service unit tests贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改并添加测试
- 运行代码质量检查:
bash scripts/run-checks.sh - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
代码质量标准
- 所有代码都必须通过
ruff格式化和linting - 进口商品必须按以下方式排序
isort - 所有新功能都必须包括单元测试
- 保持测试覆盖率在80%以上
- 遵循现有的代码结构和模式
致谢
该项目源自 dci-mcp服务器 红帽社区AI工具公司的项目。架构、服务层模式和MCP集成方法都受到了该项目的启发和改编。我们感谢原作者为测试自动化平台的MCP服务器实现所做的基础工作。
许可证
Apache许可证2.0
