Show HN: Mcptoon – Token-efficient MCP CLI client
- swedishagentic - 347 sekunder sedanHow is this different from headroom? Mcptoon seems like it's specific to tool calls. https://github.com/headroomlabs-ai/headroom
- debazel - 14673 sekunder sedanWhy is it replacing true/false with T/F? true/false is already 1 token in all tokenizer I've seen. Even worse is replacing null with ∅. ∅ is a special unicode symbol that takes up 2 tokens compared to the 1 token for null...
- Zinu - 17675 sekunder sedanI don’t think the Show Me section makes sense, the TOON variant clearly doesn’t have the same information. And the examples in the “How TOON works” section focuses on number of characters instead of tokens. I would think “null” is a single token anyway, why bother replacing it with an uncommon character?
- Loic - 15804 sekunder sedanI spent more than one week, as a side project, to add an MCP server to my Cheméo website. Only 4 tools.
It took me way more time than expected, I was thinking: "Just wrap the REST API, 2h, done".
The MCP payload has nothing to do with the REST API one. Because you need to make it interpretable and context efficient even so it is structured data.
It was really interesting work and I suppose very little people are taking the time to rethink what is sent over the wire while creating a MCP server. If so, we would not have MCPs with the minimal payload being 500kB of JSON soup.
If you send my MCP through your "save token filter", I can guarantee you, that you will have trash down the line.
- moinism - 12180 sekunder sedanHow do unresearched, vibe-coded projects like this reach the front page?
- philipp-gayret - 12659 sekunder sedanOP, I'm very interested in seeing an actual comparison ran through a common tokenizer of tool calls. I think you'll find different results than what you intended for this tool to be. You've mixed up tokens with characters on your screen.
- ameshkov - 16533 sekunder sedanI made an MCP proxy with a similar idea in the past: replace a ton of tools that consume tokens with just two (get_tool_schema, invoke_tool) - https://github.com/ameshkov/mcp-compress-router
One thing that I noticed is that it’s often better to return tool names with argument names, i.e. return “search_web(query)” instead of just “search_web” when listing tools. Otherwise models often tend to hallucinate argument names and an extra turn is required to correct the mistake.
One additional advantage that such tools provide is that when you use different coding agents you don’t have to set up all the MCP servers in every agent, you just set up one (or point the agent to the cli like in this project).
- stephantul - 12710 sekunder sedanI think that some of these choices (as others have commented) show that the author has not investigated how tokenization works.
Tokenization is not some black box, you can run tokenizers and check them.
- saretup - 12332 sekunder sedan> zero information lost
You're just returning the name of the tool, the rest of the information (description/input schema) is definitely lost. Cut to the LLM making mistakes in calling the tool with incorrect schema or calling the wrong tools altogether, recovering, wasting tokens and cycles.
- wannabe44 - 17309 sekunder sedanI am not going to trust a single number thrown by these AI hustlers written in that salesman voice.
Leave alone 97%.
> Your agent calls 20 tools. Each returns 500-3,000 tokens wrapped in {"content":[{"type":"text","text":"..."}]}.
This is a problem with your tool design. Most MCPs are fully vibe coded without any thought about tool selection.
> On a 128K context window, that's 30-55% gone. Not on work. On syntax.
Tool output is not "syntax" you donkey clanker.
Again, use the code approach, let the LLM filter out the JSON using tools. This TOON thing is just vibes. Most of the time your tool output should not even be JSON. It should be well formatted markdown. In cases where it's large structured data, your LLM should have tools (code / jq) to dissect it. So TOON is pointless.
- alxhslm - 15707 sekunder sedanDon’t quite see the point of this. It is well known that MCP is a bit bloated for coding agents at least.
But, why not just use CLIs for each tool? That seems to be where things are going anyway
And using MCP as an internal communication method seems odd when you could use the APIs directly
- Avery29 - 5743 sekunder sedanMaking MCP context cost visible before the agent sees it feels like a useful debugging tool, not just an optimization.
- kk3838368397373 - 13791 sekunder sedansorry, is Headroom still a thing? What happened to it? Is anyone still using it? so many things , which one is actually working :/ idk this ai world
- dthedavid - 18714 sekunder sedanHow does it work? Im building a video editor and right now it has access to nearly 100 tools. Would be good to learn the techniques you used to make tool discovery more efficient.
- notpushkin - 14623 sekunder sedanCool! Can we get a human-efficient MCP CLI while at it? I want to be able to use MCP just as well as the LLMs can.
- bobkinartem - 15831 sekunder sedanI thought Codex and Claude Code agents are already token-efficient so writing agents that saves tokens is pointless.
- bythreads - 17465 sekunder sedanSorry, isnt this just compression? Lookups burn tokens just on the other end?
- vasco - 17529 sekunder sedanI really doubt that null and \n make any sense to replace with non ascii symbols. They are both most likely already a token only and for other purposes at least \n becomes larger as a symbol.
- quantumeon - 1425 sekunder sedan[flagged]
- handsometong - 2903 sekunder sedan[flagged]
- kepalabergetar3 - 14211 sekunder sedan[dead]
Nördnytt! 🤓