A collection of MCP test servers including working servers (ping, resource, combined, env-echo) and test failure cases (broken-tool, crash-on-startup)
npm install @msfeldstein/mcp-test-serversA collection of test servers implementing the Model Context Protocol (MCP).
Visit our GitHub Pages Gallery for one-click install buttons that work directly with Cursor!
```
npx -y @msfeldstein/mcp-test-servers
- all-types: Demonstrates various tool parameter types supported by MCPbad-param
- : Server with an intentionally malformed parameter namebig-response
- : Server that returns large responsesbroken-tool
- : Server with intentionally broken toolbroken-schema
- : Server with invalid JSON schema using oneOf/allOf/anyOf at top levelbroken-schema-fastmcp
- : FastMCP server with genuinely broken schemas using oneOf/allOf/anyOf at top levelcrash-on-startup
- : Server that crashes on startupcombined
- : Server with tools and resourcesduplicate-names
- : Server with duplicate names for resourceselicitation
- : Server demonstrating MCP elicitation feature - requests user information (name, age, contact details, preferences) through structured formsenum-param
- : Tool has enum string parameterinteger-anyof-bug
- : Reproduces Cursor's integer validation bug with anyOf schema - parameters with {"anyOf": [{"type": "integer"}, {"type": "null"}]} fail validation with 'got number' errorenv-check
- : Checks for SHOULD_RUN environment variable being passed properlyenv-echo
- : Echoes the environment variablesgpt5-breaker
- : Server with SQL query execution tool using complex parameter validationheaders
- : FastMCP server that safely returns HTTP header informationinstructions
- : Server with instructions and a makeRequest tool that returns success for value 42image
- : Tool returns an image of sonic the hedgehoglong-description
- : Publicize a very long description configured via env varlong-running
- : Server that sends progress notifications every 2 seconds for a 20-second taskmany-resources
- : Server with multiple resourcesmany-tools
- : Server with 100 tools that each return 'ack'math
- : Server with basic math function tools (add, subtract, multiply, divide, power, sqrt, factorial)missing-type
- : Server with tools missing the required 'type' field in parameter schemasmissing-type-fastmcp
- : FastMCP server with genuinely missing 'type' fields in tool schemasnamed
- : Server with configurable name via MCP_SERVER_NAME environment variablenotion-gemini-repro
- : Server with complex nested schema that breaks on some models (Notion API reproduction case) - inline schemanotion-gemini-repro-raw
- : Server with complex nested schema that breaks on some models (Notion API reproduction case) - exact raw schema objectnumber-param
- : Tool with a number parameteroauth-repro
- : Reproduces OAuth 2.0 flow issues with proper discovery endpoints - runs resource server on port 3001 and auth server on port 3002oauth-debug
- : OAuth debugging server with comprehensive logging and endpoint tracking - runs resource server on port 3003 and auth server on port 3004oauth-callback-test
- : OAuth callback testing server that simulates Cursor 1.4.x endpoint discovery bugs - runs on port 3005oauth-edge-case
- : OAuth server with configurable edge cases to trigger discovery bugs - resource server on port 3006, auth server on port 3007oauth-bug-trigger
- : Specialized server designed to reproduce the exact Cursor 1.4.x OAuth discovery bug - resource server on port 3008, auth server on port 3009optional-param
- : Tool has an optional parampattern-param
- : Tool has a parameter with a pattern matchping
- : A simple server that responds with 'pong'prompts
- : Server with two prompts - one static greeting and one dynamic story generator with character name and location parametersraw-broken
- : Raw JSON-RPC MCP server with genuinely broken schemas (no framework validation)resource
- : Resource server implementationresource-lister
- : Server that publishes 5 resources and has a tool to list themroots-echo
- : Server that demonstrates MCP roots functionality by echoing back the roots provided by the clientsession-inactivity
- : Streamable HTTP server that expires sessions after 30 seconds of inactivity to test session managementsession-management
- : HTTP server that implements MCP session management behavior - assigns session IDs, requires them in requests, returns 404 for terminated sessionssse-timeout
- : Streamable HTTP server that establishes SSE connections but times out after 30 seconds to test client reconnectionstderr
- : Server that logs to stderrstructured-output
- : Demonstrates structuredContent responses with a simple echo tooldual-content
- : Demonstrates different outputs for structuredContent and content in the same responseeverything
- : Comprehensive server testing all MCP features - tools with/without params, resources, prompts, elicitation, dynamic tools, roots echo, env vars
For instant comprehensive testing, use the built-in AI agent testing prompt:
1. Start the everything server: npx @msfeldstein/mcp-test-servers everything/test-everything
2. In Cursor, use the slash command:
3. The AI will automatically execute all 20 test steps and provide a complete validation report
The everything server is designed to comprehensively test all MCP features. Here's how to test each feature:
``
{
"mcpServers": {
"everything": {
"command": "npx @msfeldstein/mcp-test-servers everything",
"env": {
"MY_ENV_VAR": "My Special Token"
}
}
}
}
Tool: echo_with_params
Test: Call with various parameter combinations:
`
- message: "Hello World", repeat_count: 3, uppercase: true
- message: "Test", repeat_count: 1, uppercase: false
- message: "MCP" (using defaults)
`
Expected: Should echo the message with specified repetitions and case transformation.
Tool: simple_ping
Test: Call without any parameters
Expected: Should return "pong"
Tool: get_mixed_resources
Test: Call the tool
Expected: Should return both text content and a small test image in the same response
Tool: test_all_elicitations
Test: Call the tool and respond to all prompts:
- String input (name)
- Boolean input (programming preference)
- Number input (years of experience, 0-50)
- Enum input (programming language selection)
Expected: Should collect all inputs and display a summary
Tool: toggle_dynamic_tool
Test:
1. Call toggle_dynamic_tool to enable the dynamic tooldynamic_feature
2. Verify tool becomes availabledynamic_feature
3. Call with optional action parametertoggle_dynamic_tool
4. Call again to disabledynamic_feature
5. Verify tool is no longer available
Expected: Tool availability should change dynamically
Tool: echo_mcp_roots
Test: Call the tool
Expected: Should return JSON representation of MCP roots provided by the client
Tool: echo_env_var
Test: prompt: "Call the echo_env_var MCP tool"
Expected: Should return "MY_ENV_VAR = My Special Token"
Tool: long_running_progress
Test: Call with optional task_name parameter
Expected: Should run for 20 seconds with progress updates every 2 seconds, showing:
- Progress from 0 to 10 (total steps)
- Descriptive messages for each step
- Final completion message
- Client should receive progress notifications
Resource: everything://docs.txt
Test: Request the resource
Expected: Should return comprehensive documentation about the server
Resource: everything://test-image.png
Test: Request the resource
Expected: Should return a small test image in PNG format
Prompt: simple-greeting
Test: Type /sim and /simple-greeting should be suggested. Submit it.
Expected: Should return a friendly greeting message about the Everything Server
Prompt: personalized-message
Test: submit /personalized-message:
- name: "Alice"
- topic: "AI Development"
Expected: Should return a personalized message mentioning Alice and AI Development
Prompt: test-everything/test-everything
Test: Use this prompt in Cursor with a slash command:
Expected: Should return comprehensive step-by-step testing instructions for an AI agent to systematically test all MCP features
Usage: Perfect for automated testing - the AI will execute all 20 testing steps automatically and provide a complete validation report
1. Setup: Set MY_ENV_VAR="My Special Token" in environmentsimple_ping
2. Basic Tools: Test and echo_with_params`get_mixed_resources
3. Mixed Content: Test test_all_elicitations
4. Elicitation: Run through completelyecho_mcp_roots
5. Dynamic Tools: Toggle dynamic tool on/off and test availability
6. System Info: Test and echo_env_varlong_running_progress` with progress notifications
7. Long-Running: Test
8. Resources: Fetch both text and image resources
9. Prompts: Test both parameterized and non-parameterized prompts
This comprehensive test ensures all MCP protocol features are working correctly.