Skip to main content
Glama

Pytest MCP Server

by enginSacan
README.md6 kB
# Pytest MCP Server A Model Context Protocol (MCP) server that enables AI assistants like Claude to run and analyze pytest tests for desktop applications. ## Overview This project demonstrates how to integrate pytest with AI assistants through MCP. It includes: - **Real Desktop Application**: A fully functional calculator app built with tkinter - **Comprehensive Test Suite**: pytest tests covering UI, functionality, and edge cases - **MCP Server**: Connects pytest to AI assistants for interactive testing ## Project Structure ``` pytest-mcp-server/ ├── src/ │ ├── __init__.py │ └── calculator_app.py # Desktop calculator application ├── tests/ │ ├── __init__.py │ └── test_calculator.py # Pytest test suite ├── server.py # MCP server implementation ├── pyproject.toml # Project configuration └── README.md ``` ## Installation ### Prerequisites - Python 3.10 or higher - pip package manager ### Setup 1. **Clone or navigate to the project directory:** ```bash cd /Users/303748/Documents/ws/pytest-mcp-server ``` 2. **Create a virtual environment:** ```bash python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate ``` 3. **Install dependencies:** ```bash pip install -e . ``` Or install with development dependencies: ```bash pip install -e ".[dev]" ``` ## Running the Calculator App To run the desktop calculator application: ```bash python -m src.calculator_app ``` Or use the installed script: ```bash calculator-app ``` ## Running Tests Manually Run all tests: ```bash pytest tests/ ``` Run with verbose output: ```bash pytest tests/ -v ``` Run only UI tests: ```bash pytest tests/ -m ui ``` Run tests excluding slow ones: ```bash pytest tests/ -m "not slow" ``` Run specific test class: ```bash pytest tests/test_calculator.py::TestBasicOperations ``` ## Using the MCP Server ### Configuration 1. **Find your Claude Desktop config file:** - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - Windows: `%APPDATA%\Claude\claude_desktop_config.json` 2. **Add the MCP server configuration:** **IMPORTANT NOTICE:** You need to give execution rights to the run_server.sh file ```json { "mcpServers": { "pytest": { "command": "/Users/303748/Documents/ws/pytest-mcp-server/run_server.sh", "args": [] } } } ``` 3. **Restart Claude Desktop** ### Using with Claude Once configured, you can interact with your tests through Claude: **Example conversations:** > **You:** "List all available tests in the calculator project" > **You:** "Run the UI tests for the calculator" > **You:** "Run only the error handling tests" > **You:** "Show me the results of the last test run" > **You:** "The addition test is failing, can you help me debug it?" ## MCP Server Tools The server provides three main tools: ### 1. run_tests Executes pytest tests with specified options. **Parameters:** - `test_path` (required): Path to test file or directory - `markers` (optional): Pytest markers to filter tests - `verbose` (optional): Show detailed output (default: true) - `capture` (optional): Output capture method (default: "no") ### 2. list_tests Lists all available tests without running them. **Parameters:** - `test_path` (optional): Path to scan for tests (default: "tests/") ### 3. get_test_results Retrieves and formats the last test run results. **Parameters:** None ## Test Markers The test suite uses these markers: - `@pytest.mark.ui` - UI-related tests - `@pytest.mark.error_handling` - Error handling tests - `@pytest.mark.slow` - Slow-running tests ## Development ### Running Tests with Coverage ```bash pytest tests/ --cov=src --cov-report=html ``` View coverage report: ```bash open htmlcov/index.html # macOS ``` ### Code Formatting Format code with Black: ```bash black src/ tests/ server.py ``` Lint code with Ruff: ```bash ruff check src/ tests/ server.py ``` ## Calculator Features The calculator application supports: - **Basic operations**: Addition, subtraction, multiplication, division - **Advanced operations**: Square root - **UI controls**: Clear (C), Clear Entry (CE), Backspace (←) - **Decimal numbers**: Full decimal support - **Error handling**: Division by zero, negative square roots, invalid expressions ## Test Coverage The test suite includes: ### Basic Operations - Addition - Subtraction - Multiplication - Division - Division by zero handling ### Advanced Operations - Square root calculations - Square root of negative numbers - Decimal number operations ### UI Functions - Clear button functionality - Clear entry functionality - Backspace operation - Chaining multiple operations ### Edge Cases - Very large numbers - Operations with zero - Invalid expressions ## Troubleshooting ### Tests not running Make sure you're in the project directory and have activated the virtual environment: ```bash cd /Users/303748/Documents/ws/pytest-mcp-server source venv/bin/activate pytest tests/ ``` ### MCP server not connecting 1. Check that the path in `claude_desktop_config.json` is correct 2. Ensure Python is in your PATH 3. Restart Claude Desktop after configuration changes 4. Check Claude Desktop logs for error messages ### Import errors Make sure the package is installed in editable mode: ```bash pip install -e . ``` ## Contributing Contributions are welcome! Areas for improvement: - Add more calculator features (memory, history) - Implement screenshot capture on test failures - Add performance benchmarking tools - Create more test scenarios - Improve error messages ## Resources - [MCP Documentation](https://modelcontextprotocol.io/) - [Pytest Documentation](https://docs.pytest.org/) - [Claude Desktop](https://claude.ai/download) ## Author Created as an example project for the LinkedIn article "Building an MCP Server for Pytest: Automating Desktop Application Testing"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/enginSacan/MCPPyTestImplementation'

If you have feedback or need assistance with the MCP directory API, please join our Discord server