Semantic concept graph MCP server for codebases — what your code means, not just what it does.
Koncepto provides 6 well-named, read-only tools with clear semantic intent (koncept_get, koncept_search, koncept_for_file, koncept_invariants_at_scope, koncept_affected, koncept_lint_naming). All tools have descriptions (10 - 100 chars, baseline 194 avg). Input schemas are present with type declarations. However, parameter descriptions are minimal or absent in most tools, output schemas are not documented in the source, and error handling guidance is not visible. Tool names follow verb_noun convention well. The server targets a specialized domain (concept graphs) with coherent composition, but lacks the depth of documentation and error recovery patterns expected for production-grade tools.
Compute impact analysis: which concepts and invariants are affected by a set of changed files
Get all concepts that reference a given file as a participant
Retrieve a single concept document by id
Get invariants that apply to a specific file or scope
Flag new uses of a concept's forbidden naming aliases in changed files (DR-1 enforcement)
Search concepts by name, description, tags, or glossary terms
Output schemas not documented in source code. LLMs cannot plan downstream tool calls or extract required fields without knowing what each tool returns.
Parameter descriptions are minimal or missing. 'file' and 'files' parameters lack format guidance (e.g., relative to project root, glob patterns accepted?). 'query' in koncept_search lacks examples of valid search syntax.
No error handling guidance visible in tool definitions. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No recovery suggestions (e.g., 'If file not found, check path format').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No pagination or result-limiting parameters visible. koncept_search and koncept_affected could return large result sets; without limit/offset, context window exhaustion is possible.
Tool composition assumes LLM knows to chain tools (e.g., search → get). No guidance on common workflows or multi-step patterns. koncept_affected + koncept_lint_naming likely used together but no explicit composition hint.