codesteer-atlas
The CodeSteer Atlas server provides a local, fully offline solution for semantic code search, indexing, and navigation over source code repositories. All operations run 100% locally — code is never sent to external services.
atlas_search: Perform hybrid semantic search combining vector similarity and full-text keyword search (BM25 + RRF) on indexed code. Filter by repository, language, or path prefix; optionally include source content in results.atlas_map: Retrieve a hierarchical tree map of classes, methods, and functions across the workspace — token-efficient for understanding architecture without reading full files. Supports filtering by path prefix and max directory depth.atlas_index: Index or re-index source code into the local LanceDB vector database. Supports incremental updates (only new/changed files), full rebuild, dry-run preview, and selective subfolder indexing. An incremental reindex runs automatically in the background on server startup if an index exists.atlas_status: Get diagnostic metadata on the local index — existence, chunk count, indexed repositories, active embedding model (all-MiniLM-L6-v2via fastembed), last indexing timestamp, git HEAD SHA, and staleness relative to the current workspace.
Additional features: AST-based indexing via Tree-sitter for coherent code chunks; multi-language support (Python, JS, TS/TSX, Go, Java, C#, Dart, and more); and .atlasignore support for excluding files/folders.
Allows AI agents in GitHub Copilot (VS Code) to search and index codebases using semantic search, AST parsing, and hybrid retrieval.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@codesteer-atlasfind all usages of the authenticate method"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CodeSteer Atlas
Servidor MCP local para busca semântica em código. Usa Tree-sitter (AST), embeddings locais (fastembed/ONNX) e LanceDB. Tudo roda 100% offline — o código-fonte nunca sai da sua máquina.
Documentação
Recurso | Descrição |
Conceitos MCP, busca híbrida e indexação | |
Pipeline, diagramas, multi-repo e |
Funcionalidades
Indexação por AST (Tree-sitter): chunks por classe/função/método, não por blocos arbitrários de linhas.
Busca híbrida: similaridade vetorial + BM25, fundidas via RRF.
Indexação incremental: só arquivos novos/alterados (hash sha256).
Embeddings locais:
all-MiniLM-L6-v2(384 dims) viafastembed, com lazy loading.Grafo de conhecimento:
.code-index/graph.json+ visualizadorgraph.html(abre viafile://).Rationale em código:
NOTE/WHY, citesDEC/ADR/RFCe wikilinks nos resultados de busca.Multi-linguagem: Python, JS/TS, Go, Java, C#, Dart, Pascal, VB6, Razor, XML, Markdown e mais.
Related MCP server: embecode
Começar (3 passos)
Pré-requisitos: Python 3.11–3.13 e uv (fornece o uvx).
Você não precisa clonar este repositório para usar o Atlas. O índice fica em .code-index/ na raiz do seu projeto (adicione essa pasta ao .gitignore).
1. Conectar o MCP no seu projeto
Importante — não instale o plugin em escopo global (user).
Plugins/MCP globais costumam iniciar o servidor com CWD =
$HOME, sem a raiz do projeto aberto. Nesse caso o Atlas não consegue inferir de forma confiável a pasta.code-indexdo workspace (e pode criar ou achar um índice no lugar errado).Use sempre uma destas opções:
Plugin no projeto atual (escopo project ou local), ou
Configuração manual via
mcp.json/.mcp.jsonna raiz do projeto.
Opção A — Plugin no projeto atual (Claude Code)
/plugin marketplace add LuisCarlosLopes/codesteer-atlas
# ou pasta local: /plugin marketplace add /caminho/para/codesteer-atlas
/plugin install codesteer-atlasQuando o Claude Code pedir o escopo, escolha Project (compartilhado no repo) ou Local (só neste workspace). Não escolha User.
Pela CLI:
claude plugin install codesteer-atlas --scope project
# ou: --scope localOpção B — mcp.json manual (recomendado para Cursor, VS Code, Kiro, OpenCode…)
Copie o manifest para a raiz do seu projeto (não para a config global do editor) e reinicie o cliente:
Cliente | Copiar de | Para |
Cursor |
| |
GitHub Copilot (VS Code) |
| |
Kiro |
| |
OpenCode |
| |
Claude Code |
|
Exemplo mínimo (Claude Code / vários clientes com chave mcpServers):
{
"mcpServers": {
"codesteer-atlas": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LuisCarlosLopes/codesteer-atlas.git",
"atlas-serve"
]
}
}
}Detalhes por cliente e modo instalado (uv tool install): examples/clients/ e CONTRIBUTING.md.
Outros canais (também por projeto)
Kiro Power: Add Custom Power → Import from GitHub →
https://github.com/LuisCarlosLopes/codesteer-atlas.git, e associe ao workspace atual.Copilot CLI plugin: prefira instalar no contexto do repositório em que você vai trabalhar; se o índice não for encontrado, use a Opção B (
.vscode/mcp.jsonou equivalente).
copilot plugin install LuisCarlosLopes/codesteer-atlas2. Indexar o projeto
Na raiz do seu projeto (não do repositório do Atlas, a menos que seja esse o alvo):
cd /caminho/para/seu-projeto
# Uma vez: instala atlas-index / atlas-serve no PATH
uv tool install git+https://github.com/LuisCarlosLopes/codesteer-atlas.git
atlas-index --workspace .Sem instalar no PATH (baixa o pacote a cada execução):
uvx --from git+https://github.com/LuisCarlosLopes/codesteer-atlas.git atlas-index --workspace .Ao terminar: mensagem Indexação Concluída com Sucesso! e pasta .code-index/ com manifest.json, lancedb/, graph.json e graph.html.
Atualizar o Atlas depois: uv tool upgrade codesteer-atlas.
3. Usar
Com o MCP conectado e o índice criado, o agente passa a ter as tools atlas_*. Nas próximas vezes:
atlas-index --workspace . # incremental (padrão)
atlas-index --workspace . --full # rebuild completo
atlas-index --workspace . --paths src --paths docsOu peça ao agente para usar a tool atlas_index.
Reindex automático: ao iniciar o
atlas-serve(abrir/reiniciar o editor), se.code-index/já existir, roda uma reindexação incremental em background. A primeira indexação (passo 2) continua manual. Log:.code-index/background_reindex.log.
Uso
Tool | Descrição |
| Busca híbrida. Por padrão retorna só metadados; use |
| Briefing do projeto (identidade, camadas, entrypoints, hubs). Chame primeiro em projeto desconhecido. |
| Grafo: |
| Indexa/reindexa; regenera |
| Diagnóstico do índice ( |
Recurso somente leitura: atlas://status.
Após indexar, abra .code-index/graph.html no navegador (file://) para inspecionar o grafo.
Rationale e grafo
Em resultados de código, atlas_search pode incluir rationale_refs (DECISAO-002, ADR-001, [[wikilinks]], # NOTE: / # WHY:).
atlas_graph(mode="hubs", top_n=10)
atlas_graph(mode="path", source="src/app.py", target="dec-002")
atlas_graph(mode="explain", target="AuthService.login")Upgrade:
atlas_graph/graph.htmlexigem reindex em índices antigos (<2.1.0).
Instruções para agentes de IA (AGENTS.md / CLAUDE.md)
Copie o bloco abaixo para as instruções do seu projeto:
Cliente / IDE | Arquivo |
Cursor, Copilot (VS Code), genérico | |
Claude Code | |
Kiro | regras do Power / instruções do agente |
GitHub Copilot CLI | instruções do plugin ou regras do projeto |
# Busca de código com `codesteer-atlas`
Este repositório é indexado pelo MCP `codesteer-atlas`. Para entender, planejar, pesquisar ou explorar código, use Atlas antes de `grep`, `rg`, `find`, glob ou leitura em massa.
## Use assim
- `atlas_brief`: orientar-se num projeto desconhecido — chame primeiro, uma vez
- `atlas_search`: localizar função, classe, método, símbolo ou conceito
- `atlas_graph`: hubs, paths e conexões (código, markdown, rationale)
- `atlas_status`: só se houver suspeita de índice ausente ou desatualizado
- `atlas_index`: reindexar após mudanças grandes ou índice stale
## Fluxo padrão
1. `atlas_search` para descoberta (metadados).
2. Restrinja com `path_prefix` e `language` quando fizer sentido.
3. Leia os hits com `Read`, ou repita com `include_content=true`.
## Quando pode pular o Atlas
- o usuário já informou o caminho exato
- confirmação de string literal exata
- edição, diff, commit, git, CI, testes ou instalação de deps
- MCP indisponível ou índice vazio/desatualizado
## Índice desatualizado
1. `atlas_status`
2. Se necessário, `atlas_index`
3. Fallback local só se o problema persistirComo funciona
O Atlas divide cada arquivo em CodeChunks no nível de símbolo via Tree-sitter, gera embeddings locais e indexa em LanceDB (vetorial + BM25 / RRF):
src/auth/service.py
├── class AuthService (linhas 10–45)
├── AuthService.login (linhas 20–35)
└── AuthService.logout (linhas 37–44)Detalhes do pipeline: CONTRIBUTING.md.
Excluindo arquivos com .atlasignore
Na raiz do workspace (sintaxe igual à do .gitignore):
*.log
fixtures/
/dist
**/*.generated.py
!important.logÉ um filtro adicional — .git, node_modules, .venv, __pycache__ e .code-index continuam sempre ignorados.
Onde fica o .code-index?
Ordem de resolução:
--index-dir(CLI)ATLAS_INDEX_DIR(env)Busca ascendente a partir do CWD
Busca a partir da raiz do editor (
CLAUDE_PROJECT_DIR,WORKSPACE_FOLDER_PATHS)Fallback
.code-indexrelativo à raiz conhecida (ou ao CWD)
Com MCP ligado ao projeto (plugin project/local ou mcp.json na raiz), o item 3 ou 4 costuma bastar após atlas-index --workspace ..
Se o servidor nascer com CWD errado (caso típico de instalação global), o Atlas tenta recuperar via MCP roots/list quando o cliente suporta. Mesmo assim, prefira instalação por projeto — é o caminho estável.
Para forçar um caminho explícito no mcp.json do projeto:
{
"mcpServers": {
"codesteer-atlas": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LuisCarlosLopes/codesteer-atlas.git",
"atlas-serve"
],
"env": {
"ATLAS_INDEX_DIR": "${workspaceFolder}/.code-index"
}
}
}
}No Cursor,
${workspaceFolder}é a forma mais segura de amarrar o índice ao projeto aberto. Veja CONTRIBUTING.md — Cursor.
Diagnóstico: atlas_status → index_resolution.
Contribuindo
Clonar o repo, testes, lint e configuração avançada: CONTRIBUTING.md e CLAUDE.md.
Licença
Veja LICENSE.
Available Tools
5 toolsatlas_briefA
Get a pre-computed, token-bounded briefing that orients you in an unfamiliar project.
Call this FIRST, once, when you start working on a project you do not already know. It replaces the usual orientation ritual (listing directories, reading the README, opening several files just to get your bearings) with a single small response.
Returns a ranked summary: identity (repo, language distribution, size),
layers (the main directories, what role each plays, and their most important files),
entrypoints (how the project is actually started), and hubs (the most connected
files — the ones whose change propagates furthest). Every list is ranked and capped,
so the response size does NOT grow with the size of the repository.
Do NOT call this to enumerate symbols or files: by design it reports at most a handful
of layers and a few files per layer. Use atlas_search (optionally with path_prefix)
to find a specific implementation, and atlas_graph to explore connectivity.
Do NOT call it more than once per session — the briefing only changes after
atlas_index re-runs.
Facts are derived deterministically from the index; nothing is guessed. Entries carry
confidence (declared when read from a manifest such as pyproject/package.json,
inferred when detected in code) and warnings reports known gaps, e.g.
graph_unavailable, no_import_edges, low_symbol_coverage, index_stale.
Staleness is detected by comparing the indexed git HEAD with the current one, so
uncommitted edits are not detected (same limitation as atlas_status).
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Detail level. `0` is a minimal orientation (identity plus directory roles); `1` (default) adds per-layer top files, entrypoints and hubs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses deterministic derivation, response size capped independent of repo size, ranked/capped lists, confidence levels with declared vs inferred, known warning types, and staleness detection limitations including the inability to detect uncommitted edits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence earns its place. It is front-loaded with a one-sentence summary, followed by explicit usage instructions, output details, and limitations, without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of annotations, the description covers all necessary context: what it does, when to call it, what it returns, how to interpret results, known edge cases, and relationships to sibling tools. The output schema existence further reduces the need to explain return types, but the description goes beyond that anyway.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add new meaning about the `level` parameter beyond what the schema already says, though it enriches the overall understanding of the response shape (ranked, capped lists) which indirectly informs parameter expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Get a pre-computed, token-bounded briefing that orients you in an unfamiliar project.' It clearly distinguishes the tool from siblings by explicitly naming atlas_search, atlas_graph, and atlas_index and stating what each is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Call this FIRST, once, when you start working on a project you do not already know'), what not to use it for, and names alternative tools for specific tasks. It also warns against repeated calls and notes when the briefing changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atlas_graphA
Query the derived knowledge graph for hubs, paths, or neighborhood explanations.
Call this directly when the question is about connectivity, rationale, or
centrality in the indexed workspace. It reads the derived graph.json
produced by atlas_index; it does not rebuild the graph itself.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | One of `hubs`, `path`, or `explain`. | |
| top_n | No | Number of hubs to return for `hubs` mode. Must be between 1 and 50. | |
| source | No | Required for `path`. Accepts exact node id, exact label, or a unique suffix. | |
| target | No | Required for `path` and `explain`. Accepts exact node id, exact label, or a unique suffix. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool reads the derived graph.json produced by atlas_index and does not rebuild the graph, indicating a read-only dependency on a precomputed artifact. This is useful context, though it omits details like staleness or side effects (which are minimal for a read-only query).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the main verb and resource front-loaded. The second sentence adds essential context about when to use and the dependency on atlas_index. Every phrase earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full output schema and complete parameter descriptions, the description does not need to explain return values or parameter details. It covers the core purpose, usage context, and dependency, which is sufficient for a tool of this complexity. Minor gaps like explicit exclusions or performance notes are not critical because the schema fills in details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage, with descriptions for every parameter including conditional requirements (e.g., 'Required for path'). The description adds no additional parameter-level information, so it sustains the baseline score of 3 but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries the derived knowledge graph for hubs, paths, or neighborhood explanations. The verb 'query' and the specific resource ('derived knowledge graph') distinguish it from siblings that operate on raw indices or briefs. It also specifies the graph is derived from atlas_index, providing unique identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this tool when the question concerns connectivity, rationale, or centrality, which gives clear usage context. It also notes it does not rebuild the graph, implying it is for read-only queries. However, it does not explicitly name alternative tools or contrast with them, though the 'call directly' phrase hints at direct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atlas_indexA
Index (or re-index) source code and documents into the local search index.
Use to build the index the first time, or to refresh it after atlas_status
reports is_stale: true or large changes.
IMPORTANT: unless the user already said what to index, call with dry_run=true first, show the candidate folders, and ASK whether to index everything or specific folders. Then call again with the chosen 'paths' (or none for the whole workspace).
Incremental by default: unchanged files (by content hash) are skipped, so re-runs are fast. full=true forces a complete rebuild.
full=true or empty/omitted 'paths' (whole-workspace) run asynchronously in a
background subprocess and return immediately — poll atlas_status
(reindexing: true while running). A non-empty 'paths' with full=false runs
synchronously and returns stats directly.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Force full re-index ignoring cached hashes. Defaults to false. | |
| paths | No | Optional subfolders (relative to 'workspace') to index, e.g. ["src", "docs"]. Omitted = whole workspace. No path traversal outside it. | |
| dry_run | No | When true, indexes nothing; returns top-level candidate folders with eligible-file counts so you can present them before deciding. Defaults to false. | |
| workspace | No | Absolute path to index. Defaults to the parent of the resolved index, else the current directory. Must exist and be a directory. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses incremental behavior, skip of unchanged files, async/sync modes, and dry_run behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured, concise with clear sections. Each sentence adds value; no fluff. Front-loaded with purpose, then usage notes, then behavioral details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, async behavior, and an output schema, the description covers all necessary context: workflow, behaviors, edge cases (dry_run, full rebuild). Output schema exists, so return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all parameters (100% coverage). Description adds value by explaining how parameters affect execution (e.g., dry_run returns candidates, non-empty paths with full=false is synchronous) and usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool indexes source code and documents into a local search index, using specific verbs and resources. It distinguishes from the sibling tool 'atlas_search' which presumably searches, not indexes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use (first time, after staleness) and when not (use dry_run first, ask user). Provides workflow instructions and distinguishes between async and sync execution based on parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atlas_searchA
Search code AND documents in the project's local index — your FIRST tool to find, explore or investigate anything here, before broad file reads or grep.
Runs a semantic hybrid search (vector + BM25, fused via RRF) over pre-indexed chunks
of source code (classes/functions/methods) and documents (Markdown, text, JSON/YAML/
TOML). Pass natural language or exact symbols. To get your bearings in an unfamiliar
project first, use atlas_brief.
Token-efficient two-pass pattern: by default this returns metadata only (file_path,
lines, symbol, type, score). Locate first, then read the exact lines with Read, or
re-call with include_content=true for the few results whose content you actually need.
Call directly — do NOT call atlas_status first "just to check". If the index does
not exist yet, this raises an actionable error explaining how to build it (see
atlas_index).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Optional repository name filter. | |
| limit | No | Alias for 'top_k'; overrides it when provided. | |
| query | Yes | Natural language description or exact symbols to find. | |
| top_k | No | Max results, 1-50. Defaults to 5. | |
| language | No | Optional language filter (e.g. 'python', 'javascript', 'go'). | |
| path_prefix | No | Optional path prefix filter (e.g. 'src/controllers'). | |
| include_content | No | When true, includes each result's 'content'. Defaults to false (metadata/location only) to save tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the transparency burden. It discloses the hybrid search mechanism (vector + BM25, RRF fusion), default metadata-only return, two-pass pattern, token-efficiency consideration, include_content behavior, and the actionable error when the index is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized but every sentence adds unique value, from purpose to usage to behavioral details to error handling. It is well-structured with a clear progression and imperative guidance, not wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex search tool with 7 parameters and an output schema, the description covers all essential aspects: what it searches, how it works, what it returns by default, how to use it in a token-efficient pattern, and what to do if the index is missing. It also integrates sibling tool context, making it self-sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining query input as 'natural language or exact symbols' and elaborating the default return fields and the purpose of include_content, going beyond the schema's terse descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches code and documents in the project's local index, establishing it as the primary search/find tool. It distinguishes itself from siblings by explicit 'FIRST tool' positioning and naming atlas_brief as the alternative for getting bearings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: use before broad file reads or grep, use atlas_brief for unfamiliar projects, and do NOT call atlas_status first. It also explains the error path related to atlas_index, giving clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atlas_statusA
Get diagnostic metadata and health status of the local vector index.
Use this only for explicit diagnostics (e.g. the user asks about index health,
staleness, or which repos/languages are indexed) or to decide whether atlas_index
should be run. It is NOT a precondition for atlas_search/atlas_brief — call those
directly; they raise an actionable error themselves if the index is missing.
Never indexes anything itself.
Returns:
JSON string with index_exists, total_chunks, repos_indexed,
languages_indexed, embedding_model, embedding_backend, storage_backend,
index_path, index_resolution (how the index directory was resolved:
"cli-arg" | "env" | "discovery" | "editor-project-dir" | "roots" |
"roots-fallback" | "editor-project-dir-fallback" | "cwd-fallback" — useful to
diagnose client misconfiguration when index_exists is unexpectedly false),
last_indexed_at,
git_head_sha, is_stale (true when the indexed git HEAD differs from the
workspace's current HEAD), and reindexing (true when another process
currently holds the reindex lock for this index).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly states the tool never indexes anything, and it discloses important behavioral details such as the reindex lock ('reindexing' true when another process holds the lock), staleness semantics, and index resolution modes. This gives the agent a strong understanding of side effects and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear one-sentence purpose, followed by usage guidance and a detailed return list. Every sentence serves a purpose: usage restrictions, non-side-effect guarantee, and return field explanations. It is appropriately sized for the tool's diagnostic nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully compensates for the lack of annotations by documenting the output fields, including edge-case values like index_resolution and is_stale. It is complete for a diagnostic tool with no parameters and no side effects, and it provides enough context for the agent to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already covers everything. The description adds no parameter-specific details, but with no parameters the baseline is 4, and the description's return-value documentation compensates for any lack of parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get diagnostic metadata and health status of the local vector index') tied to a clear resource (local vector index). It distinguishes itself from sibling tools by explicitly stating it is not a precondition for atlas_search/atlas_brief and never indexes anything.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (explicit diagnostics or deciding whether atlas_index should run) and when not to use (not a precondition for search/brief; call those directly). It also names an alternative tool (atlas_index) and clarifies that search/brief raise errors themselves if the index is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.4.3- Added
atlas_brief - Added
atlas_graph - Added
atlas_status
4 tool updates
v1.4.2- Changed
atlas_index4 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When true, does NOT index anything. Instead, returns the\ntop-level candidate folders under 'workspace' with a count of\neligible files in each, so the agent can present them to the user\nbefore deciding what to index. Defaults to false."New value: +"When true, indexes nothing; returns top-level candidate folders\nwith eligible-file counts so you can present them before deciding.\nDefaults to false." - changed
Input schema / properties / full / descriptionPrevious value: -"When true, forces a full re-index ignoring cached file hashes.\nDefaults to false (incremental)."New value: +"Force full re-index ignoring cached hashes. Defaults to false." - changed
Input schema / properties / paths / descriptionPrevious value: -"Optional list of subfolder paths, relative to 'workspace', to index\n(e.g. [\"src\", \"docs\"]). When omitted, the entire workspace is indexed.\nEach path must resolve to a location inside 'workspace' (no path traversal)."New value: +"Optional subfolders (relative to 'workspace') to index, e.g.\n[\"src\", \"docs\"]. Omitted = whole workspace. No path traversal outside it." - changed
Input schema / properties / workspace / descriptionPrevious value: -"Absolute path to the root directory to index. Defaults to the\nparent directory of the resolved index, or the current working\ndirectory if no index has been resolved yet. Must exist and be a directory."New value: +"Absolute path to index. Defaults to the parent of the resolved\nindex, else the current directory. Must exist and be a directory."
- Removed
atlas_map - Changed
atlas_search8 fields changed- changed
Input schema / properties / include_content / defaultPrevious value: -trueNew value: +false - changed
Input schema / properties / include_content / descriptionPrevious value: -"When false, omits the 'content' field from results to save tokens,\nreturning only metadata and location (file_path, lines, symbol, type, language, score).\nDefaults to true."New value: +"When true, includes each result's 'content'. Defaults to false\n(metadata/location only) to save tokens." - changed
Input schema / properties / language / descriptionPrevious value: -"Optional programming language to filter results (e.g., 'python', 'javascript', 'go')."New value: +"Optional language filter (e.g. 'python', 'javascript', 'go')." - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Alias for 'top_k'; overrides it when provided." +} - changed
Input schema / properties / path_prefix / descriptionPrevious value: -"Optional file path prefix to restrict the search to a specific directory (e.g., 'src/controllers')."New value: +"Optional path prefix filter (e.g. 'src/controllers')." - changed
Input schema / properties / query / descriptionPrevious value: -"The natural language search term or description of the code to find."New value: +"Natural language description or exact symbols to find." - changed
Input schema / properties / repo / descriptionPrevious value: -"Optional repository name to filter results."New value: +"Optional repository name filter." - changed
Input schema / properties / top_k / descriptionPrevious value: -"Maximum number of results to return (integer between 1 and 50). Defaults to 5."New value: +"Max results, 1-50. Defaults to 5."
- Removed
atlas_status
4 tool updates
v1.0.0- First observed
atlas_index - First observed
atlas_map - First observed
atlas_search - First observed
atlas_status
TDQS
Each tool serves a clearly distinct purpose: search for finding code, graph for connectivity, brief for orientation, status for diagnostics, and index for building/refreshing the index. Descriptions explicitly cross-reference when to use which tool, eliminating ambiguity.
All tools follow a consistent atlas_<noun/verb> pattern with lowercase and underscores. The naming is uniform and predictable, making it easy to infer the function of each tool.
Five tools is well-scoped for a code indexing and search server. Each tool covers a necessary part of the workflow: indexing, status, search, graph exploration, and project briefing, with no redundancy or bloat.
The tool set covers the full lifecycle: indexing (atlas_index), health/status (atlas_status), searching (atlas_search), connectivity analysis (atlas_graph), and project orientation (atlas_brief). Missing operations like explicit deletion are unnecessary, as full re-indexing handles updates.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server with local vector search for your codebase. Smart indexing, semantic search, Git history — all offline.748MIT
- AlicenseAqualityDmaintenanceLocal-first MCP server for semantic + keyword hybrid code search. Zero external services, no API keys required.2MIT
- AlicenseAqualityAmaintenanceMCP server for semantic code search with AST-aware chunking, hybrid vectors, and query syntax.121Apache 2.0
- FlicenseAqualityBmaintenanceSelf-hosted hybrid code search MCP server with text, symbol, and semantic search layers. Runs locally, no third-party MCP servers, LSP, or SaaS.8-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/LuisCarlosLopes/codesteer-atlas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server