使用说明
Pytest管道MCP服务器
一个模型上下文协议(MCP)服务器,提供完整的pytest管道:分析代码、生成测试、以覆盖率运行和自动修复故障。
概述
给定一个Python文件或代码字符串,服务器可以:
- 分析 使用AST解析(函数、类、方法)、验证语法和报告质量指标的代码结构
- 生成 pytest测试使用 证据优先 方法(文档测试、类型提示、异常、边界值),可选AI细化
- 跑 在具有覆盖率报告的隔离环境中生成测试
- 修复 使用AI辅助的错误检测自动失败代码(可选,需要OpenAI API密钥)
- 整合 使用GitHub分析存储库并创建pull请求
- 质量:包括300多个内部pytest测试(服务/核心/处理程序),以保持管道的可靠性
安装
需要Python 3.10+。推荐:
uv.
git clone https://github.com/hadasaelishyov/pytest-pipeline-mcp.git
cd pytest-pipeline-mcp
uv sync
# sanity check
uv run pytest
跑步
推荐:通过MCP客户端(Cursor/Claude Desktop等)运行
将此服务器添加到MCP客户端配置中。客户端将自动启动它。
配置示例:
{
"mcpServers": {
"pytest-pipeline": {
"command": "uv",
"args": ["run", "pytest-pipeline-mcp"],
"cwd": "C:\\path\\to\\pytest-pipeline-mcp"
}
}
}
更新配置后重新启动MCP客户端。
调试:手动运行服务器
uv run pytest-pipeline-mcp
可选配置
为可选功能设置环境变量:
OPENAI_API_KEY--实现人工智能增强的生成和fix_codeGITHUB_TOKEN--启用GitHub工具(PR/评论)
PowerShell:
$env:OPENAI_API_KEY="..."
$env:GITHUB_TOKEN="..."
端到端管道
该服务器的核心设计原则是 工具可组合性每个工具的输出都被结构化为下一个工具的输入,从而实现无缝链接的工作流程:
┌──────────────┐ ┌─────────────────┐ ┌───────────┐ ┌──────────┐
│ analyze_code │ ──▶ │ generate_tests │ ──▶ │ run_tests │ ──▶ │ fix_code │
└──────────────┘ └─────────────────┘ └───────────┘ └──────────┘
│ │ │ │
▼ ▼ ▼ ▼
Code structure Test code Pass/fail + Fixed code
+ warnings ready to run coverage + verification
工具参考
核心工具
| 工具 | 目的 | 必需 | 可选 |
|---|---|---|---|
analyze_code |
通过AST解析代码,验证语法,报告指标 | file_path 或 code |
— |
generate_tests |
通过循证富集生成pytest测试 | file_path 或 code |
output_path, include_edge_cases, use_ai |
run_tests |
在覆盖范围内的隔离环境中执行测试 | source_code, test_code |
— |
fix_code |
人工智能辅助的错误修复与验证 | source_code, test_code |
test_output, verify |
GitHub工具
| 工具 | 目的 | 必需 | 可选 |
|---|---|---|---|
analyze_repository |
克隆并分析测试覆盖率差距的存储库 | repo_url |
branch, path_filter |
get_repo_file |
从存储库检索文件内容 | repo_url, file_path |
branch |
create_test_pr |
使用生成的测试创建PR | repo_url, test_code, target_file |
branch, title |
comment_test_results |
PR的测试后结果 | repo_url, pr_number, test_results |
coverage_report |
建筑
pytest_pipeline_mcp/
├── server.py # MCP entry point (thin routing layer)
├── handlers/ # Tool handlers (MCP ↔ services)
│ ├── core/ # analyze, generate, run, fix
│ └── github/ # repo analysis, PR creation, comments
├── services/ # Business logic (testable without MCP)
│ ├── base.py # ServiceResult pattern, error codes
│ ├── code_loader.py # Load Python code from file/string
│ ├── analysis.py # AnalysisService
│ ├── generation.py # GenerationService
│ ├── execution.py # ExecutionService
│ ├── fixing.py # FixingService
│ ├── github.py # GitHubService
│ └── repository_analysis.py # RepositoryAnalysisService
└── core/ # Pure logic (no framework dependencies)
├── analyzer/ # AST parsing, syntax validation
├── generators/ # Template + AI test generation
│ ├── template.py # Layer 1+2: template & evidence tests
│ ├── ai.py # Layer 3: AI enhancement
│ └── extractors/ # Doctest, type, exception extractors
├── runner/ # pytest execution, coverage
├── fixer/ # AI-powered bug fixing
└── repo_analysis/ # Repository analysis models
设计原则:
- 关注点分离:服务器→ 处理器→ 服务→ Core
- ServiceResult模式:所有操作返回成功/失败,并带有结构化错误
- 依赖注入:服务通过以下方式接受依赖关系
__init__可测试性 - 框架独立性:核心模块没有MCP或外部框架依赖关系
测试生成管道
生成器使用三层方法:
- 第1层(回退烟雾):仅在未发现循证检测时使用
- 第2层(证据):从代码中的具体信号中丰富:
- Doctest示例→ 确切断言
- 类型注解→ 类型检查和边界值
- 发表声明→
pytest.raises测试 - 命名约定→ 布尔断言
is_*/has_*
- 第3层(AI,可选):OpenAI增强了具有计算期望值的断言
局限性
- 测试在子流程中运行,超时30秒
fix_code和人工智能增强需要一个OpenAI API密钥- GitHub的运营受到费率限制
安全说明
此服务器执行Python代码。不要在没有沙盒的情况下运行不受信任的代码。 安全存储API密钥,并使用最小的GitHub令牌权限。
