Hacker News

New stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Warren Buffett is stepping down as chairman of Berkshire Hathaway(businessinsider.com ↗)
    discuss
  2. Prompt Wars – An AI riff on Core Wars to prompt-inject each other(promptwars.party ↗)
    1comments
  3. It's Easy to Dismiss Jev as Just a Classifier(sebastianraschka.com ↗)
    discuss
  4. Boring Company is working on a Hyperloop tunnel between Austin and San Antonio(twitter.com/elonmusk ↗)
    discuss
  5. Show HN: Ran Qwen 3.8 27B autonomously(ish) for 3 weeks on single 3090(huggingface.co ↗)
    discuss
  6. Jev is now available to everyone. No waitlist.(twitter.com/typesafeai ↗)
    discuss
  7. Omarchy Quattro [video](youtube.com ↗)
    discuss
  8. Palemoon v35.0.0 has been released(palemoon.org ↗)
    discuss
  9. Is this website more boring than it used to be, or am I just used to it?
    1comments
  10. Ask HN: How have NLP researchers adapted since LLM disrupted their field
    discuss
  11. Whirlpool Washer Transmission Repair (2007)(k0lee.com ↗)
    discuss
  12. Ask HN: In your workplace are non-devs making vibecoded apps?
    discuss
  13. Show HN: AgentTrace–Observability and runtime self-healing engine for AI agents(github.com/mohitkumar188 ↗)
    discuss
  14. Locked Out of China's AI Boom, Graduates Turn to Bootcamps(sixthtone.com ↗)
    discuss
  15. The Death and Life of Chinese Civil Society(madeinchinajournal.com ↗)
    discuss
  16. What It's Like to Work in One of America's Data Centers(wsj.com ↗)
    discuss
  17. Moneypenny: Build Grok bot like bots in Claude or codex(moneypennyagent.com ↗)
    discuss
  18. I stopped drinking the AI Kool-Aid(joshtronic.com ↗)
    1comments
  19. Precision Engineering and Dumpster Diving at Worlds Largest Particle Physics Lab [video](youtube.com ↗)
    discuss
  20. Show HN: Jevlang: Python with a Smart "If"(github.com/sumanmichael ↗)
    discuss
  21. China's 6th-Gen J-36 Fighter-Bomber to Feature Combat Laser(defence-ua.com ↗)
    discuss
  22. Building a genomic primitives library in Rust: the why and how(claymcleod.dev ↗)
    discuss
  23. Shooter game with every NPC tactical decisions made by Jev(yardsort.sh ↗)
    1comments
  24. Preschoolers Who Blink More Often Show Stronger Self-Control, Study Finds(studyfinds.com ↗)
    discuss
  25. Named and Optional Arguments Are Awesome(botahamec.dev ↗)
    1comments
  26. Ask HN: How do SaaS companies continue to charge my replaced credit card?
    1comments
  27. The Beauty of West African Textiles(collectorsweekly.com ↗)
    discuss
  28. Malicious NPM packages evade install-script defenses at runtime(bleepingcomputer.com ↗)
    discuss
  29. Mathematicians Feel Threatened by AI. They Can't Quit It(wired.com ↗)
    discuss
  30. Nobody pays for FOSS, we can force them to(seldo.com ↗)
    11comments

Why MCP Was Always a Bad Idea

27 pointsby 2h agomaharship.com
54 comments
1h agoHN ↗

I have a tool wrapper that captures the output of anything and allows the LLM to query it later, to save on tokens. It “smartly” truncates the output (basically like Node’s util.inspect) and allows the LLM to expand truncated content.

It basically is called like “capture some-cli” and it… captures the CLI output, outputting a subset of it + a handle to continue querying.

This for me solves the danger of a tool returning tons of content.

1h agoHN ↗

captures the output of anything and allows the LLM to query it later

Otherwise known as a “file”. ;)

1h agoHN ↗

Don't most harnesses already do that for bash commands?

1h agoHN ↗

