Stateless MCP Makes Small, Auditable Agent Tools Practical Again

Simon Willison's mcp-explorer, datasette-mcp, and llm-mcp-client show how the stateless specification lowers implementation cost and narrows agent capabilities.

Retrieval answer

Simon Willison's mcp-explorer, datasette-mcp, and llm-mcp-client show how the stateless specification lowers implementation cost and narrows agent capabilities. 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.

New Runtime synthesiseditorial-diagram
Hand-drawn practitioner workbench where one stateless request powers an MCP explorer, a read-only Datasette endpoint, and a small-model client inside a capability boundary.
A smaller protocol surface makes MCP easier to inspect, implement, and constrain than a general shell with open network access.New Runtime synthesis from Simon WillisonOriginal source ↗
  1. Probemcp-explorer lists, inspects, and calls tools without installing a persistent client.
  2. Exposedatasette-mcp publishes three narrow, read-only database tools through one endpoint.
  3. ConstrainExplicit tool capabilities are easier to audit than arbitrary shell and network access.

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.

Recommendation

Simon Willison's mcp-explorer, datasette-mcp, and llm-mcp-client show how the stateless specification lowers implementation cost and narrows agent capabilities.

Discovery graph / next reads

Continue through New Runtime

Open the graph
  1. 01topicDeveloper Tools - New RuntimeExplore the developer tools topic hub.
  2. 02topicMCP - New RuntimeExplore the mcp topic hub.
  3. 03related materialCopilotKit Brings MCP Tool Calls Into The React InterfaceShares developer tools and mcp.
  4. 04related materialDr. Skill Audits What An Agent Loads Before It WorksShares developer tools and mcp.
  5. 05related materialVercel Sandbox Adds Unix Boundaries for Multi-Agent WorkShares developer tools and security.

These links are also published in this page’s JSON twin and as typed edges in DiscoveryGraph v1.

Who read this page?Machine requests, hidden until opened

Loading the privacy-safe route aggregate…

Open the JSON contract