CodeAtlas
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODEATLAS_GUARD | No | Controls the Claude Code PreToolUse guard. Set to 'off' to disable the guard; set to 'strict' to also redirect whole-file Read calls in addition to denying Grep/Glob and grep/rg/find. | |
| CODEATLAS_ALLOW_ANY_ROOT | No | Set to '1' to allow CodeAtlas to index non-project directories (e.g., home directory, system folders), overriding the default safety restriction. |
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| index_statusA | Index health: file/symbol counts, watcher state, dashboard URL, last update time. |
| index_repoA | Force a re-scan of the repository. The index already auto-updates on file changes; use full=True after changing .gitignore or if results look stale. |
| repo_overviewA | Start here: languages, top directories, hub files, entry points, key symbols, finding counts (~400 tokens). |
| repo_mapA | Complete map of the repository: every file with its symbols (classes with their methods, functions with signatures), files ordered by PageRank. Nothing is cut unless token_budget is given, in which case only the top-ranked files/symbols that fit are shown. focus_paths/focus_names bias the ranking toward what you are working on. Use it instead of listing or reading files. |
| task_contextA | One call to start a task: the symbols relevant to the task text (BM25 over names/signatures/docs, boosted by PageRank and graph proximity), with source for the strongest ones, plus tests and config/docs that mention the terms. scope limits to a path prefix (e.g. "backend/src/services"). Always fits an adaptive budget by default (set token_budget to override); each item carries a 'why' and an expand handle. Reports truncation and index version. |
| change_contextA | Git diff blast radius: changed/removed symbols, transitive consumers, config/schema dependencies, and candidate tests with evidence. comparison: working (includes staged), staged, or branch (HEAD). merge_base=True compares a feature branch against its common ancestor with base_ref. Reports caps, uncertainty and index versions; automatic budgets adapt to change risk and fanout. Set token_budget to override. Does not run tests or modify Git. |
| relationshipsB | Evidence-backed code/config/schema dependencies. source consumes target; direction=in finds consumers of path, out finds dependencies. Includes unresolved local targets and pagination. |
| programming_patternsB | Explain 12 programming patterns at actual source locations, with syntax evidence and confidence. Filter by file/path and pattern ID; catalogue=True lists the supported concepts without source scans. |
| list_filesB | List indexed source files under a path prefix with language, line and symbol counts. |
| file_outlineA | Tree of classes/functions/methods in a file with line ranges, signatures, reference counts, imports and importers. Read this instead of the file. |
| find_symbolsB | Find definitions by name (exact, prefix, substring, then fuzzy CamelCase words). kind filters by function|method|class|interface|type|enum|struct|module. path filters by path substring. |
| symbolA | Everything about one symbol: location, signature, doc, complexity, members, callers, callees. name may be plain (foo), qualified (Class.foo) or path:line. Use path= to disambiguate. |
| symbol_sourceC | Source text of one symbol (or path:start-end range) with line numbers. Cheaper than reading the file. |
| referencesA | Every place a name is used, grouped by file with line numbers and enclosing symbol. When path (or a qualified name) pins one definition, only references resolving to it are listed. Reports the true total, how many are shown, and a next offset for continuation. kind: call | new | arg | ref | import. |
| impactA | Blast radius: transitive callers of a symbol up to depth hops, affected files and tests. Run before changing a signature or behaviour. |
| triggersB | What causes a symbol to run: route/event decorators, callback registrations (addEventListener, app.get, subscribe...), direct callers, owning class. Answers 'what triggers what'. |
| dependenciesC | File-level imports (resolved to repo files), external packages, importers and transitive dependents. |
| module_graphC | Directory-level import graph (which modules depend on which), aggregated at the given path depth. |
| hotspotsC | Most complex and longest functions, largest files, key symbols by PageRank, import cycles. |
| unreferencedB | Dead-code candidates: functions/classes with no references anywhere. Verify with triggers/grep before deleting. |
| findingsB | Static findings from the index: TAG_TODO/TAG_FIXME/TAG_BUG comment tags, EMPTY_CATCH, SWALLOWED_EXCEPTION, BARE_EXCEPT. Filter by code prefix or path. |
| grepA | Regex search over indexed source files (smart case). glob like '.ts' or 'backend/'. Use for strings, config keys and dynamic names the symbol index cannot see. |
| replace_symbolA | Replace exactly one declaration (its syntax-tree span incl. decorators/export) with new_text, re-indented. Neighbours on the same line are untouched. The new file is parsed first and refused if it adds syntax errors (force=True overrides). Pass expected_hash (old_hash from a previous call) to guard against concurrent changes. Returns old text + hashes; re-indexes immediately. dry_run previews. |
| insert_codeB | Insert new_text on its own lines before or after an existing symbol (where='before'|'after'), matching its indentation. Parse-validated before writing. |
| rename_symbolA | Rename a symbol at its definition and every reference that resolves to it (identifier nodes only: strings, comments and same-named symbols elsewhere are untouched; ambiguous references are listed and skipped). Defaults to dry_run=True: review the plan, then call again with dry_run=False. |
| next_snipeA | The highest-value isolated issue to fix next (your own in-progress snipe first). Returns the problem, evidence, suspect symbol with confidence, related symbols, context cost, risk and the verification tests. Pass agent="" so several agents never pick the same item. |
| claim_snipeB | Take ownership of an issue (state FIXING) and snapshot its files so verify_snipe can measure the patch surface. Returns level-1 context (symbol names + ranked candidates). |
| get_snipe_contextA | Lazy context for an issue. Climb only as high as needed: 0 summary, 1 symbol names + candidates with evidence/counter-evidence, 2 signatures, 3 implementation bodies of suspect + related, 4 callers and dependencies, 5 the full suspect file, 6 subsystem context (task_context). |
| verify_snipeB | Evaluate outward from what you changed: level 1 parse check + dead-reference check + targeted tests; level 2 tests of callers (only if level 1 passed); level 3 full suite only when deep=True or risk is high. PASS -> DONE, FAIL -> back to FIXING with the failure as evidence, blast radius over the limit -> SNIPE ABORTED (promoted to INVESTIGATE). |
| snipe_reportB | Feed external evidence: paste failing test / typecheck / lint / runtime output. Each failing test or distinct location becomes an issue, narrowed to a suspect symbol. source: test | typecheck | lint | runtime. |
| snipe_scanA | Scan for concrete problems. Without run: cheap static pass (unresolved relative imports become issues; complexity/cycles/swallowed errors become dormant opportunities). run='tests'|'typecheck'|'lint' also runs the configured command and turns failures into issues. Index deltas are scanned automatically on every save. |
| snipe_boardC | Ready-to-snipe list (score, symbols, tokens, risk), investigating, current work per agent, counts. |
| snipe_listC | List records. kind: issue | opportunity. state: comma list of FOUND,TARGETED,FIXING,VERIFYING,DONE,BLOCKED. priority: 'SNIPE NOW' | INVESTIGATE | DEFER | IGNORE. |
| snipe_itemC | Full record of one issue/opportunity: evidence, candidates, factors, notes. |
| snipe_addB | Record a concrete defect (kind=issue) or a dormant improvement (kind=opportunity). Give evidence as 'path:line' or symbol names so NARROW can find the suspect. Do not fix drive-by findings; log them. |
| snipe_updateC | Change state (FOUND|TARGETED|FIXING|VERIFYING|DONE|BLOCKED), priority, suspect or kind; add a note. |
| snipe_abortC | Stop condition: the fix stopped being a snipe (schema migration, public API change, many modules). Marks it BLOCKED / INVESTIGATE with the reason so nobody wanders for 40 minutes. |
| snipe_configC | Configure verification. test_cmd is a template with {file} (e.g. 'npx vitest run {file}', 'python -m pytest {file} -q'); auto-detected from package.json/pyproject when unset. Stop-condition limits too. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| onboard | How to work on this repo with CodeAtlas. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| snipe_md | The SNIPE.md board. |
| map_resource | Ranked repository map (2000 tokens). |
TDQS
Scored across 38 tools
Tools generally have distinct purposes, with clear guidance for high-level entry points (repo_overview, repo_map, task_context, change_context) and separate refactoring/snipe workflows. However, several retrieval tools overlap in scope (symbol vs find_symbols vs symbol_source, relationships vs dependencies vs module_graph), so an agent may still need to study descriptions carefully.
Names are all snake_case, but conventions are mixed: many are bare nouns (symbol, references, impact, findings) while others use verb_noun (find_symbols, replace_symbol, verify_snipe), and one uses get_ (get_snipe_context). The pattern is readable but not consistently predictable.
38 tools is far above the ideal 3–15 range and qualifies as too many for a single MCP server. While the domain is complex, many snipe and context tools could be consolidated or hidden behind higher-level operations.
Coverage is broad: indexing, repo/symbol exploration, dependency analysis, refactoring, grep, static findings, and a full issue-triage/verification workflow. Minor gaps remain (e.g., no explicit symbol deletion/move or multi-symbol refactor), but agents can work around them with replace_symbol/insert_code.