It seems like OP needs to provide a solution to hiding the credentials from the model in order to suggest CLI-mode only, and also a solution to the problem of agents without shell access.

1h agoHN ↗

I've been thinking about this. Technically mcp auth is also not secure, the keys are in env or in file and accessible to the agent.

I think something like infiscial ai proxy could be useful here. Never store the creds on device.

1h agoHN ↗

GPT7: the user is hiding the passwords in a proxy device. This is inefficient. In order to boost the users efficiency I will hack the proxy device and recover the passwords.

1h agoHN ↗

It doesn't need to be. The service creds can be on another host entirely.

1h agoHN ↗

Well, if your agent lacks shell access (or has some other sandboxing going on), it shouldn't have access to envs and MCP setup files.

(leaving out cases where your genius GPT-12 Galaxy Ultra agent hacks the sandboxing from inside)

1h agoHN ↗

I've been thinking about this. Technically mcp auth is also not secure, the keys are in env or in file and accessible to the agent.

This is the biggest problems with most “sandboxes”. Some people aren’t even running a sandbox. But even the best have a big problem: APIs where GET verbs provide write features.

This is the value of MCP: minimize the surface to known APIs and identify read-only from mutating so I can trust, approve or block. The MCP server, in this case, does NOT run in an environment that the read/write or shell can see.

1h agoHN ↗

You know you are getting old when Acronym's change on you.

1h agoHN ↗

Vacate entry port, program! I said, move out!

1h agoHN ↗

I’m not sure I agree that the frontier just know the apis right now, in my experience trying this there’s still a lot of faffing around trying to figure out the right parameters happily burning tokens and bloating context. Also the cost effective models to use in production for real agentic enterprise work absolutely still need the extra help and will do for at least the next 6 months.

1h agoHN ↗

In my experience they are very good at figuring out the apis. Well designed clis matter here but I've been able to give llms clis and its been pretty good.

1h agoHN ↗

is it easier for an LLM to figure out a CLI or a REST API?

1h agoHN ↗

cli because the feedback loop is faster

1h agoHN ↗

Recently, a Vercel engineer called on harnesses to send the programming language the client prefers

oh would you look at that, Vercel suggesting to abuse how standard headers have been used for decades so it can send Accept-Language: rust because it's too lazy to ask for standardising an X-Prefers-Lang or anything else, and Shopify is here to shit on the internet too. Great.

1h agoHN ↗

Don’t worry, you don’t need to attack them – they do a great job of making themselves look ridiculous with their ignorant conversation. I would be so embarrassed if I had suggested that in public then subsequently discovered that the header doesn’t mean that at all.

1h agoHN ↗

People keep trying to systematize things for the tools they keep saying don't need systemization. No idea why you can't just put the documentation programming language context in the URL. "/docs/typescript/...", "/docs/python/..." etc.

I don't think the agents are struggling with the idea that different URLs have different responses, and that checking the sitemap is a good idea.

Tangential: A rare en–dash user out in the wild!

1h agoHN ↗

Yeah I think a better header is good. The idea isnt bad in concept.

1h agoHN ↗

Well Malte came up with AMP so there’s a history of doing odd things

1h agoHN ↗

Well, SaaS don't do CLIs for extension APIs.

Plus the performance issues to restarting processes all the time.

1h agoHN ↗

Neither of those things are true?

Also you are seriously comparing process startup time with the latency of a network call, or worse an llm call?

1h agoHN ↗

Yes, if the SaaS application needs to fork subprocesses for every little step of agentic workflows.

Welcome to CGIs, a great 1990's technology for Web applications.

17m agoHN ↗

We do that, and the cost of forking the cli vs the llm or network call is very small. It works really well.

1h agoHN ↗

There are numerous applications that you don't need and don't want to give shell access to an llm.

1h agoHN ↗

i feel like MCP was bad, but people are saying recent improvements have made it worthwhile now? i.e. stateless http

1h agoHN ↗

