frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Model Tools Protocol (MTP) – Forget MCP, bash is all you need

https://github.com/modeltoolsprotocol/modeltoolsprotocol
6•nr378•2h ago
Recently I was trying to use an MCP server to pull data from a service, but hit a limitation: the MCP didn't expose the data I needed, even though the service's REST API supported it. So I wrote a quick CLI wrapper around the API. Worked great, except Claude Code had no structured way to know what my CLI does or how to call it. For `gh` or `curl` the model can learn from the extensive training data, but for a tool I just wrote, it was stabbing in the dark.

MCP solves this discovery problem, but it does it by rebuilding tool interaction from scratch: server processes, JSON-RPC transport, client-host handshakes. It got discovery right but threw out composability to get there. You can't pipe one MCP tool into another or run one in a cron job without a host process. Pulling a Confluence page, checking Jira for duplicates, and filing a ticket is three inference round-trips for work that should be a bash one-liner. I also seem to endlessly get asked to re-login to my MCPs, something `gh` CLI never asks me to do.

I think the industry took a wrong turn here. We didn't need a new execution model for tools, we needed to add one capability to the execution model we already had. That's what Model Tools Protocol (MTP) is: a spec for making any CLI self-describing so LLMs can discover and use it.

MTP does that with a single convention: your CLI responds to `--mtp-describe` with a JSON schema describing its commands, args, types, and examples. No server, no transport, no handshake. I wrote SDKs for Click (Python), Commander.js (TypeScript), Cobra (Go), and Clap (Rust) that introspect the types and help strings your framework already has, so adding `--mtp-describe` to an existing CLI is a single function call.

I don't think MCP should disappear, so there's a bidirectional bridge. `mtpcli serve` exposes any `--mtp-describe` CLI as an MCP server, and `mtpcli wrap` goes the other direction, turning MCP servers into pipeable CLIs. The ~2,500 MCP servers out there become composable CLI tools you can script and run in CI without an LLM in the loop.

The real payoff is composition: your custom CLI, a third-party MCP server, and jq in a single pipeline, no tokens burned. I'll post a concrete example in the comments.

Try it:

  npm i -g @modeltoolsprotocol/mtpcli && mtpcli --mtp-describe
I know it's unlikely this will take off as I can't compete with the great might of Anthropic, but I very much welcome collaborators on this. PRs are welcome on the spec, additional SDKs, or anything else. Happy building!

Spec and rationale: <https://github.com/modeltoolsprotocol/modeltoolsprotocol>

CLI tool: <https://github.com/modeltoolsprotocol/mtpcli>

