Pytest Mcp Server について
Pytest Mcp Serverは、pytestの失敗を調査する開発者向けのMCPサーバーです。失敗の記録に加え、手順に沿ったデバッグ、パターン分析、プロンプト生成を行えます。
主な機能
- 01pytestの失敗を記録・一覧表示
- 02個別の失敗情報を取得
- 03デバッグ原則を体系的に適用
- 04失敗パターンを分析
- 05デバッグ用プロンプトを生成
- 06pytestドキュメントの案内を取得
活用シーン
- 01失敗したテストとトレースバックの記録
- 02繰り返し発生する失敗パターンの確認
- 03登録済みの失敗の分析を整理
MCP 対応
失敗の記録、確認、分析に使える8つのツールをMCPクライアントに提供し、デバッグ案内やプロンプト生成にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pytest MCP サーバー
体系的なデバッグ原則を用いて pytest の失敗をデバッグする Model Context Protocol(MCP)サーバーです。
✅ ステータス:本番環境で利用可能
この MCP サーバーは完全に機能し、すぐに使用できます。8 つのツールすべてが正常に動作し、適切なエラー処理と、公式 MCP 仕様に準拠したレスポンス形式を備えています。
🧪 テストのステータス
✅ サーバーの機能:完璧
- すべてのツールが有効な入力で正常に動作します
- 無効な入力に対して適切にエラーを処理します
- MCP のエラー報告基準に準拠しています
- 直接の JSON-RPC 呼び出しでテスト済みです
- MCP Inspector および実際の MCP クライアントと互換性があります
⚠️ フレームワークのテストに関する制限:既知の問題
- mcp-framework 0.2.13 のバグにより、MCP Testing Framework で検証エラーが 1 件表示されます
- 根本原因:mcp-framework は、MCP に準拠した
"type": "text"ではなく、"type": "error"を含む検証エラーを返します - 影響:テストフレームワークの検証は失敗しますが、実際の使用ではサーバーは正常に動作します
- ステータス:文書化済みの問題です。影響するのはテストのみで、本番環境での機能には影響しません
これは、SDK の実装上の課題に関する公式ドキュメント Standardized Error Reporting Formats for Model Context Protocol Servers に記載されている既知のパターンです。
🛠 利用可能なツール
- register_pytest_failure - 新しいテスト失敗を登録します
- list_failures - 登録済みのすべての失敗を一覧表示します
- get_failure_info - 特定の失敗に関する詳細情報を取得します
- debug_with_principle - デバッグ原則を体系的に適用します
- analyze_failures - テスト失敗のパターンを分析します
- generate_debug_prompt - デバッグ用の LLM プロンプトを生成します
- pytest_docs_guide - pytest ドキュメントに関するガイダンスを取得します
- example_tool - テスト用のツールの例です
🚀 クイックスタート
インストール
npm install -g pytest-mcp-server
Claude Desktop での使用
Claude Desktop の MCP 設定に追加します。
{
"mcpServers": {
"pytest-mcp-server": {
"command": "pytest-mcp-server",
"args": ["start"],
"env": {
"DATA_DIR": "./pytest-data"
}
}
}
}
HTTP サーバーとしての使用
# Start HTTP server on port 3001
pytest-mcp-server start-http
# Or specify custom port
PORT=8080 pytest-mcp-server start-http
直接使用
# Start MCP server (stdio mode)
pytest-mcp-server start
# Test with MCP Inspector
npx @modelcontextprotocol/inspector pytest-mcp-server start
📋 使用例
1. テスト失敗を登録する
{
"name": "register_pytest_failure",
"arguments": {
"test_name": "test_user_authentication",
"file_path": "/tests/test_auth.py",
"line_number": 45,
"error_message": "AssertionError: Expected status 200, got 401",
"traceback": "Full traceback here..."
}
}
2. デバッグ原則を適用する
{
"name": "debug_with_principle",
"arguments": {
"failure_id": "1234567890",
"principle_number": 1,
"analysis": "This test is checking user authentication flow. The system expects a valid JWT token but seems to be receiving an invalid or expired token."
}
}
3. 失敗の分析情報を取得する
{
"name": "analyze_failures",
"arguments": {
"analysis_type": "patterns"
}
}
🔧 開発
前提条件
- Node.js 18.19.0 以降
- npm または yarn
セットアップ
# Clone the repository
git clone <repository-url>
cd pytest-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Start development server
npm run watch
テスト
# Test with simple script
./test-simple.sh
# Test with MCP Testing Framework (shows known validation issue)
mcp-test --test-config mcp-test-config.json --test-mcp-servers
# Test with Dagger (containerized testing)
./test-dagger-simple.sh
📁 データの保存先
サーバーはデータを JSON ファイルに保存します。
failures.json- テスト失敗の記録debug_sessions.json- デバッグセッションのデータ
デフォルトの保存先:./data/(DATA_DIR 環境変数で変更できます)
🐛 既知の問題
MCP Framework の検証エラー
- 問題:mcp-framework 0.2.13 は、準拠していない
"type": "error"を含む検証エラーを返します - 期待される動作:MCP 仕様では、すべてのエラーコンテンツに
"type": "text"を指定する必要があります - 影響:MCP Testing Framework の検証が失敗します(偽陰性)
- 回避策:検証には直接テストまたは MCP Inspector を使用してください
- ステータス:フレームワークのメンテナーに報告済みです
詳細な技術分析については、framework-issue-report.md を参照してください。
🤝 貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
📄 ライセンス
MIT License - 詳細については LICENSE ファイルを参照してください。
🔗 関連リンク
注:このサーバーは本番環境で利用可能で、完全に機能します。テストフレームワークの検証に関する問題は、現在の mcp-framework 実装における既知の制限であり、実際の使用には影響しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。