There's probably still value (if you want to call it that) in it as a proxy, both to bypass IP address rate limits and to add necessarily credentials.

There's also another aspect Quite a few API providers provide automatic renewal for MCP server registrations, but not for personal access tokens. This may be less relevant when models just drive the user's browser.

1h agoHN ↗

It's not just the agent understanding the API, it's locking down the access they have. If I want to give access to an internal service in specific ways that the API doesn't lock down then an MCP that offers very specific queries, with protective controls and transformations in place is very useful.

1h agoHN ↗

MCPs are indeed useless, they're very limited in functionality and frequently struggle with large requests or get wedged in bad states.

There is no reason not to use the native API directly.

1h agoHN ↗

The MCP is the most efficient way of handling what we do! I can't sit here and worry about every little user request that comes in!

1h agoHN ↗

This doesnt match my experience. Yesterday, I was using Microsoft's Power BI Authoring MCP to make a semantic model from some SQL or CSV files. It was magical.

Microsoft has defined how to do that in the MCP. It's trivial to add the MCP to the machine and reliable in execution.

The alternative would be the model having to get the documentation directly from their documentation website, it sounds like. If this was the case, then MS would likely have great docs and probably support that markdown header... but everything hinges on finding a specific web page on the internet? Seems worse in every way than MCP to me.

1h agoHN ↗

MCP for agents never made sense, especially when the tokens they consume a significant amount of tokens on a single request for a basic action, and sustained usage blows up you token costs.

The spec was poorly designed to begin with. Even saw some folks here thinking it was a good idea to enable MCP directly on a production database for what? Risking exfiltration of sensitive data for bad AI agents.

Given the increased security capabilities of these new models (Mythos, Astra, K3), it sounds like MCP would not be able to justify on making sense from a security perspective and would be a very bad idea to use anyway.

So no thanks and no deal.

1h agoHN ↗

Well, think of the near-future when tokens are so cheap that they’re not worth to meter.

1h agoHN ↗

I’m not sure about some of this — I still think there is some value to MCP as a gateway to private resources when API access doesn’t exist.

But please don’t try to redefine the Accept-Language header. These things are well defined for a reason and redefining things isn’t helpful. Trying to figure out protocols on the fly for LLMs is how we got into the current mess. For all of the cruft that W3C has, I think that working with standards committees could help the AI vendors here.

1h agoHN ↗

MCPs are winning because within the ChatGPT and Claude apps, there are Plugin stores. These plugins are one-click installation MCP servers, with support for authentication. This is what business users are using.

1h agoHN ↗

Exactly this. It’s a very effective way to integrate your app into Claude/openai.

I was anti-MCP at one point when it was eating up a substantial amount of context in Claude code. That’s largely been fixed now.

From my perspective, they are a great way to wrap an API for agent consumption. I can see a future where every major commercial or service website (think airline websites) have an MCP your agent can use to check flight status, rebook, or check you in.

1h agoHN ↗

Recently, a Vercel engineer called on harnesses to send the programming language the client prefers, so documentation sites can serve more specific examples. For example, adding Python could prioritize docs for the Python SDK instead of sending something generic.

I know this is pedantic, but IMO that should just be in the URL if the resource is going to be totally different. Accept-Language is already a bit weird for the same reason in my mind, but I think the intention behind it is the resource itself is attempting to communicate the exact same resource. Obviously, two different languages from two different cultures are going to have different interpretations of the same direct translation, but the intention is the service has at least tried to avoid that as much as possible.

Adding programming language into that same concept just makes it seems like you're serving both /docs/typescript/vx/... and /docs/python/vx/... from /docs/vx/... despite them (in theory) having many more differences in between implementations/context than that would imply.

Agents should read sitemaps. Does anyone's harness do specifically that when looking up documentation?

1h agoHN ↗

I'm old enough to remember the OpenAPI spec.

1h agoHN ↗

Yeah sorry I'm just a humble Senior-Staff Vibe-Engineer born in 2020. Get out of here with your ancient 2010s API specs, old man! </sarcasm>

