Local-first MCP server for CodeAtlas — AST analysis, codebase intelligence, semantic memory, and A2A orchestration.
CodeAtlas MCP Server defines 4 tools with schemas and descriptions present, but significant gaps limit production readiness. Tool naming follows verb_noun convention (analyze, list_projects, get_project_structure, get_dependencies), which is positive. However, descriptions are functional but generic, they state WHAT the tool does but lack WHEN to use it or prerequisites. Parameter descriptions are present but sparse; many lack detail on constraints, formats, or valid ranges. Output schemas are not explicitly documented in the visible source code, the implementation returns text responses wrapped in { type: 'text', text: ... } but the expected structure for downstream tool chaining is not declared. Error handling is present (checking auth, path validation) but responses are text-only and lack recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible. The 'analyze' tool has a WRITE risk but the description does not state this has side effects or explain sync behavior clearly. No evidence of pagination for list_projects or get_project_structure despite these being discovery/list tools that should follow pattern:paginated-result. Overall: solid foundational definitions but missing the rigor for production-grade agent integration.
Perform deep code analysis on a local project directory. Generates AST analysis in memory and syncs to CodeAtlas Cloud.
Get import/call/containment/implements relationships between entities. Shows how modules, classes, and functions are connected.
Get all modules, classes, functions, and variables in the analyzed project. Returns entity type, name, file path, and line number.
List all projects that have been analyzed by CodeAtlas. Returns project names, paths, and last analysis time.
Output schemas not documented. Tools return text responses but no structured schema is defined for downstream tool chaining. LLMs cannot extract fields like project_id, entity_id, or relationship_id for use in subsequent calls.
No pagination parameters or documentation. list_projects and get_project_structure are discovery tools that may return many results but lack limit/offset/cursor parameters and no total count or next_cursor response field is documented.
analyze tool description lacks state-change clarity. Description does not explicitly state that this call syncs to CodeAtlas Cloud (a side effect) or warn about performance impact on large projects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint detail. 'project' parameter accepts string but does not explain expected format (absolute path? project name? project ID?). 'relationshipType' in get_dependencies lists no enum or valid values (e.g., 'import', 'call', 'extends').
Error responses are text-only with no recovery guidance. Path validation errors and auth failures return plain text; no structured error classification or actionable next steps. LLMs receive 'Error: Directory does not exist' but no suggestion to check the path or list available projects.
No tool annotations visible. Tools lack readOnlyHint, destructiveHint, or idempotentHint declarations. The 'analyze' tool is marked Risk: WRITE but no annotation signals this in the schema or response.
maxFiles parameter lacks bounds. Description says 'default: 5000' but provides no min/max constraints. LLMs could pass absurd values (0, 999999999) causing silent failures or timeouts.