MCP tools

Why the server will not start, and what the client actually sees.

Model Context Protocol servers fail in ways that produce no error: a stray print statement corrupts the stdio transport because stdout is the transport, an empty capabilities object means the client lists no tools, and a null id that base JSON-RPC 2.0 allows is forbidden in MCP. These tools validate MCP client config, check the initialize handshake, lint tool definitions, and decode the JSON-RPC frames on both sides of the connection.

Free, with no sign-up. Every one runs entirely in your browser: nothing you paste is uploaded, and there is no server to send it to.

MCP Server Config Generator

The config, and why yours does not start

Generate an MCP server config for Claude Desktop, VS Code or .mcp.json, with the absolute-path and env-inheritance traps that stop a server starting.

MCP Server Config Validator

Why the server never came up

Validate an MCP server config and find why the server never starts: a relative command path, npx without -y, or env the process never inherits.

MCP Structured Output Validator

The contract only the server has to keep

Check an MCP tools/call result against the tool's declared outputSchema, plus the text block rule and the difference between isError and a protocol error.

MCP Tool Schema Validator

The keywords the client ignores

Validate an MCP tool inputSchema against the JSON Schema subset clients actually support, and catch the keywords that are silently ignored.

MCP Tool Poisoning Scanner

The instruction you never see

Scan an MCP tools/list response for hidden instructions: model-directed imperatives, key paths, zero-width characters and payloads buried in parameter defaults.

MCP Tool Definition Linter

What your tool list costs every request

Lint an MCP tools/list response for naming collisions, missing parameter descriptions and the token cost your tool definitions add to every request.

MCP JSON-RPC Message Validator

Request, response or notification

Validate an MCP JSON-RPC message: the id rules that separate a request from a notification, and the method names the protocol actually defines.

MCP stdio Session Debugger

The print statement that broke the stream

Debug an MCP stdio session log and find the stdout writes that corrupt the JSON-RPC stream, the framing errors, and an out-of-order handshake.

MCP Capability Negotiation Checker

What the two sides actually agreed

Check an MCP initialize handshake: protocol version mismatch, and the capabilities a client declares but never honours.

MCP Resource URI Validator

Expand the template, see the result

Validate an MCP resource URI or RFC 6570 template, expand it against variables, and catch the scheme and encoding mistakes that return nothing.

MCP OAuth Flow Debugger

The token that works everywhere

Check an MCP authorization flow: the resource parameter that binds a token to one server, PKCE, and the 401 challenge a client needs to discover anything.

MCP Transport Checker

Two protocols, one name

Work out which MCP transport an exchange uses and why it failed. Streamable HTTP and the older HTTP+SSE mismatch as a 404 or a hang, never a version error.

MCP Server Scaffolding Generator

Starts correctly the first time

Generate an MCP server skeleton with capabilities declared, logging on stderr where stdio needs it, and a tool description written as an interface.

Reading on mcp

The problems these tools check for, argued out at length.

MCP error -32000 is not in the MCP specification What -32000 Connection closed actually is, why it is an SDK code rather than a protocol one, why a single print statement causes most of them, and an ordered way to diagnose it instead of restarting the client again. 18 August 2026 MCP structured output is a contract, and most servers keep half of it outputSchema, structuredContent and the backwards-compatibility rule nobody implements. What the specification actually requires, why isError is not a protocol error, and how to make a tool result a program can rely on. 18 August 2026 Your agent trusts the tool description, and that is the whole attack MCP tool poisoning explained: which fields of a tool definition reach the model, why reading the description is not a review, why readOnlyHint proves nothing, and what actually reduces the risk once servers are already connected. 18 August 2026 Your MCP tools eat the context before any work starts Tool definitions are a fixed cost on every request, not a one-off. Why agents degrade instead of failing when you connect too many servers, what the token arithmetic actually looks like, and the four ways to cut it. 18 August 2026 Your MCP tools are missing because you never declared them A client does not call tools/list for a capability the server did not declare. A server that implements four tools perfectly and returns an empty capabilities object gets an empty tool list, correctly, in every client that follows the spec. 30 July 2026 Three MCP rules your JSON-RPC library will happily break A null id is legal JSON-RPC 2.0 and forbidden in MCP. Batching was valid in 2025-03-26 and removed in 2025-06-18. Ids must be unique for the whole session, not merely among the requests currently in flight. 30 July 2026 One print statement breaks an MCP server, and the client will not tell you On stdio, stdout is the transport. A startup banner, a dependency's warning, or a console.log lands mid-frame and desynchronises the reader for everything after it. Here is why it survives testing and how to find it. 30 July 2026 Write when to call the tool, not what it does A description that states capability under-triggers. The lift comes from the trigger condition in the tool's own description, not the system prompt. And two tools described in the same vocabulary are chosen at random. 30 July 2026

Other categories