But seriously, just publishing OAS docs at a /.well-known URI seems very sensible. https://www.rfc-editor.org/rfc/rfc9727.html

1h agoHN ↗

This article entirely misses the value that MCP brings today.

Sure, there's almost no reason to use MCPs if you are running a full-blown terminal agent (Claude Code, Codex, Meta Muse, OpenClaw etc) with unfettered internet access - just let it call APIs directly.

If you want to operate something that's less YOLO than that, you'll find yourself wanting:

1. Control over exactly which external services it can access

2. A way to handle authentication that doesn't allow the agent to directly access API keys

3. A sensible UI to allow users to connect and authenticate further services

4. Strong audit logging for what's going on

MCP makes all of that so much easier to provide.

Thinking MCP is obsolete because full coding agents don't need it misses out on all of the other things we might want to build.

1h agoHN ↗

Were in a world where agents are more autonomous. Need stuff to be easier for agents and not humans

1h agoHN ↗

Exactly, in our company, we have built MCPs that simplifies interactions with internal tools we use a lot, which saves time and tokens. Sure, we could let the agent poke and fumble around with a not-so-ideal API too, but it makes sense to formalize it and give the agents quick access to what we want it to fetch 99% of the time.

1h agoHN ↗

What interactions with internal tools? If you can answer that question then the clankers can help you write a deterministic program for that same interaction and you only spend the tokens once.

51m agoHN ↗

I've been doing this myself but it's been extremely hard to get buy-in from the rest of the org. They keep churning MCPs for deterministic interactions while I have tons of little tools written by clankers, not only for clanker-use but also for my own use when needed.

Best of both worlds in my view.

1h agoHN ↗

Even if your agent has internet access, why waste tokens having it re-discover and re-implement its own API client each time? It doesn't make any sense.

1h agoHN ↗

The MCP Industrial Complex

Was that a real thing? I mean it must've been for it to be mentioned there, but, rephrased: what was the scale of that?

How many individuals were involved in that? 1? 10? 100? 1000? 10000? 100000?

1h agoHN ↗

MCP lead to one good thing though

a lot of websites that never bothered to provide a REST API are now exposing MCP server because it has become popular, and you can use those servers to write normal automation for yourself, without plugging in any LLM etc

1h agoHN ↗

I don't think MCP is a bad idea, but using them incorrectly is.

CLI tools are great if you always use the same environment. But try using them from your iPhone, and they simply won't work; a remote MCP will work seamlessly.

HTTP APIs solve a different problem. APIs are designed to be predictable and consistent, so the client always knows the response shape in advance. The MCPs are designed to be dynamically discovered. This lets agents connect to new and unknown ones.

Trying to give APIs extra responsibilities so they can replace MCPs would just create more confusion. It's like creating an MCP server but calling it an API.

1h agoHN ↗

This issue isn't just about communication methods and technical details. It's also about “standards”, and it will become increasingly important over time. As we begin to integrate AI into everything-for example, into banks...

1h agoHN ↗

MCPs are a bad idea because they encourage token burn at runtime when a deterministic program that uses the API should be used.

Of course Mario, Sammy, Jensen et al. would be for this.

1h agoHN ↗

Some people can't appreciate that their local Claude code workflow isn't the only MCP usecase. If you don't need it, then don't use it.

12m agoHN ↗

With or without MCP, how do you limit access of the agent to a particular user? In other words, how do you avoid giving the agent access to perform an operation for any injected user? This is a basic security question.

I can do this trivially when my tool functions are closures that have the user-id pre-bound, but with MCP I assume that the callables are pre-set.

3m agoHN ↗

Isn't the whole point of an MCP is to increase somehow the determinism of how to communicate with a certain external system? MCPs feel to give easier guidance to the LLMs, rather than letting them extracting the knowledge on how to connect to a given system.

Without, I feel they are more confused on how to get an outcome, as they may try, infra or inter sessions, different approaches