Remix.run Logo
theknarf 15 hours ago

We should just build more CLI tools, that way the agentic AI can just run `yourtool --help` to learn how to use it. Instead of needing an MCP-server to access ex. Jira it should just call a cli tool `jira`. Better CLI tools for everything would help both AI and humans alike.

tomashubelbauer 14 hours ago | parent | next [-]

This would be awesome, but great CLIs would have already been valuable prior to the age of LLMs and yet most services didn't ship one. I think it is because services like Jira and others do not want to be too open. Ultimately, despite the current LLM/MCP craze, I think this won't change and MCP tools will start getting locked down and nerfed somehow, the same way APIs have in not so recent memory after there being a bit of a craze around those a decade+ back.

xnorswap 12 hours ago | parent | next [-]

I agree with your conclusion that this stuff will get locked down again over time.

I think there's also another major reason people don't like to ship desktop software, and that's the cost of support of dealing with outdated tools, it can be immense.

Ticket as raised, "Why is my <Product> broken?"

After several rounds of clarification, it's established they're using a 6-year old version that's hitting API endpoints that were first deprecated 3 years ago and finally now removed...

It's incredibly expensive to support multiple versions of products. On-prem / self host means you have to support several, but at least with web products it's expected they'll phone-home and nag to be updated and that there'll be someone qualified to do that update.

When you add runnable executable tooling, it magnifies the issue of how old that tooling gets.

Even with a support policy of not supporting versions older than <X>, you'll waste a lot of customer support time dealing with issues only for it to emerge it's out-dated software.

pferde 12 hours ago | parent | next [-]

If that took "several rounds of clarification", then the support they're paying for is worthless. Getting version of the application should be among the first bits of information collected, possibly even required for opening the ticket.

xnorswap 10 hours ago | parent [-]

You've never asked someone for a version and got back a version number for a completely different product?

Obviously it depends on your audience, and 3 rounds is exaggerating for the worst case, but in previous places I've worked I've seen customer support requests where the first question that needed to be asked wasn't, "What version are you using?", it's "Are you sure this is our product you're using?".

Actually getting version info out of that audience would have been at least an email explaining the exact steps, then possibly a follow up phone call to talk them through it and reassure them.

If your reference is JIRA tickets or you're selling software to software developers, then you're dealing with a heavily filtered stream. Ask your CS team for a look at the unfiltered incoming mail, it might be eye-opening if you've not done it before. You might be surprised just how much of their time is spent covering the absolute basics, often to people who have had the same support multiple times before.

bradgessler 12 hours ago | parent | prev [-]

A big problem with CLI tooling is it starts off seeming like it’s an easy problem to solve from a devs perspective. “I’ll just write a quick Go or Node app that consumes my web app’s API”

Fast forward 12-18 months, after several new features ship and several breaking API changes are made and teams that ship CLIs start to realize it’s actually a big undertaking to keep installed CLI software up-to-date with the API. It turns out there’s a lot of auto-updating infrastructure that has to be managed and even if the team gets that right, it can still be tricky managing which versions get deprecated vs not.

