Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

The thing that a lot of people miss with MCP is that it's the right fit for enterprise software. LLMs, being universal translators, are the ideal glue between many disconnected systems that are extremely hard to connect without some fuzzy layer in between. And so that's why you see so much of the B2B SaaS world rolling out MCP servers, and internally at these companies, they're talking about how to re-jigger their APIs and restrictions for those APIs given different usage patterns.

Yes, the protocol is not necessarily "enterprise ready" by various definitions, but as the author points out, this is not terribly important, and the history of standards shows us that even messy and "bad" things get widespread adoption because they hit the right notes at the right time for the right people.



MCP is just RPC over a long-lived connection, most cases being a Websocket. IMO RPC is easier to setup because:

1. There's less bikeshedding for the authors about whether modifying a field in a user object should be a PUT or a POST replacing the original user object. I've spent a non-trivial amount of time bikeshedding over REST verbs.

2. LLMs don't need to understand the REST semantics of the API. It can just look at available RPC methods and make the RPC call it thinks will work.

I think that's really it.


MPC is more than just a standard way to access remote functionality - it also provides discoverability so the client (LLM) can ask the server what functionality it offers, and understand how to use it.


Sure but there are established alternatives for that also. The internet supports looking up DNS records (A, MX, SRV, TXT, etc), the web offers /.well-known as a place to store things like API endpoint specs, etc. The main difference with MCP is that the discoverability comes with the stream-oriented communication semantics.


Well, you’re basically saying that different domains have different solutions to this problem. There isn’t a universally accepted way to do client discovery, and what exists are very specific to those domains.


> There isn’t a universally accepted way to do client discovery, and what exists are very specific to those domains.

I commented elsewhere on this recently, https://hackertimes.com/item?id=44063680, but a huge value of LLMs is you don't need a "universally accepted way to do client discovery" - if you have an exposed API that already supports one of the bajillion standards that expose schema information (e.g. Swagger/OpenAPI, GraphQL, SOAP, etc.), then any decent LLM should just be able to figure out how to use it.

This idea that we need "one more universal interop standard to rule them all" seems to me like a very pre-LLM way of thinking.


> if you have an exposed API that already supports one of the bajillion standards that expose schema information

I don't know jf they are doing it well with MCP, but if a solution has one extra round trip in the model for a dependent read it has to reprocess the entire context or store it into a cache hierarchy possibly burning several hundred gigs of ssd write durability if it isn't a short enough time to cache in system RAM.


Oh great, just what I need for my finance stack, an API with built in AI hallucinations :/


the thing with building interconnected software is that we should resist the urge to just let the AI perform magic and somehow reliably mix and match all these overlapping things. We should have ONE clearly defined contract. There is no evidence that this principle can be challenged even at the current state of LLM.


> There isn’t a universally accepted way to do client discovery

Someone should really create a protocol to transfer hyper text where clients could discover resources through embedded links in documents


I don't think it's accurate to describe .well-known as "very specific to [a domain]"


It’s at least restricted to http servers. Certainly more once you include domain specific conventions


That’s far from unheard of in RPC protocols? E.g. the system namespace of xml-rpc.


maybe REST? I think a proper REST system of APIs is designed to be discoverable.


REST is a design principle, not a protocol.

As such you can make a REST system discoverable via e.g. external schemas (commonly OpenAPI) or self-documentation but there is no guarantee that either exists, and while the latter is intrinsic there is no standard discovery mechanism for the former (cf openapi-specification issues 724 or 2128).


Right, our MCP server we’ve productionized supports this. It’s really fantastic when it works well. Lotta work to do to make it work well more often though!


>MCP is just RPC over a long-lived connection, most cases being a Websocket.

My impression was that MCP used SSE and that not using websockets was one of the main reasons it isn't enterprise ready - because it requires maintaining server side state which makes it difficult to deploy at scale. Did they change it to websockets?

https://raz.sh/blog/2025-05-02_a_critical_look_at_mcp


Not "change" but it does seem to be an option https://modelcontextprotocol.io/specification/2025-03-26/bas...

As for the stateless part, they heard you and made sure to bring sessions back to SSE: https://modelcontextprotocol.io/specification/2025-03-26/bas...


It isn't "just RPC". The response from an MCP Server Tool is supposed to be LLM-Ready Context. Normal API or RPC calls are responses designed for other software to ingest. If you simply attach an existing API you get a context flooded with detail it likely doesn't need.


I use RPC in combination with vector search and a embedded model to get AI ready content. Would you define this as MCP?


Isn't it just an extension of Swagger, ensuring the API is well documented so the LLM can properly use it?

Doesn't seem to have any other real magic. It could be replaced by an additional field which acts as the LLM equivelent of a doc string in python.


It's a great money maker. Each data request involves a paid trip through an LLM. It's not like the endpoints negotiate a schema they can use to make cheap queries in future.


We have rest and openapi.

That allows already for self discovery etc.

Everyone who will offer mcp offers a good API anyway.


We don't need SDKs, they publish API docs.

We don't need packages or functions, we can just write the code ourselves, every time it's needed.

We don't need compilers, the computer understands assembly already.

It's a mismatch of use - MCP isn't about telling the LLM about the APIs. It's also about encapsulating and simplifying them so the LLM isn't manually figuring them out every single time from scratch.


OpenAPI specs provide everything the LLM needs to understand an API. And if it can be simplified for the LLM while retaining functionality, why not simplify the API altogether, instead of implementing yet another entry point into the application? Just so nobody has to sit down for longer than the duration of a TikTok and design their API properly?


> That allows already for self discovery etc.

The problem is usually not with listing the APIs. Almost all services have OpenAPI specs, and you can (often too) complain about lack of documentation.

Orchestrating these APIs is the annoying "fuzzy" challenge. Imagine you have a VM service, and you provide a set of APIs. Someone comes asking "How do I create a copy of a VM we have in the US region to EU region but with half the CPU/RAM?"

You might point to your OpenAPI spec and say you can:

    var s1 = takeSnapshot(vm1);
    var s2 = copySnapshot(s1, 'EU');

    var vm2 = createVmFromSnapShopt(s2, sizeOverride).

Ok... but is there a makeACopyOfVmWithHalfCPUAndHalfMemoryInEurope(vm1) API? I don't want to copy that code. In 3 months it'll break because `vm1` is of a type that can't be snapshoted and you'll tell me that I should check `vm1.snapshotable`, or that the new size is invalid in the new region because I should be calling `isSizeAvailable()`

If this were an MCP, then it would either orchestrate these APIs "correctly" for me checking as corner cases as possible as (presumably from examples it saw on github). When it misses, it's "oh well, even AI couldn't get it. We can all blame AI everybody" As oppose to when a Human misses and someone is like "how amateurish is the implementation that you're not checking if the vm is `snapshotable` or not?


the value is being able to extend the internal website mcp, so it can grab the data i need.

i can script across a billion systems that i would never go through the work of getting auth/setting up all the service calls and workflows for.

the mcp doesnt need any new permissions, its just what ive got website access to


completely agree. huge enterprises are full of engineers who want to do amazing things from 9-5 and then sign off and forget about work until the next day. what kind of business wouldn't want to make sure they're getting the most out of their employees during business hours?




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: