MCP Unit Test Sensei
An MCP server that enforces unit testing standards by linting code and guiding agentic coding tools (like Gemini CLI or Claude Code) to follow best practices in test-driven development.
README
MCP Testing Sensei
This project implements an MCP (Model Context Protocol) stdio server designed to enforce and guide agentic coding tools (like Gemini CLI or Claude Code) in adhering to language agnostic unit testing principles.
Core Principles Enforced
This tool aims to promote the following unit testing principles:
- Tests should be written before implementation. (BDD/TDD for the win)
- Tests should document the behavior of the system under test.
- Tests should be small, clearly written, and have a single concern.
- Tests should be deterministic and isolated from the side effects of their environment and other tests.
- Tests should be written in a declarative manner and never have branching logic.
Features
lint_codetool: Analyzes provided code snippets for violations of the defined unit testing standards.get_testing_principlestool: Provides the core unit testing principles to guide LLMs in generating better tests.unit-testing-principlesresource: Exposes testing principles as an MCP resource.
Installation
Option 1: Install from PyPI (Recommended)
The easiest way to install MCP Testing Sensei is via pip:
pip install mcp-testing-sensei
This installs the mcp-testing-sensei command globally.
Option 2: Install from npm
If you prefer using npm:
npm install -g @kourtni/mcp-testing-sensei
Note: This still requires Python to be installed on your system.
Option 3: Using Docker
docker pull kourtni/mcp-testing-sensei
Option 4: Development Setup with Nix
For development or if you want to build from source:
Prerequisites
- Nix (for reproducible development environment)
Development Environment Setup
To enter the development environment with all dependencies:
nix develop
Building the Standalone Executable
To build the standalone executable using Nix, run the following command:
nix build
This will create a result symlink in your project root, pointing to the built executable.
Running the Server
Using the Standalone Executable
After building, you can run the MCP stdio server directly from the result symlink:
./result/bin/mcp-testing-sensei
This will start the MCP server that communicates via standard input/output.
Running from Development Environment
Alternatively, if you are in the nix develop shell, you can run the MCP server:
python mcp_server.py
The server communicates via stdio, reading JSON-RPC messages from stdin and writing responses to stdout.
Using with MCP Clients
The server can be integrated with MCP-compatible clients like Claude Desktop or other tools that support the Model Context Protocol.
Configuration for Claude Desktop
If installed via pip:
{
"mcpServers": {
"testing-sensei": {
"command": "mcp-testing-sensei"
}
}
}
If installed via npm:
{
"mcpServers": {
"testing-sensei": {
"command": "npx",
"args": ["@kourtni/mcp-testing-sensei"]
}
}
}
If using Docker:
{
"mcpServers": {
"testing-sensei": {
"command": "docker",
"args": ["run", "-i", "kourtni/mcp-testing-sensei"]
}
}
}
If running from source:
{
"mcpServers": {
"testing-sensei": {
"command": "python",
"args": ["/path/to/mcp-testing-sensei/mcp_server.py"]
}
}
}
Testing the Server
To verify the server is working correctly, you can use the integration test script:
# For development testing
python test_mcp_integration.py
This will:
- Start the MCP server
- Send test requests to verify the tools are working
- Display the responses
The server itself doesn't have a standalone test mode - it's designed to be used with MCP clients.
Development
Running Tests
To run the unit tests locally, first ensure you are in the Nix development environment:
nix develop
Then, execute pytest:
pytest
Project Structure
flake.lock
flake.nix
linter.py # Core linting logic
mcp_server.py # MCP stdio server implementation
main.py # Legacy HTTP server (can be removed)
pyproject.toml
test_mcp_integration.py # Integration test script for the MCP server
tests/
test_linter.py # Unit tests for the linter logic
Contributing
Contributions are welcome! Please ensure your changes adhere to the established unit testing principles and project conventions.
Additional Documentation
- DISTRIBUTION.md - Detailed guide for all distribution methods
- RELEASE.md - Release process and version management
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.