The IDE for agents: read by symbol, edit against a revision, validate with your own build, revert.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
ARNO gives coding agents what an IDE gives you, served over MCP. Read by symbol, edit against a known revision, get the compiler's diagnostics back with the edit, validate with the repository's own commands, see what changed, and revert to a checkpoint β each step one tool call, none of it through the shell.
Symbol-aware reading is how ARNO finds its way around; the transaction is what it is for. Where the shell is still the better tool, use it β the question ARNO has to answer is whether an agent gets more done, at acceptable cost, with it than without (docs/benchmark.md).
Half the tokens, more issues fixed. Claude Code on 12 real closed issues from cobra (Go), ky (TypeScript), requests (Python) and ripgrep (Rust), judged by each upstream fix's own hidden tests:
| Claude Code with⦠| Issues fixed | Tokens per task | Time per task |
|---|---|---|---|
| its built-in tools | 10 of 12 | 1.38M | 215s |
| ARNO in their place | 12 of 12 | 0.68M (β51%) | 163s (β24%) |
Not just a shorter tool list: against a shell trimmed to Bash, Read, Edit and Write, ARNO still used 18β25% fewer tokens and fewer turns, in two separate runs. Sonnet 5, one run per task, four languages β results and caveats Β· how to set it up.
Status: 0.0.11 shipped as Jade; 0.0.12 is the first release called ARNO β early, usable, and looking for feedback. Testing it? Start with the tester guide.
For macOS and Linux β Windows isn't supported (here's why, and where to upvote). Run it again to update. Other ways to install.
Thanks for testing. Half an hour gets you set up; the useful part is a week or two of your normal work with it switched on, and then telling us how it went β including if you turned it off.
macOS and Linux:
Windows isn't supported, sorry! If you'd like it to be, please π issue #2 or tell us there why it matters to you. (WSL 2 runs Linux, so the Linux build may work there, but we don't test it or take bug reports for it.)
The script picks the build for your OS and CPU, checks it against the
release's checksums and installs it to /usr/local/bin, or ~/.local/bin
when that is not writable β no sudo, no Go toolchain. If that directory is
not on PATH, it offers to add it to your shell profile, and it prints the
absolute path to use as command in your MCP client config. On a first install it then opens
arno-mcp install, a menu that installs the language servers you pick, or
shows how to install them by hand; Enter skips it, and you can run it again
any time. Run the same command again to
update β ARNO tells you when a new release is out (see
Update check). (Prefer Go? go install github.com/julianbei/arno/cmd/arno-mcp@latest works too.) ARNO reads
structure in every language with nothing else installed; exact references,
cross-file rename and type errors on edit need the language's server β
arno-mcp install installs these for you, or by hand:
| Language | Install | Notes |
|---|---|---|
| Go | go install golang.org/x/tools/gopls@latest | First answer about 1.6s. |
| Java | brew install jdtls (needs JDK 21+), or your distro's package | First answer about 8.5s while it indexes. check runs mvn or gradle; with only the Gradle wrapper, have the agent declare ./gradlew build once (step 4). |
| Scala | cs install metals (coursier) | Set ARNO_METALS_IMPORT=1 so metals may import the sbt build (it creates .bloop/ and .metals/). First answer about 22s. |
| Kotlin | β | No grammar or server yet: text search only. Tell us if you need it. |
A missing server is never an error: ARNO says which answers are approximate.
For Claude Code, put this in .mcp.json at the root of the repository you
work in (other hosts: Codex CLI, goose, OpenCode):
That keeps Claude Code's own tools too. For the clearest signal, run some
sessions with ARNO in place of them: claude --tools "" with the same
config (why and trade-offs). Restart
or reconnect the client (/mcp) after installing or upgrading ARNO.
Ask the agent: "call arno.capabilities". You should see your languages, each
with server β¦ (not started) or no server (β¦ not installed), plus the build
and test commands ARNO found (mvn, gradle, sbt, go test). If a server
you installed shows as not installed, that is a bug report.
Work as you normally would. If you want a checklist for the first sessions:
find,
references.rename
(exact with gopls, jdtls or metals running).apply with check.run_tests with a file or test name, or apply
with check: "impact".declare_command something you run
often (./gradlew :core:test, sbt "testOnly *ParserSpec"); later sessions
reuse it from .arno/commands.json.checkpoint before something risky, revert if it goes wrong.| When | File this |
|---|---|
| After a week or two β or when you turn ARNO off | Feedback |
| The agent used the shell although an ARNO tool existed | Friction |
| A tool gave a wrong answer or failed | Bug |
| Something you wish ARNO did | Feature wish |
The templates ask for the output of arno.capabilities and, optionally,
arno.telemetry. Neither contains source code; telemetry is
local only and records no arguments or response text, so both are
safe to paste from a private repository.
Known rough edges on the JVM: no formatter runs for Java or Scala files; large Gradle builds can make jdtls's first answer much slower than 8.5s; Kotlin has no support yet.
An agent that falls back to grep, sed and cat is operating outside any
tooling you control. No revision tracking, no guardrails, no telemetry, no way
to know what it did or why it chose to do it that way. Every shell fallback is
a hole in your visibility.
You cannot fix that by telling the model not to use the shell. The model uses the shell because the shell is cheaper β fewer tokens, fewer round trips, more flexible. So the only durable fix is to make the structural tool the cheaper option, and then measure whether you succeeded.
That is the entire bet, and it is testable. On this repository's own benchmark, ARNO answers seven realistic engineering questions in 0.85x the tokens of the equivalent shell commands. It was 5.63x before responses became plain text instead of JSON β see docs/response-style.md for what changed and why.
The counter-measurement matters as much. One question asked against an unrelated repository came out at 1.36x β worse than the shell β because an ambiguous symbol name forced an extra disambiguation call. Seven scenarios at home and one away disagree, both are honest, and the second is the one that predicts outside use. The 0.0.4 pilot on four outside repositories answers it at a larger scale: used in place of Claude Code's built-in tools, ARNO solved 12 of 12 real issues with 51% fewer tokens, and 18β25% fewer than a shell trimmed to four tools (docs/benchmark-results.md). ARNO is not finished.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/arno)<a href="https://allmcps.com/mcp/arno"><img src="https://allmcps.com/api/badge/arno?style=directory" alt="Arno on AllMCPs" /></a>