Skip to content

get_architecture does not return architecture aspects described in README (only histograms / schema) #280

@OliverEvans96

Description

@OliverEvans96

Summary

The get_architecture MCP tool does not return the rich architecture sections promised in the README (languages, packages, entry points, routes, hotspots, boundaries, layers, clusters). Instead, it only returns histograms: node_labels, edge_types, and (sometimes) relationship_patterns, along with project, total_nodes, and total_edges.

Details and Evidence

  • According to README.md and published documentation, get_architecture is supposed to return an “architecture overview” – with languages, packages, entry points, routes, hotspots, boundaries, layers, clusters, etc.
  • In the current implementation (as of v0.6.0, commit bebc6d8...), the handle_get_architecture function does not call the actual architecture computation layer (cbm_store_get_architecture).
  • Instead, the only conditionally emitted outputs (contingent on aspects) are:
    • node_labels (when requesting aspect "structure")
    • edge_types (when requesting aspect "dependencies")
    • relationship_patterns (when requesting aspect "routes", and only if available)
  • No other architecture fields/sections are present, regardless of what’s passed in aspects (including "all").
  • There is never a top-level field or sub-object for languages, packages, entry_points, routes (beyond relationship_patterns), hotspots, boundaries, layers, clusters, or anything more structured than these label/type histograms.
  • The underlying repo’s store and data model do have support for these richer outputs (cbm_store_get_architecture, cbm_architecture_info_t, etc.), but the MCP handler does not use or expose them. This is not just a documentation error—the implementation simply does not serialize those fields in its responses.

Impact

  • Cursor, the CLI, and all clients receive only histogram summaries. There is no way to get e.g. a package or dependency list, route summaries, cluster/layer outputs, or cross-package boundaries via the public API.
  • This makes much of the README’s description for get_architecture and most “architecture-aware” integrations misleading or broken.

Example

A typical get_architecture response (as of v0.6.0):

{
  "project": "demo",
  "total_nodes": 550,
  "total_edges": 2140,
  "node_labels": [ ... label histogram ... ],
  "edge_types": [ ... type histogram ... ]
}
  • There are never block sections for languages/packages/routes/etc.
  • aspect blocks or aspects: ['all'] do not change or expand the available sections.

Steps to reproduce

  1. Index any (sufficiently large) repository.
  2. Call get_architecture via JSON-RPC with only { "project": "name" } or any combination of aspects.
  3. Observe that only label/type histograms are returned, not the additional architecture sections described in the README.

Suggested resolution

  • Update handle_get_architecture in src/mcp/mcp.c to actually call cbm_store_get_architecture(...) and serialize all available aspects/sections (languages, packages, entry_points, etc.) in the returned JSON, matching README coverage.
  • Or: if architectural extraction is not intended to be available, clearly update the README and docs to match the much more restricted result set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions