Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
archy_scoreA

Compute the composite quality score (modularity, acyclicity, depth, equality - geometric mean) for a Python project. Optionally append the result to .archy/history.jsonl and/or compare against the most recent recorded run as a regression gate.

archy_cyclesB

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

archy_checkA

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; pair with archy_contracts for transitive (multi-hop) checks.

archy_contractsA

Call after any Python edit that adds, removes, or changes an import statement, especially across package boundaries. A failed contract means the new import violates the architecture - revert or restructure before continuing. Runs import-linter contracts (transitive Layers, Forbidden, Independence, Protected, AcyclicSiblings); stricter than archy_check, which only catches direct edges between layers in archy.yaml. Reads .importlinter (or pyproject.toml). Requires pip install archy[contracts].

archy_trendA

Read the recent score history (.archy/history.jsonl) for a Python project. Returns up to last_n rows ordered oldest-first so an agent can compare deltas.

archy_impactA

Given a list of changed file paths, return the internal modules that transitively import any of them (the blast radius). Use before refactoring or removing a module to see what would break. Files that don't resolve to any module in the graph are returned in unresolved. propagation_cost is the MacCormack-style blast-radius scalar: fraction of the project's internal module count that this edit set can reach (changed plus impacted, over total internal modules). Higher values mean the edit is more structurally consequential.

archy_snapshotA

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. See the loop prompt for full usage.

archy_diffA

Compare the current project state to the last snapshot. Returns per-component score deltas plus 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_record_baselineA

Compute the score for a Python project AND append it to .archy/history.jsonl. Convenience wrapper for archy_score(record=True). Use at the start of an agent session so a later archy_score(strict=True) can detect degradation.

archy_graph_focusA

Return a subgraph centered on one or more modules. Pass qualnames (e.g. 'archy.parser') or file paths. depth caps hop distance; direction is 'in' (who depends on me), 'out' (my dependencies), or 'both'. Each node carries instability (Martin's I); each edge carries the source line numbers of the import statements. Prefer this over archy_impact when you want forward dependencies, edge-level detail, or a bounded blast radius.

archy_graph_summaryA

Whole-project structural overview sized for LLM context. Returns top-N modules by fan-in, fan-out, and PageRank (importance weighted by importance of dependents), plus the top external dependencies. Cheaper than dumping the full graph; use for 'where is the gravity in this codebase' questions. Call archy_cycles separately for cycle detail.

archy_graphA

Full dependency-graph dump matching archy graph --format json. Refuses to serialize graphs larger than max_nodes (default 500) to avoid blowing the agent's context; bump the limit explicitly if you really want everything. For most reasoning, prefer archy_graph_focus (local neighborhood) or archy_graph_summary (top-N overview).

archy_high_risk_modulesA

Return the top-N internal modules ranked by edit-risk: the geometric mean of MacCormack propagation cost, normalized fan-in, and Martin's instability. High score means editing is both expensive (wide blast radius, many direct importers) and likely to need iteration (the module itself depends on many things). Call before a non-trivial edit to decide whether to scope down, snapshot more aggressively, or pause for human review. Each entry breaks the composite back out into its components so you can see why a module ranks high.

Prompts

Interactive templates invoked by user choice

NameDescription
loopHow to use archy as an architectural feedback loop while editing code. Read this at session start so subsequent tool calls follow the right snapshot -> edit -> diff cadence.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hslee16/archy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server