I built Terminalwire (https://terminalwire.com) to solve this problem. It replaces JSON APIs with a smaller API that streams stdio (kind of like ssh), and other commands that control browsers, security, and file access to the client.

It’s so weird to me how each company wants to ship their own CLI and auto-update infrastructure around it. It’s analogous to companies wanting to ship their own browser to consume their own website and deal with all the auto update infrastructure around that. It’s madness.

linsomniac 10 hours ago | parent | prev | next [-]

I've had good luck with having Claude write little CLI tools that interact with Jira: "cases" prints out a list of my in-progress cases (including immediately printing a cached list of cases, then querying Jira and showing any stragglers), "other_changes" shows me tickets in this release that are marked with "Other changes" label, "new_release" creates a new release in Jira, our deployment database, and a script to run the release, etc...

I could imagine a subagent that builds a tool on demand when it's needed.

Claude is really good at building small tools like these.

PanMan 2 hours ago | parent | prev | next [-]

Jira actually has both an MCP server and a CLI tool (called "acli"). I switched our claude code to the CLI (with a skill) from the MCP as it seems.. more efficient/quicker.

ath92 14 hours ago | parent | prev | next [-]

Nobody shipped this because previously almost nobody could use CLI tools. Now you can just ask an llm to generate the commands which makes things much more accessible

gjvc 12 hours ago | parent [-]

"almost nobody"

joshribakoff 10 hours ago | parent | prev | next [-]

The good news is that an llm will be really helpful in scraping your content locating alternative service providers or even creating your own solution so you can migrate away

throwaway19268 10 hours ago | parent | prev [-]

CLI tools for online services like Jira etc. basically amount to an open and documented API which the attitude towards these probably unlikely to be changing anytime soon as you mention.

tacone 6 hours ago | parent | prev | next [-]

And cli tools can be composed with scripts, which makes the whole experience faster and reproducible.

3acctforcom 6 hours ago | parent | prev | next [-]

JIRA is a great example. I used to have automation when it was hosted on prem and I had database access.

Now it's locked into the cloud with piss poor APIs so they can sell you more add-ons. I'm actively looking at alternatives.

chillfox 10 hours ago | parent | prev | next [-]

That's pretty much how I have been using coding agents. I get them to build small cli tools with a --help option and place them in a `./tools` directory. Then I can tell an agent to use the tools to accomplish whatever task I need done.

Usually when I mention a `tool --help` for the first time in a prompt I will put it in backticks with the --help argument.

It works really well.

misiti3780 10 hours ago | parent [-]

im going to try this. it sounds promising. can you provide an example for more context?

chillfox an hour ago | parent [-]

Sure,

The agents have a tendency to make the "Examples" section of the help message way too long by stuffing it with redundant examples, so it needs to be manually pruned from time during development if you use an agent for tool development.

`gh-install` is a fish script (using curl and jq), it was made by an agent.

  gh-install -h
  Usage: gh-install [-i] [-q] [-s] [-p PATH] [-n NAME] [-f FILE] [-e EXECUTABLE] <repo> [version]
    -i            - Show info about what would be installed (no install)
    -q            - Quiet mode (suppress all output except -i info line)
    -s            - Install to /usr/local/bin (system-wide)
    -p PATH       - Install to the specified directory (incompatible with -s)
    -n NAME       - Install with custom binary name
    -f FILE       - Select specific file from release assets and use as binary name (unless -n is specified)
    -e EXECUTABLE - Select specific executable from extracted archive (when archive contains multiple executables)
    repo          - GitHub repository in format owner/name
    version       - Optional version tag (defaults to latest)

  Examples:
    gh-install cli/cli v2.40.1
    gh-install cli/cli
    gh-install -i cli/cli (show info only)
    gh-install -i -q cli/cli (show info quietly)
    gh-install -s cli/cli (install system-wide)
    gh-install -p /opt/bin cli/cli (install to /opt/bin)
    gh-install -n gh cli/cli (install as 'gh')
    gh-install -f zed-remote-server zed-industries/zed (install server file)
    gh-install -e server some-org/multi-tool (install 'server' executable from archive)

Prompt:

  Use `gh-install -h` to install asdf, hadolint, ripgrep, fd, delta and bat.

If I need it to do something that uses multiple tools I might just tell it to look in `./tools` for the available tools, so the prompt would be something like this.

  Do x using the tools found in `./tools` (they all have a `-h` option).

I also have several tools that are just js scripts using playwright (webpage as the api) to fetch data and return it in a json format. Then I can tell the agent to use that tool and jq to do data processing.
easyascake 11 hours ago | parent | prev | next [-]

I use the GitLab CLI (glab) extensively, because it is so much better than the (official) GitLab MCP. I just run `glab auth login` before launching Claude Code, then tell CC to use `glab` to communicate with the GitLab API.

When using the MCP, I have to do a whole OAuth browser-launch process and even then I am only limited to the 9-10 tools that they've shipped it with so far.

PantaloonFlames 8 hours ago | parent [-]

See also “95% of MCP Servers are useless”. https://youtu.be/7baGJ1bC9zE?si=ShyLg2mHWwbBW1DS

tl;dr AI-powered assistants can already use command line tools.

delaminator 14 hours ago | parent | prev | next [-]

That's only useful if the agent is running in your terminal. The example given about updating a cell in Excel, I mean, I suppose that is a sort of tool you could used for something. SharePoint has an API for updating excels on SharePoint. But to update a single cell is actually quite time consuming for the API round trip - multiple seconds. I recently had to rewrite something because it was doing individual API calls to update cells.

makestuff 11 hours ago | parent | prev | next [-]

Yeah, I have a feeling we will instead start exposing some /help api that the AI will first call to see all possible operations and how to use them in some sort of minified documentation format.

zby 11 hours ago | parent | prev | next [-]

I think this is about tools that are executed on the server instead of on the client. This is all very confusing - so I might be mistaken.

stpedgwdgfhgdd 13 hours ago | parent | prev | next [-]

All for CLI tools, but they have their limits. Another party can update their mcp server and you get the new tools without a sweat.

E.g. with a Jira cli tool I have to write the skill and keep it up to date. With a MCP server I can delegate most of the work.

mlrtime 13 hours ago | parent | prev | next [-]

This is exactly what I do when given an PAT + api documentation, write my own tool. Sure it'd be better if atlassian did it, but I'm not holding my breath.

PantaloonFlames 8 hours ago | parent [-]

Or, why not let the LLM write the tool and give it to the agent? Taking it one step further the tool could be completely ephemeral - it could have a lifetime of exactly one chat conversation.

bradgessler 12 hours ago | parent | prev [-]

[flagged]

MrDarcy 11 hours ago | parent [-]

Stop spamming.

sieabahlpark 10 hours ago | parent [-]

[dead]