Skip to main content
Glama
tosin2013

pytest-mcp-server

by tosin2013
README.md
# Pytest MCP Server

A Model Context Protocol (MCP) server for debugging pytest failures using systematic debugging principles.

## โœ… Status: Production Ready

This MCP server is **fully functional** and ready for use. All 8 tools work correctly with proper error handling and response formatting that complies with the official MCP specification.

## ๐Ÿงช Testing Status

### โœ… **Server Functionality**: Perfect
- All tools work correctly with valid inputs
- Proper error handling for invalid inputs  
- Compliant with MCP error reporting standards
- Successfully tested with direct JSON-RPC calls
- Compatible with MCP Inspector and real MCP clients

### โš ๏ธ **Framework Testing Limitation**: Known Issue
- MCP Testing Framework shows 1 validation error due to a bug in mcp-framework 0.2.13
- **Root Cause**: mcp-framework returns validation errors with `"type": "error"` instead of MCP-compliant `"type": "text"`
- **Impact**: Testing framework validation fails, but server works perfectly in real usage
- **Status**: Documented issue, affects testing only, not production functionality

This is a known pattern documented in the official **Standardized Error Reporting Formats for Model Context Protocol Servers** document regarding SDK implementation challenges.

## ๐Ÿ›  Tools Available

1. **register_pytest_failure** - Register a new test failure
2. **list_failures** - List all registered failures  
3. **get_failure_info** - Get detailed information about a specific failure
4. **debug_with_principle** - Apply debugging principles systematically
5. **analyze_failures** - Analyze patterns in test failures
6. **generate_debug_prompt** - Generate LLM prompts for debugging
7. **pytest_docs_guide** - Get pytest documentation guidance
8. **example_tool** - Example tool for testing

## ๐Ÿš€ Quick Start

### Installation

```bash
npm install -g pytest-mcp-server
```

### Usage with Claude Desktop

Add to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "pytest-mcp-server": {
      "command": "pytest-mcp-server",
      "args": ["start"],
      "env": {
        "DATA_DIR": "./pytest-data"
      }
    }
  }
}
```

### Usage as HTTP Server

```bash
# Start HTTP server on port 3001
pytest-mcp-server start-http

# Or specify custom port
PORT=8080 pytest-mcp-server start-http
```

### Direct Usage

```bash
# Start MCP server (stdio mode)
pytest-mcp-server start

# Test with MCP Inspector
npx @modelcontextprotocol/inspector pytest-mcp-server start
```

## ๐Ÿ“‹ Example Usage

### 1. Register a Test Failure

```json
{
  "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. Apply Debugging Principles

```json
{
  "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. Get Failure Analytics

```json
{
  "name": "analyze_failures",
  "arguments": {
    "analysis_type": "patterns"
  }
}
```

## ๐Ÿ”ง Development

### Prerequisites

- Node.js 18.19.0 or higher
- npm or yarn

### Setup

```bash
# 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
```

### Testing

```bash
# 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
```

## ๐Ÿ“ Data Storage

The server stores data in JSON files:
- `failures.json` - Test failure records
- `debug_sessions.json` - Debugging session data

Default location: `./data/` (configurable via `DATA_DIR` environment variable)

## ๐Ÿ› Known Issues

### MCP Framework Validation Error
- **Issue**: mcp-framework 0.2.13 returns validation errors with non-compliant `"type": "error"`
- **Expected**: MCP specification requires `"type": "text"` for all error content
- **Impact**: MCP Testing Framework validation fails (false negative)
- **Workaround**: Use direct testing or MCP Inspector for validation
- **Status**: Reported to framework maintainers

See `framework-issue-report.md` for detailed technical analysis.

## ๐Ÿค Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## ๐Ÿ“„ License

MIT License - see LICENSE file for details.

## ๐Ÿ”— Related

- [Model Context Protocol](https://modelcontextprotocol.io/)
- [MCP Testing Framework](https://github.com/modelcontextprotocol/testing-framework)
- [Pytest Documentation](https://docs.pytest.org/)

---

**Note**: This server is production-ready and fully functional. The testing framework validation issue is a known limitation of the current mcp-framework implementation and does not affect real-world usage.