One Rust Core, Many SDKs — A Proposal to Unify MCP’s Language Ecosystem #354
Replies: 11 comments 26 replies
-
Beta Was this translation helpful? Give feedback.
-
Thank you for your work. Can I confirm if this proposal is to use Rust as the core and other languages as the outer API encapsulation? So, does Rust SDK need to separate its core from external APIs? |
Beta Was this translation helpful? Give feedback.
-
I think this proposal is great, but Rust SDK is not yet fully mature and we are trying to release its first version. |
Beta Was this translation helpful? Give feedback.
-
How to create mcp web server in other programming language? I am curious about how to make a customized a mcp web server in other programing language by using rust SDK as a core? What if user want to add other service to web service router? |
Beta Was this translation helpful? Give feedback.
-
I have submitted PR 172 for your review @jokemanfire @4t145 Kindly share your feedback. |
Beta Was this translation helpful? Give feedback.
-
I quite agree with this proposal because it is indeed wasteful to spend a lot of time implementing the same SDK in different languages, but what I am concerned about is
|
Beta Was this translation helpful? Give feedback.
-
Thanks @jokemanfire @4t145 for your feedback - to summarize
|
Beta Was this translation helpful? Give feedback.
-
This is a cool proposal, and it's great to see examples in both Python and TS already. Regarding adoption and the long-term plans for this, I have a few questions (I don't expect any of these to have perfect answers, I'm just interested in discussing these):
Unrelated to the above, I found some libraries that may wind up being useful for this later on for other languages (was researching to do something exactly like this myself, actually):
|
Beta Was this translation helpful? Give feedback.
-
Have you taken a look at https://github.com/Azure/azure-sdk-for-rust? This is our official Azure SDK for Rust and @ronniegeraghty is working with partners to prioritize services. We do separate out those concepts of serialization, transport, etc. - as we do in all our languages' Azure SDKs - and even support arbitrary async runtimes, defaulting to We don't have SSE support yet but it's on the backlog and just lower priority right now. My thinking was basically a BTW, there's also an official Azure SDK for Go: https://github.com/Azure/azure-sdk-for-go. Same underlying design: all our SDKs are designed to be idiomatic to the language, but consistent in the feature set and, to some degree, overall shape of clients. |
Beta Was this translation helpful? Give feedback.
-
This is an interesting proposal as a standalone project, but I feel it's best to keep MCP as a protocol rather than a single unified platform. In the case of my SDK for PHP a major priority was allowing the creation of MCP clients and servers in shared hosting environments, where the web developer may not necessarily have root access or privileges to the underlying server. This meant using pure PHP code and avoiding dependencies that aren't already provided by most hosting providers. I'm sure there are other platforms where MCP would be useful, but may have specific requirements that would be overlooked in a unified project that tries to accommodate all platforms. |
Beta Was this translation helpful? Give feedback.
-
@logiscape thanks for your feedback. As the author of the most popular community led PHP SDK your views are welcome. For e.g. as you mention that PHP client and server, but its not necessary that all servers be written in PHP or vice versa, in such a case we end up in testing all such combinations each with its own slight variations etc and as the protocol involves the complexity increases. I believe we can keep the PHP idiomatic and ergonomic and still work with a language binding of rust. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Your Idea
Folks, as MCP’s language ecosystem expands, we’re spending more time re‑implementing the same deterministic‑state logic than shipping new ideas. I’d like us to flip that ratio by standardizing on a single, battle‑hardened Rust core (rust‑sdk) that owns the heavy workflow engine— sessions, peering, transport, serialization—while each language surface (Python, JS/TS, Go, etc.) stays 100 % idiomatic and lightweight.
Rust gives us memory‑safe, no‑GC performance overhead, a stable FFI, and a proven path. The payoff is immediate: one quality, security and performance audit instead of five, feature parity across languages on day 1, and p99 latencies that drop from milliseconds to microseconds—without asking Python or JavaScript developers to learn Rust.
In short, one deterministic engine, many friendly faces. We have built a V 0.1 Python SDK based on this architecture so that we write less boilerplate and innovate faster on the parts that matter.
Scope
Beta Was this translation helpful? Give feedback.
All reactions