The MCP specification explains what changed. Simon Willison’s response shows what the change enables for an individual builder.
The old HTTP flow needed an initialization request, a server-issued session ID, and a later tool call tied to that session. The stateless form collapses the common case into one request. There is no sticky backend, no session table, and less client machinery to get wrong.
Willison built three projects in a week around that smaller surface. mcp-explorer is a Python CLI for listing, inspecting, and calling tools. It can run directly with uvx mcp-explorer, which makes it useful as a protocol probe before an MCP server is connected to a larger agent.
datasette-mcp adds an MCP endpoint to Datasette with three tools: list databases, read a schema, and execute read-only SQL. llm-mcp-client connects those servers to the LLM CLI. Together they form a compact path from inspectable data to a constrained model-facing capability.
The security argument is more important than the convenience. General agents with shell and unrestricted network access are flexible, but their possible actions are difficult to enumerate. A narrow MCP server presents explicit tools and schemas that smaller local models can use and operators can audit.
The practical move is to probe a server before trusting it. List its tools, inspect schemas, call them with harmless inputs, and verify authorization and read/write boundaries. Stateless MCP makes that routine cheap enough to belong in CI and operator workflows.