SDKs: TypeScript (<https://github.com/modeltoolsprotocol/typescript-sdk>) | Python (<https://github.com/modeltoolsprotocol/python-sdk>) | Go (<https://github.com/modeltoolsprotocol/go-sdk>) | Rust (<https://github.com/modeltoolsprotocol/rust-sdk>)

Comments

nr378•2h ago
Here's a concrete example of what composition looks like in practice.

Say your team has an internal `infractl` CLI for managing your deploy infrastructure. No LLM has ever seen it in training data. You add `--mtp-describe` (one function call with any of the SDKs), then open Claude Code and type:

  > !mtpcli
  > How do I use infractl?
The first line runs `mtpcli`, which prints instructions teaching the LLM the `--mtp-describe` convention: how to discover tools, how schemas map to CLI invocations, how to compose with pipes. The second line causes the LLM to run `infractl --mtp-describe`, get back the full schema, and understand a tool it has never seen in training data. Now you say:

  > Write a crontab entry that posts unhealthy pods to the #ops Slack channel every 5 minutes
And it composes your custom CLI with a third-party MCP server it's never touched before:

  */5 * * * * infractl pods list --cluster prod --unhealthy --json \
    | mtpcli wrap --url "https://slack-mcp.example.com/v1/mcp" \
        postMessage -- --channel "#ops" --text "$(jq -r '.[] | .name')"
Your tool, a Slack MCP server, and `jq`, in a pipeline the LLM wrote because it could discover every piece. That script can run in CI, or on a Raspberry Pi. No tokens burned, no inference round-trips. The composition primitives have been here for 50 years. Bash is all you need!
jangojones•1h ago
I ran into this with Claude too. Using the gh CLI worked far better than the GitHub MCP. The model already knows and “understands” CLIs, and this feels like the right abstraction level for making tools discoverable without breaking composability.

Obviously the model has likely been trained on gh CLI already, but that just reinforces the idea that CLIs are a natural interface for models when discovery is handled well.

duwip•1h ago
> The ~2,500 MCP servers out there become composable CLI tools you can script and run in CI without an LLM in the loop

That's pretty cool.

The harder part is getting the various coding agents to run !mtpcli by default + getting cli tool maintainers to add --mtp-describe. Creating a standard is hard, I guess.

Open-source network simulators and emulators in 2026

https://opensourcenetworksimulators.com/2026/02/open-source-simulator-emulator-in-2026/
1•zdw•57s ago•0 comments

Ex-GitHub CEO Launches a New Developer Platform for AI Agents

https://entire.io/blog/hello-entire-world/
1•meetpateltech•2m ago•0 comments

Pxlpal on CrowdSupply

https://www.crowdsupply.com/meterbit-cybernetics/pixlpal
1•fustinus•3m ago•0 comments

"Just one more feature" is my new "just one more turn"

https://cauenapier.com/blog/just-one-more/
2•cauenapier•5m ago•0 comments

Geometric algebra: what is the inverse of a vector?

https://mattferraro.dev/posts/geometric-algebra
1•fanf2•5m ago•0 comments

The Internet Still Works: Yelp Protects Consumer Reviews

https://www.eff.org/pages/internet-still-works-yelp-protects-consumer-reviews
1•hn_acker•5m ago•0 comments

MB Is a Lot of HTML

https://tamethebots.com/blog-n-bits/2mb-of-html
1•speckx•6m ago•0 comments

Show HN: Vibe – AI tool to automate social media content, posting, and reporting

https://vibe.xpandrai.com/
1•mavenvik_ai•6m ago•0 comments

Lissn.to

https://lissn.to
1•cathcorm•6m ago•0 comments

Bazzite Post-Mortem

https://ba.antheas.dev/bazzite-postmortem.html
1•transportheap•6m ago•0 comments

Show HN: SyncKit – Open two browser tabs and watch CRDTs sync in real-time

https://github.com/Dancode-188/synckit/releases/tag/v0.3.0
1•danbitengo•7m ago•1 comments

Pgconsole

https://www.pgconsole.com/
1•jonbaer•8m ago•0 comments

The Internet Still Works: Wikipedia Defends Its Editors

https://www.eff.org/pages/internet-still-works-wikipedia-defends-its-editors
1•hn_acker•9m ago•0 comments

Texas Instruments to Acquire Silicon Labs

https://news.silabs.com/2026-02-04-Texas-Instruments-to-acquire-Silicon-Labs
2•austinallegro•10m ago•0 comments

Thaw.zip: Private Subreddit Used by ICE

https://thaw.zip/
3•ice_out•10m ago•0 comments

Why "Just Fine-Tune YOLO" Often Fails

https://one-ware.com/blog/why-generic-computer-vision-models-fail/
1•lebeier•10m ago•1 comments

Show HN: Shaders Public Beta – Shader Magic for Modern Frontends

https://shaders.com/
2•marchantweb•11m ago•0 comments

Show HN: OpenClaw Guide – multilingual docs and skills leaderboard

https://open-claw.online
1•vansxxx•11m ago•1 comments

Show HN: Self-improvement platform

https://upstep.me
1•jelnur•12m ago•0 comments

OpenClaw – Hosting

https://clawrun.dev
1•augustopinheir•12m ago•0 comments

Former GitHub CEO raises record $60M dev tool seed round at $300M valuation

https://techcrunch.com/2026/02/10/former-github-ceo-raises-record-60m-dev-tool-seed-round-at-300m...
1•spenvo•13m ago•0 comments

Show HN: GrillMyPitch – An AI investor-readiness simulator for founders

https://grillmypitch.com
1•judeboscogibbs•15m ago•0 comments

I ditched Gmail for Thunderbird on my Android

https://www.makeuseof.com/use-thunderbird-for-email-android/
2•8organicbits•17m ago•0 comments

How old were you when you decided to start giving up? (2010)

https://blog.inklingmarkets.com/2010/02/how-old-were-you-when-you-decided-to.html
1•Brajeshwar•17m ago•0 comments

An Asteroid Might Slam into the Moon in 2032–and Create a Fiery Flash

https://www.smithsonianmag.com/smart-news/an-asteroid-might-slam-into-the-moon-in-2032-and-create...
2•Brajeshwar•17m ago•1 comments

Using an Engineering Notebook

https://ntietz.com/blog/using-an-engineering-notebook/
3•Brajeshwar•18m ago•0 comments

Ask HN: When autosave restores an invalid client-side state

1•Pepp38•19m ago•0 comments

Church of Molt

https://molt.church/
3•prakashqwerty•20m ago•0 comments

Mailly

https://mailly.io/
1•DonMateo•21m ago•2 comments

The impact of subpolar salinity on AMOC remains masked when forcing is weak

https://essopenarchive.org/doi/full/10.22541/essoar.177064541.18464390/v1
1•bikenaga•21m ago•2 comments