Architectural sensor for Python codebases.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag — we're steadily working through the catalog.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.

Your folders show your architecture. Your imports decide it. archy turns a Python import graph into something an agent can use: blast radius before an edit, the tests that edit affects, the modules most at risk. And it fails when the graph disagrees with the layers you declared. Same graph either way, as a CLI and an MCP server, every session and in CI.
[!IMPORTANT] Status, 2026-09-02: active again, on one question.
archy is back in development after five weeks in maintenance. The focus is narrow and it is not the original one: coding agents running a small model on local hardware. A DGX Spark carries 128 GB of unified memory, which puts roughly 70B to 200B models within local reach at 4-bit, but their usable context stays far below a frontier API model's and degrades faster across it. Under that constraint a structural answer to "what does this change reach, and what breaks if it is wrong" may substitute for context the model cannot hold at all.
This is a bet, not a finding, and the difference matters here. Everything in the section below still stands: I measured this tool's premise four times and the problem it prevents is rare, the one real effect was capped at 12% by how seldom the mistake happens, and two token-reduction propositions came back null. Every one of those studies ran against an agent with a large context window and strong long-range code reasoning - the population where a structural index has the least to add, because the model can often just read the code. A small local model is a different population. That is the one reading of the prior nulls that does not require reinterpreting them, and it might still be wrong.
So the discipline does not relax because the project is active again. The thresholds are pre-registered in #408, no treatment arm has been scored, and any result, including another null, gets published in
docs/WHAT_DIDNT_WORK.mdlike the other four. Nothing archy ships today claims a local-model benefit;archy brief(v0.46) shipped explicitly on judgment ahead of that measurement rather than on one.What is not changing. The original use case is still supported and still works: layer governance in CI, blast radius and affected-tests for a frontier agent, the MCP server. This is an adjacent focus, not a replacement, and nothing is being removed or renamed to make room for it. Bugs still get fixed, pull requests still get reviewed, and the
good first issuetickets are still deliberately left open.
I built archy after watching coding agents produce changes that passed review and rotted the import graph underneath. Then I measured whether that happens, and it barely does.
| measurement | subject | rate |
|---|---|---|
| 25 live agent runs on the riskiest SWE-bench tasks | cycles or declared-layer violations | 0% (95% upper bound 12%) |
| 1,072 human commits, 11 repos | cycles introduced | 0.5% per commit |
| 151 commit pairs in projects that declare an architecture | contract violations | 0.66% per commit |
| 107 samples of those same projects over time | rules going stale, coverage eroding | null on all four pre-registered signals |
| 25 agents each building a backend to a specified architecture | wrong dependency direction | 12%, and a checker in the loop took it to 0% |
So: the problem is real (I have watched a developer's own architecture rule get broken in the wild), and it is rare, for agents and humans alike. "Agents will rot your import graph" is a claim I made and have retracted. Nobody has measured what one occurrence costs, so I cannot argue "rare but expensive" either.
The last row is the one that says what archy is for. All 25 unaided agents produced the four layer directories correctly. Every failure was an import going the wrong way: entities reaching down into data access. They got the layout right and the direction wrong, and a directional rule caught all three cases at no cost to the API's behaviour.
That is the shape of the whole thing. Layout is visible in a file tree. Direction, transitive reach and cycles are visible nowhere, at any zoom level, in any single file. And a separate study found that once one of these lands it is never repaired: zero violations were resolved across the sampled corpus, and 2 of 14 repositories sat on broken contracts indefinitely. Rare and permanent, not rare and self-healing.
What that means for the roadmap: it is closed. Feature work premised on "agents will wreck your architecture" went off the table when that premise was retracted. What survives is narrower and now has a number behind it: directional rules, transitive contracts and cycle detection, checked every session. That is a real job and archy does it, but four studies produced no evidence that more of it is worth building, and the honest reading of four headroom-limited results is that the next feature is not the missing piece.
So archy is finished rather than abandoned. It is maintained, bugs get fixed, and contributions are welcome. There is no roadmap left to publish.
The full write-up, including the six measurement artifacts that nearly turned a failed study into a success story, is in docs/WHAT_DIDNT_WORK.md. If you only read one thing here, read that.

Nothing in that picture is derived. Which layer a module belongs to, and which direction is forbidden, are facts you write down in archy.yaml; archy only checks that the source still agrees with them.
Here is the failure it was built for, compressed into one line. This is archy's own source, under archy's own layer rules, with a single import of the kind an agent adds when it needs a helper and the nearest one is upward:
One import, one edge. A forbidden layer edge, an eight-module cycle, and the score down 0.009. Nothing in the diff itself says any of that, and no amount of reading the file reveals it, because the rule that makes it a violation is not in the source. You supplied it.
Note the size of the score move. 0.009 is small, and that is the honest shape of this problem: no single edit looks alarming on the number. The cycle count going 0 to 1 and check exiting 1 are the signals that matter here, and the score is what catches the version of this that happens forty times over six weeks. Read docs/SCORING.md before treating the composite as a quality gate.
That example is a direct forbidden import, which is the easy case: an agent that reads archy.yaml first can catch it without archy. The harder and more honest case is a transitive violation, where the edit adds no forbidden import at all and reading the config tells you nothing. docs/WALKTHROUGH.md is a one-command reproduction of that, and it states plainly which archy surfaces catch it (one) and which miss it (three).
Reproduce the example above on a checkout: add that import to src/archy/graph.py, then run the three commands with the uvx prefix. It has to be a separate archy, because that one import is a genuine runtime import cycle, and an editable-installed archy can no longer start to report on itself. archy check exits 1, which is what it does in CI and what the MCP server reports to an agent before it commits.

What archy is not: a code-navigation tool. It will not help an agent find and read code faster; that job belongs to symbol-level, multi-language graph tools like codegraph, and they are better at it. archy answers the other question: you declared this codebase should have these layers, no cycles, and this score; is the agent's edit about to break that, and has the trend been sliding for six weeks? Nothing in a navigation graph carries that intent, because intent is not in the source, you supply it.
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/archy)<a href="https://allmcps.com/mcp/archy"><img src="https://allmcps.com/api/badge/archy?style=directory" alt="Archy on AllMCPs" /></a>