codetopo
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| codetopo_indexC | Index a repository into a codetopo graph database. |
| codetopo_descendantsB | Nodes transitively reachable from a node over calls and imports edges. |
| codetopo_ancestorsA | Nodes from which a node is transitively reachable over calls and imports edges. |
| codetopo_blast_radiusB | Nodes that break if a node changes: dependents, overriders, and implementers. |
| codetopo_pathB | Shortest typed path between two nodes, or the reason there is none. |
| codetopo_statsA | Node and edge totals for an index, with per-kind breakdowns. |
| codetopo_verifyB | Verify the tamper-evident audit chain of an index. |
| codetopo_snapshotB | Export the whole graph as a portable snapshot, bound to the audit head. |
| codetopo_diagnosticsB | The diagnostics recorded when the index was built - dependency cycles, multi-definitions, unresolved calls, and the rest - as data, exactly as the CLI prints them. |
| codetopo_rankA | The top symbols by fan-in, fan-out, blast-radius size, cyclomatic complexity, or a centrality measure (pagerank, betweenness, closeness, eigenvector, katz) - measurements over the graph, with the measurement's method stated in the result. A measure that does not converge on the graph is reported as an absence with its reason, never a partial result. A ranking of measurements, never a score of code quality. |
| codetopo_diffA | Compare two indexes (or two snapshot files): added, removed, and changed nodes and edges, plus the blast-radius movement of every touched symbol. Give exactly one before source and one after source. |
| codetopo_metricsA | Coupling and cohesion measurements for every type and package (CODE_SCHEMA section 9): CBO, RFC, LCOM pair counts, TCC, ATFD, WMC per type; Ca, Ce, instability, and separately-named external coupling per package. Every metric's method is stated in the result. Measurements only - no thresholds, no verdicts. |
| codetopo_communitiesA | The Leiden partition of the dependency graph (Traag et al. 2019; modularity quality, resolution 1.0, fixed published seed) over the undirected CODE_SCHEMA section 9 projection weighted by edge multiplicity: community count, the partition's modularity Q (absent when the graph has no edges), per-community sizes and internal/cut edge counts, and node assignments (limit caps the assignment list; summaries are always full and truncation is stated). Measurements with a stated method - no thresholds, no verdicts. |
| codetopo_topo_sortA | The safe change order of the graph: topological order of the SCC-condensed CODE_SCHEMA section 9 dependency DAG (Kahn's algorithm over Tarjan components). Groups are emitted in dependency order - every dependency of a group appears in an earlier group - members sorted by id. A multi-node group is a dependency cycle and is flagged cyclic, never disguised as an order. |
| codetopo_renderB | The graph's layout specification: 'layered' (layout spec v1, the default) or 'force' (Fruchterman-Reingold, layout spec v2 - deterministic, fixed parameters recorded in the spec). Above the force ceilings the answer is a stated decline naming the ceiling, not a partial drawing. The same spec objects serve the CLI's render command and the HTTP render route. |
| codetopo_historyA | Hotspots (change frequency x complexity, both factors stated) and change coupling (support/confidence as pair counts) over a local working tree's git history. History is local-only: without repo_path the answer is the unmeasured report (measured: false with the reason), never invented numbers. |
| codetopo_neighborhoodB | The subgraph within a few hops of a node, in both directions (contains/defines excluded). |
| codetopo_get_symbolA | One node in full - kind, location, tier, defines and refs - plus its incident edges grouped by kind and direction, with counts (containment excluded). Errors when the id is unknown. |
| codetopo_search_symbolsA | Find symbols by name (case-insensitive substring of the label) - the discovery step before the exact-id queries. |
| codetopo_describe_schemaA | The schema this server speaks: node and edge kinds, tier rules, and the query vocabulary. Needs no database. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools have distinct purposes: search vs get_symbol (discovery vs exact), metrics vs rank vs communities vs topo_sort each measure different things. There is mild overlap among the traversal tools—ancestors, descendants, neighborhood, blast_radius, and path all walk the graph from a node—but the descriptions differentiate directionality and semantics (blast_radius specifically covers dependents/overriders/implementers).
All names are snake_case with a consistent codetopo_ prefix, giving a predictable, readable pattern. The only deviation is mixed verb-style vs noun-style names (get_symbol/search_symbols vs stats/metrics/communities), but this is coherent enough to navigate.
20 tools is on the heavy side for the 3-15 sweet spot, but this is a rich code-graph analysis domain with indexing, traversal, metrics, ranking, partitioning, topology, rendering, diffing, and auditing—each tool earns a distinct place. Borderline but defensible rather than redundant.
The surface covers the full lifecycle: indexing, schema description, discovery, exact retrieval, multiple traversal modes, structural metrics, ranking, communities, topo-sort, rendering, diff, snapshot, verification, diagnostics, and stats. Read/analysis needs are comprehensively met with no obvious dead ends.