MCP 2026-07-28 Specification: transport going stateless
Posted by Eldodi 5 days ago
Comments
Comment by punkpeye 5 days ago
I am running an MCP server gateway/registry (some of you may know Glama).
I cannot tell you what portion of our issues/bugs were due to the need to persist server state.
This change will allow us to offer a lot easier way for people to use Open-Source MCP servers.
Comment by punkpeye 5 days ago
┌─────────────────────────────┬────────┬───────────┐
│ Pushed in last 7 days │ 6,101 │ 9.9% │
├─────────────────────────────┼────────┼───────────┤
│ Pushed in last 30 days │ 18,707 │ 30.2% │
├─────────────────────────────┼────────┼───────────┤
│ Pushed in last 90 days │ 30,393 │ 49.1% │
├─────────────────────────────┼────────┼───────────┤
│ Pushed in last 365 days │ 54,327 │ 87.8% │
└─────────────────────────────┴────────┴───────────┘
So about ~30% are actively maintained. That's a pretty big portion of the community.However, the new protocol is wire-incompatible in both directions. This means that many of the servers/clients will need to be refactored (not enough to just update the SDK). It will take time and it will be messy (despite SSE deprecation, there are still many servers and clients that are SSE-only). Honestly, a legitimate opportunity for MCP gateways (ours included) to become more valuable by becoming an interoperability layer between protocol incompatible servers/clients.
Comment by dend 5 days ago
Comment by jakobgm 5 days ago
Any new to share on file upload support? We have shipped a MCP server and it has been really frustrating to observe MCP clients fumbling around with base64-encodings, polluting their context window with binary data. SEP-1306 (Binary Mode Elicitation) was superseded by SEP-2356 (File input support for tools and elicitation), and that was in turn superseded by SEP-2631 (File Objects and Transfer) which is currently left in a draft state with little activity.
Allowing LLM-based agents to shuffle binary data around efficiently and reliably seems like a pretty big gap in the current specification, if you ask me!
Comment by colinator 5 days ago
Comment by somnium_sn 5 days ago
I agree and hear you that file uploads are a pain. As the core maintainer group we have deferred the work on this for this release and hope to pick it up soon.
Now is the moment to engage with the respective working group to make your case heard so we can ensure it’s on the roadmap.
Comment by flashgordon 5 days ago
Comment by checker 5 days ago
Comment by dan-kwiat 5 days ago
Comment by dend 5 days ago
Comment by cidd 5 days ago
Comment by somnium_sn 5 days ago
Best to join our community discord [1] and ask the maintainers !
Comment by Oras 5 days ago
What’s the best practice for tools where the upstream API only supports basic auth (username/password) and there’s no OBO option? In my case the login returns a token that’s only valid for an hour, so the user has to re-auth after that. Do you stash the credentials on the MCP server and silently refresh, or is there a nicer pattern people are using?
Comment by dan-kwiat 5 days ago
Comment by Sattyamjjain 1 day ago
Comment by ihsw 5 days ago
Comment by btbuilder 5 days ago
Comment by jongjong 5 days ago
You can get better results with skills SKILL.md + linked .md files with curl commands inside... Just plain HTTP(S). I say this as someone who often prefers the stateful WebSocket protocol for data transport. HTTP stateless request-response model is a natural fit for LLMs.
HTTP is an excellent protocol for this and curl is an excellent, very popular command on which all major coding models are well trained. LLMs are insanely good with curl. Not to mention that it's pre-installed on all major operating systems. The curl command has become the protocol.
Then there is the fact that most tools require some documentation to go along with it anyway (to be used correctly). MCP mostly adds unnecessary work for a lot of cases.
It has its place in backend code environments I guess... But most of these use cases are thin applications trying to be a middleman between the user and the AI. I think ultimately, the AI will be at the front and tools at the back. Hence, curl.
Wedging a platform between the user and AI creates unnecessary constraints and reduces interoperability and integration opportunities.
Comment by dmix 5 days ago
It's also different than just an API because they have purpose built "tools" which have relevant names (search_campaign vs /api/v3/campaigns?q=xyz), descriptions, annotations (ie, ask used to confirm in ChatGPT before we run this DELETE).
Skills don't really accomplish that well and are more unreliable when your target audience is a B2B customer or person who forgot they installed a Perplexity MCP when Claude will automatically know to use that without invoking a skill.
Comment by crooked-v 5 days ago
Comment by ghthor 5 days ago
Comment by TZubiri 5 days ago
https://modelcontextprotocol.io/docs/2026-07-28/develop/conn...
But sure, you can expend more effort inspecting the source code and documentation than the developers actually spent writing it to verify that it's all safe and well architected.
Ok, end of rant. To be explicit, there's a lot of security issues here, that make it hard to distinguish a malicious actor from a legitimate one:
1- A TLD based in British Indian Ocean territory.
2- A domain name of the product itself, not the entity behind it. (Not how domains work)
3- low value to risk ratio. Some degree of risk is necessary, but if it is done for no benefit, then the acceptable risk becomes lower. It still isn't clear at all what the advantage of mcp is. Maybe when it came out that was my fault, but at this point you have to concede there's a communication or marketing issue, or lack of actual benefit.
4- It's presented as a protocol, but it actually comes with an extensive vibecoded reference implementation, and the code is distributed across multiple repositories, so it's not at all trivial to enumerate where all of the code is, which is a prerequisite to even start static code analysis, leaving one with the only option of runtime analysis, which is a good queue to drop it and not even bother to begin with.
5- The code is vibecoded and auditing would take more time than it takes to actually write it, which is one of the conditions for an amplified DoS attack (on developer attention), the best defense against such attacks is to ignore the packets, so the best path is to ignore content about Model Context Protocol.
Goodbye
Comment by ilc 5 days ago
My only question is how do you handle channels in the architecture now. From what I saw in Claude Code, shifting to a totally http world has some timeout issues if a server drops out and comes back. Because of that I'm stuck writing stubs for my internal use MCP, this is fine for me, but if you are cleaning up semantics: Understanding how we expect clients to act around failure would really help, the story.
Comment by suzuridev 4 days ago
Comment by osinix 5 days ago
Comment by progbits 5 days ago
Comment by firasd 5 days ago
And even on the server side statefulness is very iffy anyway. How long are you going to hold something in RAM from a client and how long will you hold the connection open
Comment by hangrybear666 5 days ago
Comment by flowofcontrol 5 days ago
Comment by closetheloopdev 5 days ago
There is a one-year-old open GitHub issue asking to use semver instead: https://github.com/modelcontextprotocol/modelcontextprotocol...
Comment by flowofcontrol 5 days ago
Comment by rupertsworld 5 days ago
Comment by mlhpdx 5 days ago
Comment by wilg 5 days ago
Comment by kamma4434 5 days ago
Who ever thought a the semantycs of a pipe was a good idea after 30 years of everything else becoming HTTP?
Comment by varmabudharaju 5 days ago
Comment by dend 5 days ago
Comment by wellingtonkodus 4 days ago
Comment by djhworld 5 days ago
e.g. mymcpserver.com/tools/call?mcp-method=search
Comment by kiranravi1995 5 days ago
We were betting clients would cope, and most of them did. When one did not, we had to tell the user their client was the problem, which is never a good look.
The surprise for us was auth getting easier. No session means no confusion about when the key was checked. Anyone can list the tools and actually calling one needs a bearer token or you get a 401.
Comment by wellingtonkodus 4 days ago
Comment by zhonglin 5 days ago
Comment by jbmsf 5 days ago
Comment by greatsage_sh 5 days ago
Comment by landver 5 days ago
Comment by ghostinit 5 days ago
Comment by linklore_dev 5 days ago
Comment by rupatiwari25 5 days ago
Comment by zane_shu 5 days ago
Comment by pullrun 5 days ago
Comment by contactdheerajj 2 days ago
Comment by contactdheerajj 2 days ago
Comment by renezander030 5 days ago
Comment by Lookbefore-org 5 days ago