Skip to content
Agentmart
Submit a tool

archy

Architectural sensor for Python codebases.

Connector by hslee16 · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 7
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/hslee16-archy

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Architectural sensor for Python codebases.

Use cases: code-review, refactoring

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
6 read · 1 write · 0 delete · 6 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 13

Read from the source code; the running server may list different tools.

Read 6 · Look things up without changing anything.

  • archy_cycles
  • archy_diff
  • archy_graph
  • archy_score
  • archy_simulate
  • archy_snapshot

Write 1 · Create, change, send or run things.

  • archy_conventions

Not yet classified 6 · We could not tell from the name and description.

  • archy_check
  • archy_dsm
  • archy_duplicates
  • archy_impact
  • archy_module_view
  • archy_what_to_refactor_next

Network hosts it talks to 8

  • anujyadav.substack.com · found in code
  • api.github.com · found in code
  • arxiv.org · found in code
  • astral.sh · found in code
  • datasets-server.huggingface.co · found in code
  • github.com · found in code
  • glama.ai · found in code
  • pypistats.org · found in code

Files it touches

  • %USERPROFILE%\\.claude.json
  • ~/.claude.json
  • ~/.claude/CLAUDE.md
  • ~/.claude/settings.json
  • /private/tmp
  • /private/tmp/churn_fix/a.py
  • /private/tmp/churn_fix/b.py
  • /tmp/af_smoke
  • /tmp/archy_bench
  • /tmp/archy_footprint
  • /tmp/archy_pattern_bench
  • /tmp/churn_fix
  • /Users/hosanglee/archy/docs/research/CALL_WEIGHTED_Q_EMPIRICS.md
  • /Users/hosanglee/archy/src/archy/impact.py
  • /Users/hosanglee/archy/src/archy/layers.py
  • /Users/hosanglee/governingdocs/backend
  • %APPDATA%
  • %APPDATA%\\opencode\\opencode.json
  • %LOCALAPPDATA%
  • %USERPROFILE%
  • Your home directory (~)
  • ~/.codex/AGENTS.md
  • ~/.codex/config.toml
  • ~/.config/opencode/opencode.json
  • ~/.continue/mcpServers/archy.yaml
  • ~/.continue/rules/archy.md
  • ~/.cursor/mcp.json
  • ~/.cursor/rules/archy.mdc
  • Any path the agent passes to its tools

