News for hackers. Stuff that matters.
Re:The Agent2Agent Protocol (A2A) by whalesalad on Wednesday April 09, 2025 @10:40AM (#43632675)
Agreed. At the end of the day we are talking about RPC. A named method, with known arguments, over the wire. A simple HTTP request comes to mind. But that would just be too easy. Oh wait, that is what all of these are under the hood. We are so cooked.

    from fastmcp import FastMCP

    mcp = FastMCP("Demo ")

    @mcp.tool()
    def add(a: int, b: int) -> int:
        """Add two numbers"""
        return a + b
This is an example of fastmcp. Notice anything? Replace 2-3 lines of code and this is a Flask or FastAPI application. Why are we not just going all-in on REST/HATEOAS for these things? My only hunch is that either 1. the people designing/proselytizing these "cutting edge" solutions are simply ignorant to how systems communicate and all the existing methods that exist, or 2. they know full well that this is just existing concepts with a new shiny name but don't care because they want to ride the hype train and take advantage of it.
Re:The Agent2Agent Protocol (A2A) by pjerem on Wednesday April 09, 2025 @11:18AM (#43633124)
Ironically, I tried to use the official "github-mcp" and failed to make it work with my company's repos, even with a properly configured token. The thing comes with a full blown server running inside a docker container.

Well, I just told my llm agent to use the `gh` cli instead.

It seems all those new protocols are there to re-invent wheels just to create a new ecosystem of free programs that corporations will be able to use to extract value without writing the safety guards themselves.

Re:The Agent2Agent Protocol (A2A) by config_yml on Wednesday April 09, 2025 @11:59AM (#43633585)
I feel the same way about OpenAI‘s new responses API. Under the cover of DX they‘re marketing a new default, which is we hold your state and sell it back to you.
Re:The Agent2Agent Protocol (A2A) by whalesalad on Wednesday April 09, 2025 @01:08PM (#43634565)
OpenAI is tedious to work with. Took me a solid day of fooling around with it before I realized the chat api and the chat completions api are two entirely different apis. Then you have the responses api which is a third thing.

The irony is that gpt4 has no clue which approach is correct. Give it the same prompt three times and you’ll get a solution that uses each of these that has a wildly different footprint, be it via function calls or system prompts, schema or no schema, etc.

Re:The Agent2Agent Protocol (A2A) by lherron on Wednesday April 09, 2025 @08:51PM (#43639572)
Wait till you deal with google genai lib vs google generativeai lib
Re:The Agent2Agent Protocol (A2A) by nonethewiser on Wednesday April 09, 2025 @11:51AM (#43633477)
I dont fully understand. The protocol uses HTTP and has a JSON schema. But there are more specifications outside of that. How do you specify those things without a new protocol? Or is the argument that you dont need to specify those things?
Re:The Agent2Agent Protocol (A2A) by Xelynega on Wednesday April 09, 2025 @01:41PM (#43634954)
REST is a protocol that uses HTTP and a JSON schema.

I fail to see how they're different, they're both "these are the remote procedures you can call on me, and the required parameters, maybe some metadata of the function/parameters".

Re:The Agent2Agent Protocol (A2A) by pests on Wednesday April 09, 2025 @10:04PM (#43639948)
How are they both describing the remote procedures and parameters tho? In order for the LLM to use a tool it needs to know its name and arguments. There has to be some kind of spec, in some or format, for it to use.

An existing Swagger/OpenAPI spec is not sufficient. You want to limit options and make it easy for an LLM to call your tool to accomplish goals. The complete API surface of your application might not be appropriate. It might be too low level or require too many orchestration steps to do anything useful.

A lot of existing API's require making additional calls using the results of previous calls. GET /users to get a list of ids. Then repeatedly call GET users/$id to get the data. In a MCP world you would provide a get-users tool that would do all this behind the scenes and also impose any privacy/security/auth restrictions before handing this over to an LLM.

We see similar existing systems like GraphQL which provides a fully hydrated resultset in one call. Tons of API's like Stripe (IIRC) that provide a &hydrate= parameter to specific which relations to include full details in-line.

I do agree MCP is overhyped and might not be using best principles but I do see why its going off in its own land. It might be better suited over different protocols or transports or encodings or file formats but it seems to at least work so until something better comes along we are probably stuck with it.

Re:The Agent2Agent Protocol (A2A) by TeMPOraL on Thursday April 10, 2025 @03:06AM (#43641441)
> I fail to see how they're different, they're both "these are the remote procedures you can call on me, and the required parameters, maybe some metadata of the function/parameters".

For one, REST is not RPC, despite being commonly confused for it and abused as such. The conceptual models are different. It makes more sense for an action-oriented RPC protocol to be defined as such, instead of a proper REST approach (which is going to be way too verbose), or some bastardized "RESTful" protocol that's just weirdly-structured RPC designed so people can say, "look ma', I'm using HTTP verbs, I'm doing REST".

Re:The Agent2Agent Protocol (A2A) by daxfohl on Wednesday April 09, 2025 @11:14AM (#43633081)
Audio and video streams, two way sync and async communication, raw bytes with meaning, etc. And it's not just remote services, it can be for automating stuff local real-time on your machine, your ide or browser, etc. Like the docs say, MCP is to an AI model as USB is to a CPU.
Re:The Agent2Agent Protocol (A2A) by peab on Wednesday April 09, 2025 @11:17AM (#43633104)
Yeah, i haven't seen a reason why we can't just use REST. Like, auth is already figured out. The LLMS already have the knowledge of how to call APIs too!
Re:The Agent2Agent Protocol (A2A) by skeledrew on Wednesday April 09, 2025 @11:44AM (#43633416)
It's like deciding between Assembly or C for some given project.
Re:The Agent2Agent Protocol (A2A) by skeledrew on Wednesday April 09, 2025 @11:37AM (#43633340)
It's just another layer of abstraction so one doesn't need to think about HTTP at all, which would bring in irrelevant baggage.
Re:The Agent2Agent Protocol (A2A) by qwertox on Wednesday April 09, 2025 @11:53AM (#43633506)
To be fair, HTTP adds a layer of friendliness over TCP (POST/GET, paths, query parameters) and the servers can be so simple that it can hardly be considered irrelevant baggage.

The benefit it brings is that you can add debugging endpoints which you can use directly in a browser, you get networking with hosts and ports instead of local-only exe + stdio.

Re:The Agent2Agent Protocol (A2A) by skeledrew on Wednesday April 09, 2025 @12:35PM (#43634065)
That's just one part of it. Keep in mind MCP supports 3 transport methods: stdio, SSE (which would be your HTTP) and websockets. Irrelevant baggage would be having to consider the workings of any of those (given a decently implemented client+server library), rather than merely declaring the servers, tools, resources and prompts to be accessed. There's also a debug mode I believe.
Re:The Agent2Agent Protocol (A2A) by Xelynega on Wednesday April 09, 2025 @01:49PM (#43635053)
This just furthers my theory that people pushing for MCP don't understand how networking and protocols work.

stdio is a file that your computer can write to and read from

HTTP is a protocol typically used over TCP

websockets is a protocol initiated via HTTP, which again is typically over TCP

Both HTTP and websockets can be done over stdio instead of TCP.

It sounds like MCP has a lot more "irrelevant baggage" I need to learn/consider.

Re:The Agent2Agent Protocol (A2A) by skeledrew on Wednesday April 09, 2025 @02:03PM (#43635243)
The entire point can be summed in the first 5/6s of that. You don't need to know any of it, because it's irrelevant (at that abstraction). Just as it's irrelevant to know how registers work, to allocate and free memory, avoid/handle segfaults, etc if using a high level language like Python, vs Assembly or C.
Re:The Agent2Agent Protocol (A2A) by Xelynega on Thursday April 10, 2025 @03:19PM (#43647198)
That doesn't sound like the case for MCP though. It sounds like when implementing an MCP server there is a difference between the three transport methods that requires different code on the server.

This is a problem solved by other protocols that are just stacked on top of eachother without knowing how eachother work.

Re:The Agent2Agent Protocol (A2A) by skeledrew on Thursday April 10, 2025 @07:33PM (#43648933)
That depends on the library implementation. A given library can be anywhere on the spectrum from "user knowledge and management of the transport methods required" to "transport method is determined by protocol format or invocation" (eg. "local://..." vs "remote://...").
Re:The Agent2Agent Protocol (A2A) by whalesalad on Wednesday April 09, 2025 @11:47AM (#43633442)
but at the end of the day MCP is HTTP lol
Re:The Agent2Agent Protocol (A2A) by mindcrime on Wednesday April 09, 2025 @11:49AM (#43633460)
That's not quite right. MCP can run over http, but it doesn't have to.
Re:The Agent2Agent Protocol (A2A) by skeledrew on Wednesday April 09, 2025 @12:37PM (#43634096)
MCP is a capabilities protocol which uses multiple transport protocols, including HTTP.
Re:The Agent2Agent Protocol (A2A) by zellyn on Wednesday April 09, 2025 @01:03PM (#43634504)
Yeah, I got that from reading the Ghidra MCP (very instructive, strong recommend), but I'm curious what the LLM needs to output to call it. I should go read Goose's code or instrument it or something…