Six hosted MCP servers that exist purely to be connected to. Paste a URL into your MCP client, agent framework, or IDE and prove your integration works against known, predictable behaviour — before you point it at a real server whose responses you do not control. Every endpoint serves both the stateless 2026-07-28 revision and the 2025-era initialize handshake.
| Server | Public URL | Auth |
|---|---|---|
| Echo MCP Server | https://mcpplaygroundonline.com/mcp-echo-server | None |
| Auth MCP Server | https://mcpplaygroundonline.com/mcp-auth-server | Bearer token |
| Error MCP Server | https://mcpplaygroundonline.com/mcp-error-server | None |
| Complex Schema MCP Server | https://mcpplaygroundonline.com/mcp-complex-server | None |
| MCP Apps Server | https://mcpplaygroundonline.com/mcp-app-server | None |
| Stateless 2026-07-28 Server | https://mcpplaygroundonline.com/mcp-stateless-server | None |
Try one in ten seconds
curl -X POST https://mcpplaygroundonline.com/mcp-echo-server \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'A plain GET on any of these URLs returns a description of the server and the revisions it speaks — useful for a quick sanity check from a browser tab.
Returns exactly what you send.
https://mcpplaygroundonline.com/mcp-echo-serverechoThe one to start with. If your client cannot complete a call against the echo server, the problem is in your client, not in the server you were originally debugging.
Answers 401 with a WWW-Authenticate challenge until you present a valid Bearer token.
https://mcpplaygroundonline.com/mcp-auth-serverget_userRequires the read:user and write:user scopes. A token missing a scope gets an insufficient_scope challenge rather than a flat 401, which is the case most clients get wrong.
Deliberately fails, on demand, in eight different ways.
https://mcpplaygroundonline.com/mcp-error-serversimulate_error, simulate_network_error, simulate_partial_successsimulate_error takes an errorType of validation, not_found, unauthorized, rate_limit, server_error, timeout, invalid_request or permission_denied, plus an optional delay in milliseconds so you can force a real timeout instead of mocking one.
Four tools with deeply nested, mutually confusable input schemas.
https://mcpplaygroundonline.com/mcp-complex-servercreate_user_profile, process_order, analyze_data, configure_workflowThis is the one to point a model at. Four plausible tools with overlapping argument shapes is where tool-selection drift and -32602 Invalid params show up.
Returns a ui:// resource that renders as live interactive UI.
https://mcpplaygroundonline.com/mcp-app-serverget_mcp_app_demoMost clients silently fall back to showing the raw resource. Use this to check yours before claiming MCP Apps support.
The machinery the 2026-07-28 revision introduced — Multi Round-Trip Requests and signed requestState.
https://mcpplaygroundonline.com/mcp-stateless-servermrtr_confirm, mrtr_signed_state, which_protocol_eraPin ?rev=2026-07-28 and send a 2025-era initialize handshake to exercise the -32022 UnsupportedProtocolVersion rejection path. which_protocol_era reports back which revision the server decided you were speaking.
The 2026-07-28 revision removes the initialize handshake and the protocol-level session entirely. That is a breaking change for every client written against the 2025 revisions, and the only honest way to find out whether yours survives it is to talk to a server that speaks it.
Every mock on this page detects the revision from the request itself. Pin one explicitly with a query parameter:
?rev=2026-07-28 — stateless only. A 2025-era handshake is rejected with -32022 UnsupportedProtocolVersion.?rev=2025-11-25 — legacy only. Handshake required.To check the other direction — whether your server is ready — paste its URL into the MCP Checker and force a revision with the Protocol Revision switch. It shows the revision you requested, the one that actually answered, and the raw JSON-RPC in between. The migration itself is covered in the stateless migration guide.
The auth server rejects unauthenticated requests with a 401 and a WWW-Authenticate challenge — the exact shape the spec requires and the one most clients mishandle. Mint a token, then attach it:
# 1. mint a token (valid 30 minutes)
curl -X POST https://mcpplaygroundonline.com/api/auth/token
# 2. use it
curl -X POST https://mcpplaygroundonline.com/mcp-auth-server \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Omit step 1 to see the challenge your client has to parse. The MCP Test Client mints and attaches the token for you if you would rather do this in a browser.
npx