Enables running and analyzing pytest tests for desktop applications, providing tools to execute tests with various options, list available tests, and retrieve formatted test results.
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
Installation
Prerequisites
Python 3.10 or higher
pip package manager
Setup
Clone or navigate to the project directory:
Create a virtual environment:
Install dependencies:
Or install with development dependencies:
Running the Calculator App
To run the desktop calculator application:
Or use the installed script:
Running Tests Manually
Run all tests:
Run with verbose output:
Run only UI tests:
Run tests excluding slow ones:
Run specific test class:
Using the MCP Server
Configuration
Find your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the MCP server configuration:
IMPORTANT NOTICE: You need to give execution rights to the run_server.sh file
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 directorymarkers(optional): Pytest markers to filter testsverbose(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
View coverage report:
Code Formatting
Format code with Black:
Lint code with Ruff:
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:
MCP server not connecting
Check that the path in
claude_desktop_config.jsonis correctEnsure Python is in your PATH
Restart Claude Desktop after configuration changes
Check Claude Desktop logs for error messages
Import errors
Make sure the package is installed in editable mode:
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
Author
Created as an example project for the LinkedIn article "Building an MCP Server for Pytest: Automating Desktop Application Testing"
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables AI assistants to run and analyze pytest tests for desktop applications through interactive commands. Supports test execution, filtering, result analysis, and debugging for comprehensive test automation workflows.