Tools (13)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • archy_checkCheck layer boundaries

    **Call after any Python edit that adds, removes, or changes an import statement.** Returns forbidden direct edges between layers declared in archy.yaml under `violations`, plus Stable Dependencies Principle violations (when `sdp.enabled: true` in archy.yaml) under `sdp_violations`. Empty lists on both mean no direct boundary crossings. `required_violations` reports the INVERSE constraint: `required:` rules in archy.yaml declare that every module matching `source` must TRANSITIVELY reach `must_reach` (e.g. every standalone entrypoint must reach a model registry that has to be imported before th…

  • archy_conventionsReport the project's house style

    **Call before adding a new class, field, or command to an unfamiliar project.** Derives the repository's own conventions from its source instead of leaving you to infer them by reading. Returns five censuses: `naming` (class-name suffix families GROUPED BY HOME MODULE, so the module you are about to edit shows its own patterns - the answer to 'what do I call a new one and where does it go'), `surfaces` (mirrored helper sets like `_x_to_text`/`_x_to_json` and names defined in several modules - the answer to 'how many places must I wire a new field'), `gates` (sites where a FAILED FINDING exits …

  • archy_cyclesFind import cycles

    Find import cycles (Tarjan SCCs of size >= min_size, plus self-loops) in a Python project. Returns cycles sorted largest-first.

  • archy_diffDiff against baseline

    Compare the current project state to the last snapshot. Returns a risk-weighted `summary` (headline + top regressions / improvements), per-component score deltas, and the cycles and layer violations that have been added or resolved since the baseline. Use after edits to localize regressions; see the `loop` prompt.

  • archy_dsmDesign Structure Matrix

    Description is built at runtime.

  • archy_duplicatesDuplicate-function clusters

    Description is built at runtime.

  • archy_graphInspect dependency graph

    Inspect the dependency graph. With no `focus`, `response_format='summary'` (the DEFAULT, replaces the removed archy_graph_summary) returns a compact top-N overview (modules by fan-in, fan-out, PageRank, and edit-risk, plus top external deps; `top_n` controls N) so a routine call doesn't dump the whole graph into context; `response_format='full'` returns the complete node/edge dump matching `archy graph --format json`, but refuses graphs larger than `max_nodes` (default 500, must be >= 1) with a GraphTooLargePayload (bump it explicitly, or narrow with `focus`). Pass `focus=[<qualname or path>]`…

  • archy_impactCompute change blast radius

    Given a list of changed file paths, return what they affect. `mode='blast'` (the DEFAULT) returns the internal modules that transitively import any of them (the blast radius): use before refactoring or removing a module to see what would break. An empty `impacted` means no STATIC importer was found, not that removal is safe: archy cannot see importlib.import_module / __import__, entry points and plugin registries, Django INSTALLED_APPS, pytest plugins, config-driven dispatch, module __getattr__ hooks or string-keyed factories, so `rg` for those before deleting (`empty_caveat` is set whenever t…

  • archy_module_viewEverything known about ONE module, complete and unranked

    **Call when the question is a NEGATIVE.** `archy_conventions` ranks and truncates, so a module's absence from it means nothing; every list here is COMPLETE for the one `module` named, so absence IS the answer, about STATIC edges only: an empty `imported_by` does not rule out importlib.import_module / __import__, entry points, plugin registries, INSTALLED_APPS, pytest plugins or config-driven dispatch, so `rg` for those before calling a module dead. Use it for `does risk import hotspots`, `does anything still reach layers`, `is this module dead`. Returns `imports_internal` (the project modules …

  • archy_scoreScore project structure

    Compute the composite quality score (modularity, acyclicity, depth, equality, complexity - geometric mean of five axes) for a Python project. `view='current'` (the DEFAULT) returns the five-axis score payload; optionally append the result to .archy/history.jsonl (record=True) and/or compare against the most recent recorded run as a regression gate (strict=True). Pass record=True to record a baseline at session start (replaces the removed archy_record_baseline). `view='history'` instead reads the recent score history (.archy/history.jsonl), returning up to `last_n` rows oldest-first so you can …

  • archy_simulateSimulate import-edge change

    Counterfactual pre-edit check: given a proposed import-edge delta (`add` / `remove` lists of {from, to} module-or-path pairs), return the structural consequence BEFORE any file is written -- new/resolved cycles, new back-edges, new layer/SDP violations, per-axis score delta, and the propagation_cost change -- with a risk-ranked `summary` phrased conditionally ('would form a cycle'). Use it to test a refactoring hypothesis and reshape the plan before editing. Endpoints matching no internal module are returned in `applied.unresolved`. Caveat: it models the graph delta you describe, not arbitrary…

  • archy_snapshotSnapshot baseline

    Capture score, cycles, and layer violations to .archy/baseline.json as a baseline that archy_diff will compare against. Call at the start of an editing session. Also returns `invariant_brief`: the constraints to know before your first edit (declared layers, forbidden inter-layer edges, whether the graph is acyclic, the baseline score per axis, and the top load-bearing / highest-risk modules). Read it up front to avoid proposing a cross-layer or cycle-introducing edit, rather than being told after the diff. See the `loop` prompt for full usage.

  • archy_what_to_refactor_nextRank refactor priorities

    Description is built at runtime.

Signals

Stars
7
Forks
12
Open issues
31
Weekly downloads
926
Last commit
Oct 23, 2026 (4 days ago)
Last release
Oct 23, 2026 (4 days ago)
Last package publish
Oct 23, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.hslee16/archy
Version
0.48.2
Auth
No auth
Packages
pypi archy
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

archy MCP server. Agent Mart. https://agentmart.dev/connectors/hslee16-archy (last updated 2026-10-24)