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.0b2.tar.gz (143.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.0b2-py3-none-any.whl (165.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_testing-0.1.0b2.tar.gz
  • Upload date:
  • Size: 143.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.0b2.tar.gz
Algorithm Hash digest
SHA256 946116dcff0bab478f6503478a3c9dc4d24b651a6b64b2060fdfd15bd280e44b
MD5 aa8b1a92d2aa429027533781ac0c3a24
BLAKE2b-256 df36470055a0cdde390ddf2f759ce925e9cce75e98216e69dce40a79b5118ef8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mcp_testing-0.1.0b2-py3-none-any.whl
  • Upload date:
  • Size: 165.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.0b2-py3-none-any.whl
Algorithm Hash digest
SHA256 1435aaf92466bec997dddad7c8c529ff45a8951714a3a3391b70c1775da40f62
MD5 7867ac61d2acd84e9cfb8e3431985636
BLAKE2b-256 502b47267a0b299b07d03dc73f24d323d4d22eae0e4a71123ed17d75e2be807d

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