# Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp)

DevFeed: [Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp)](<https://devfeed.tech/articles/stateless-mcp-has-recaptured-my-interest-and-inspired-mcp-explorer-and-datasette-mcp-30505.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Jul/31/stateless-mcp/>)

Author: Simon Willison

Published: 2026-07-31T23:13:22Z

Content type: article

Language: en

Sources: [Simon Willison](<https://devfeed.tech/sources/simon-willison.md>)

Topics: [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [anthropic](<https://devfeed.tech/topics/anthropic.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Python](<https://devfeed.tech/topics/python.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-2-235](<https://devfeed.tech/tags/ai-2-235.md>), [anthropic](<https://devfeed.tech/tags/anthropic.md>), [anthropic-336](<https://devfeed.tech/tags/anthropic-336.md>), [cli](<https://devfeed.tech/tags/cli.md>), [codex](<https://devfeed.tech/tags/codex.md>), [context](<https://devfeed.tech/tags/context.md>), [curl](<https://devfeed.tech/tags/curl.md>), [datasette](<https://devfeed.tech/tags/datasette.md>), [datasette-1-542](<https://devfeed.tech/tags/datasette-1-542.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [generative-ai-1-981](<https://devfeed.tech/tags/generative-ai-1-981.md>), [http](<https://devfeed.tech/tags/http.md>), [json](<https://devfeed.tech/tags/json.md>), [llm](<https://devfeed.tech/tags/llm.md>), [llm-631](<https://devfeed.tech/tags/llm-631.md>), [llms](<https://devfeed.tech/tags/llms.md>), [llms-1-947](<https://devfeed.tech/tags/llms-1-947.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mermaid](<https://devfeed.tech/tags/mermaid.md>), [mermaid-5](<https://devfeed.tech/tags/mermaid-5.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [model-context-protocol-35](<https://devfeed.tech/tags/model-context-protocol-35.md>), [projects](<https://devfeed.tech/tags/projects.md>), [projects-553](<https://devfeed.tech/tags/projects-553.md>), [shell](<https://devfeed.tech/tags/shell.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

## AI overview

This commentary examines the 2026-07-28 stateless Model Context Protocol specification. It argues that stateless MCP simplifies client and server implementation, improves auditability and control compared with shell-based agent access, and better supports scalable web applications by removing session state and session-affinity requirements. The article also introduces the mcp-explorer CLI tool and mentions datasette-mcp.

## Source excerpt

Tuesday was Stateless MCP day - the rollout of MCP 2.0, or the 2026-07-28 Model Context Protocol specification to use the more formal but less memorable name. This is the most significant change to the MCP spec since it first launched, and has also served to reignite my personal interest in the protocol. For background: MCP is the Model Context Protocol, which describes a standard way to expose new tools to LLM-powered agent frameworks. It was introduced by Anthropic back in November 2024, had a huge spike of interest through much of 2025, and then became somewhat eclipsed by Skills (another Anthropic invention) when it became apparent that an agent harness with access to a terminal and curl could do most of what MCP did in a more flexible way. I wrote about that in my review of 2025. I'm coming back around to MCP now. Giving an agent a shell environment with the ability to access the internet is fraught with risk, and requires a strong model that is capable of effectively driving such an environment. MCP tools are easier to audit and control, and simple enough that smaller models that run on a laptop can still drive them reasonably well. The new stateless MCP specification also greatly decreases the complexity of implementing both clients and servers for the protocol. I built three of those this week! What's easier with stateless MCP The best demonstration of the difference between stateful and stateless MCP is in this May 21st blog post that introduced the RC for the new specification. It included a clear before-and-after example. The older stateful MCP (I'm going to call it "legacy MCP") required two HTTP requests - the first to initialize a session and obtain a Mcp-Session-Id, and the second to actually call the tool: POST /mcp HTTP/1.1 Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-11-25", "capabilities": { }, "clientInfo": { "name": "my-app", "version": "1.0" } } } POST /mcp HTTP/1.1 Mcp