Skip to main content

Local testing framework for MCP (Model Context Protocol) servers

Project description

🧪 MCP Testing

AI-powered testing framework for MCP servers

Test your MCP servers with real AI agents conducting conversations and LLM judges evaluating results

Documentation License PRs Welcome PyPI Python

Why MCP Testing?

Traditional testing doesn't work for MCP servers. You can't write unit tests for natural language interactions. MCP Testing solves this with:

  • 🤖 Real AI Agents - Claude and ChatGPT actually use your MCP server
  • 👤 User Simulation - AI simulates realistic multi-turn user behavior
  • ⚖️ LLM-as-a-Judge - Intelligent evaluation instead of brittle assertions
  • 🎭 Comprehensive Testing - Security, compliance and performace all in one framework
  • 🔌 Multiple Transports - Supports HTTP and stdio servers

Quick Start

Get testing in 3 steps:

  1. Install & Setup

    pip install mcp-testing
    export ANTHROPIC_API_KEY="sk-ant-..."  # For AI agents
    export OPENAI_API_KEY="sk-..."         # For LLM judge
    
  2. Interactive Onboarding

    mcp-t quickstart  # Creates your first server & test suite
    
  3. Run Tests

    mcp-t run <suite-id> <server-id>
    # Example: mcp-t run example_suite_001 hackernews_mcp_server
    

Core Concepts

Test Flow

Your Test Case → AI Agent (Claude/GPT-4) → Your MCP Server
      ↓                    ↓                      ↓
 User Message         Tool Calls            Server Response
      ↓                    ↓                      ↓
User Simulator      Conversation Loop         More Tools
      ↓                    ↓                      ↓
   LLM Judge       Complete Transcript      Pass/Fail + Reasoning

Configuration Files

Server Config - HTTP (examples/server.json):

{
  "name": "linear_mcp_server",
  "transport": "http",
  "url": "https://mcp.linear.app/mcp"
}

Server Config - stdio (examples/servers/time-server-stdio.json):

{
  "name": "Time Server",
  "transport": "stdio",
  "command": "npx -y @modelcontextprotocol/server-time"
}

Server Config - stdio with env (examples/servers/brave-search-stdio.json):

{
  "name": "Brave Search",
  "transport": "stdio",
  "command": "npx -y @modelcontextprotocol/server-brave-search",
  "env": {
    "BRAVE_API_KEY": "your-api-key-here"
  }
}

Test Suite (examples/suite.json):

{
  "suite_id": "example_suite_001",
  "name": "Hacker News MCP Server Tests",
  "test_cases": [
    {
      "test_id": "hackernews_greeting",
      "user_message": "Hello! Can you help me browse Hacker News?",
      "success_criteria": "Agent should respond politely and explain Hacker News capabilities",
      "max_turns": 5
    }
  ]
}

Test Types

  • 💬 Conversational - Real user workflows
  • 🔒 Security - Authentication & vulnerabilities
  • ✅ Compliance - MCP protocol validation

Commands

Test Execution

mcp-t run <suite-id> <server-id>           # Run specific suite
mcp-t run example_suite_001 hackernews_mcp_server -v   # Verbose output

Configuration Management

mcp-t quickstart                 # Complete onboarding
mcp-t create server              # Interactive server setup
mcp-t create suite               # Create test suite
mcp-t create test-case           # Add test to suite
mcp-t list                       # Show all configs
mcp-t show suite example_suite_001   # View specific config

Test Generation

Run wizard that analyzes your MCP server and automatically generates comprehensive test cases

mcp-t generate

Test Results

Understanding Evaluation

{
  "test_id": "hackernews_stories",
  "verdict": "PASS",
  "confidence_score": 0.89,
  "judge_reasoning": "The agent successfully fetched and displayed Hacker News stories. Good use of available tools and clear presentation of results.",
  "conversation_quality": 0.87,
  "tool_calls": [
    { "tool": "get_top_stories", "args": {} },
    { "tool": "get_story_details", "args": { "story_id": 123 } }
  ]
}

Support


Built with ❤️ for the MCP ecosystem

Made in San Francisco, CA

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_testing-0.1.0b3.tar.gz (148.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_testing-0.1.0b3-py3-none-any.whl (172.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_testing-0.1.0b3.tar.gz.

File metadata

  • Download URL: mcp_testing-0.1.0b3.tar.gz
  • Upload date:
  • Size: 148.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for mcp_testing-0.1.0b3.tar.gz
Algorithm Hash digest
SHA256 938dca117e0897a6015bf857774e2328f6685ff5ef4c935b7ea8d2fc4c4a33f3
MD5 f92810e81e77e4aff371cf63270c35c1
BLAKE2b-256 29ef15f85fd907761d8dbf46b290357208b625837569ff303d9fffa00d1608d6

See more details on using hashes here.

File details

Details for the file mcp_testing-0.1.0b3-py3-none-any.whl.

File metadata

  • Download URL: mcp_testing-0.1.0b3-py3-none-any.whl
  • Upload date:
  • Size: 172.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for mcp_testing-0.1.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 e3e90c5b2c825df6ae83a13e12c1e74fc59a092e8cce99ebb7dabbe274157c27
MD5 7514170a813486250aec267b6b8ece55
BLAKE2b-256 e93dd7d2d4d091ade95469f69f242568e5f130dd8764781f2c8f26dbe437dc1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page