C4 architecture documentation tool with MCP server implementation for LLM interaction
The loko server exposes 4 tools for querying and managing component relationships and dependencies. While schemas are present and descriptions exist, there are significant quality gaps: (1) descriptions are minimal (10-50 chars) and lack context about when/why to use each tool; (2) parameter descriptions are generic and lack format/constraint details; (3) no output schemas are documented; (4) error handling guidance is absent; (5) tool naming uses underscores but lacks consistency in intent clarity; (6) no evidence of idempotency or dry-run patterns for destructive operations. The tools appear functional but fall short of production-grade agent tooling standards. Tool definitions are inferred from test files rather than from explicit MCP registration code visible in the provided source.
Create a relationship between two architecture elements
Delete a relationship between architecture elements
List all relationships in a system
Query architecture graph with configurable detail level
Query dependencies of a specific component
Query project metadata and configuration
Search for architecture elements by name or pattern
Tool descriptions are extremely brief (10-50 chars) and lack LLM-optimized context. Descriptions do not explain WHEN to use each tool, what it returns, or how it differs from similar tools. Pattern baseline requires 50-200 chars with clear intent.
Parameter descriptions are generic placeholders (e.g., 'Root path of the project', 'Name of the system'). They lack format constraints, examples, or guidance on expected values. LLMs cannot infer whether 'system_name' expects 'my-system' or 'mysystem' or a UUID.
No output schemas are documented. Tools return results but the response structure is not specified. LLMs cannot plan downstream calls or extract needed fields without knowing what the response contains.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 30 | 2025-06-18+ | v1 |
delete_relationship is marked IRREVERSIBLE but has no confirmation mechanism, dry-run option, or error guidance to help agents avoid accidental deletion. Destructive operations require safeguards.
create_relationship has optional 'type' parameter but no enum constraint documented. LLMs will hallucinate relationship types (e.g., 'webhook', 'broadcast') instead of using valid options like 'async' or 'sync'. Enums are required.
No error recovery guidance. If create_relationship fails due to invalid source/target, what should the agent do? Call list_relationships to discover valid IDs? This dependency is undocumented.
Tool definitions are inferred from test files (graph_tools_cache_test.go, relationship_tools_test.go). The actual MCP tool registration and invocation code is not visible in the provided source. This makes it impossible to verify that tools are properly registered with the MCP server, have correct input/output bindings, or are discoverable.