@msfeldstein/mcp-test-servers
v1.1.72
Published
A collection of MCP test servers including working servers (ping, resource, combined, env-echo) and test failure cases (broken-tool, crash-on-startup)
Readme
MCP Test Servers
A collection of test servers implementing the Model Context Protocol (MCP).
🚀 Quick Install Gallery
Visit our GitHub Pages Gallery for one-click install buttons that work directly with Cursor!
Manual Installation
npx -y @msfeldstein/mcp-test-servers <server>Development
Use the cli.js directly for development
{
"mcpServers": {
"test-server": {
"command": "/Users/feldstein/Source/mcp-test-servers/src/cli.js",
"args": [
"ping"
],
"env": {}
}
}
}Available 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 validationgraphing: MCP Apps server withshow-graphing-ui; UI renders an inline chart with Chart.jsheaders: 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 toolui: MCP Apps server withshow-ui; the rendered UI button calls theget-timetool and shows the current time inlinedual-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
🚀 Quick Start: Automated Testing
For instant comprehensive testing, use the built-in AI agent testing prompt:
- Start the everything server:
npx @msfeldstein/mcp-test-servers everything - In Cursor, use the slash command:
/test-everything - The AI will automatically execute all 20 test steps and provide a complete validation report
Test Plan for Everything Server
The everything server is designed to comprehensively test all MCP features. Here's how to test each feature:
Tools Testing
0. Setup
{
"mcpServers": {
"everything": {
"command": "npx @msfeldstein/mcp-test-servers everything",
"env": {
"MY_ENV_VAR": "My Special Token"
}
}
}
}1. Tool with Parameters
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.
2. Tool without Parameters
Tool: simple_ping
Test: Call without any parameters
Expected: Should return "pong"
3. Tool Returning Mixed Content
Tool: get_mixed_resources
Test: Call the tool
Expected: Should return both text content and a small test image in the same response
4. Elicitation Testing
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
5. Dynamic Tool Management
Tool: toggle_dynamic_tool
Test:
- Call
toggle_dynamic_toolto enable the dynamic tool - Verify
dynamic_featuretool becomes available - Call
dynamic_featurewith optional action parameter - Call
toggle_dynamic_toolagain to disable - Verify
dynamic_featuretool is no longer available Expected: Tool availability should change dynamically
6. MCP Roots Echo
Tool: echo_mcp_roots
Test: Call the tool
Expected: Should return JSON representation of MCP roots provided by the client
7. Environment Variable Echo
Tool: echo_env_var
Test: prompt: "Call the echo_env_var MCP tool"
Expected: Should return "MY_ENV_VAR = My Special Token"
8. Long-Running Progress Tool
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
Resources Testing
9. Text Resource
Resource: everything://docs.txt
Test: Request the resource
Expected: Should return comprehensive documentation about the server
10. Image Resource
Resource: everything://test-image.png
Test: Request the resource
Expected: Should return a small test image in PNG format
Prompts Testing
11. Prompt without Parameters
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
12. Prompt with Parameters
Prompt: personalized-message
Test: submit /personalized-message:
- name: "Alice"
- topic: "AI Development" Expected: Should return a personalized message mentioning Alice and AI Development
13. AI Agent Testing Prompt
Prompt: test-everything
Test: Use this prompt in Cursor with a slash command: /test-everything
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
Complete Test Sequence
- Setup: Set
MY_ENV_VAR="My Special Token"in environment - Basic Tools: Test
simple_pingand `echo_with_params`` - Mixed Content: Test
get_mixed_resources - Elicitation: Run through
test_all_elicitationscompletely - Dynamic Tools: Toggle dynamic tool on/off and test availability
- System Info: Test
echo_mcp_rootsandecho_env_var - Long-Running: Test
long_running_progresswith progress notifications - Resources: Fetch both text and image resources
- Prompts: Test both parameterized and non-parameterized prompts
This comprehensive test ensures all MCP protocol features are working correctly.
