Rust-native code index MCP server with first-class 1C:Enterprise (BSL) support. Static binary, 32 tools, tree-sitter AST for 14 languages, sub-ms search.
Strong foundation with 29 well-named tools covering code search, call graphs, and 1C-specific metadata extraction. All tools have descriptions (avg 156 chars) and input schemas with typed parameters. However, output schemas are not documented in the source, parameter descriptions lack format/constraint details (e.g., regex patterns, valid enum values), and error handling guidance is absent. Tools follow verb_noun naming (search_*, get_*, find_*) consistently. No tool annotations (readOnlyHint, destructiveHint) despite all being read-only. Parameter descriptions are present but generic, e.g., 'Repository alias' lacks guidance on format or discovery. Missing: pagination details, response field documentation, and recovery hints for common failures.
Find data flow path between two 1C metadata objects through references and composition schemas.
Find shortest call path between two functions. Returns sequence of function calls connecting source to target.
Find shortest call path between two BSL procedures, considering both direct calls and event subscriptions.
Universal symbol search: find functions, classes, variables, and imports by exact name (case-insensitive). Returns all matching symbols across all categories.
Get call tree (callers or callees) rooted at a function, with configurable depth and node limits. Returns hierarchical tree structure.
Get all functions/methods called by a given function. Returns call graph edges with locations and call kinds (direct, declarative, dynamic).
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns up to `limit` matches with locations and snippets') but the actual response structure is not formally specified. LLMs cannot plan downstream tool calls or extract fields without knowing the response schema.
Parameter descriptions lack format constraints and validation rules. E.g., 'limit' parameter has no min/max bounds (default 30 or 200 mentioned but not enforced), 'language' has no enum of supported languages, 'path_glob' has no pattern specification. LLMs cannot validate inputs or understand constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Get all functions/methods that call a given function. Returns call graph edges with locations and call kinds (direct, declarative, dynamic).
Get class by exact name (case-insensitive). Returns full definition with body, signature, and all locations where the class is defined.
Get data links for 1C metadata objects: references to other objects, composition schemas, and register writers.
Get Data Composition Schema (DCS) structure for 1C reports: data sets, parameters, fields, calculated fields, totals, variants, and data links.
Get event subscriptions for 1C metadata objects: which procedures handle which events and their source objects.
Get summary of a file: top-level functions, classes, imports, and statistics. Returns structured overview without full bodies.
Get form event handlers for 1C metadata objects: form items, form events, and their associated procedures.
Get function by exact name (case-insensitive). Returns full definition with body, signature, and all locations where the function is defined.
Get all imports in a file or all imports of a specific module. Returns import statements with locations and module names.
Get 1C metadata object structure: attributes, tabular sections, standard attributes, and properties.
Get all procedures that write to a specific 1C accumulation or information register.
Get repository statistics: file counts, language distribution, function/class counts, and indexing status.
Search function/class bodies by substring or regex pattern. Returns matches with line numbers and context.
Search all code files by regex pattern. Returns matches with line numbers, file paths, and context.
Search text files (markdown, yaml, json, xml, etc.) by substring or regex pattern. Returns matches with line numbers and context.
Get server health status, version, uptime, and indexing status of all tracked repositories.
List files in repository matching optional glob pattern and language filter. Returns file paths with metadata.
Read file contents with optional line range. Returns full file or specified lines with syntax highlighting metadata.
Nondeterministic full-text search over class names, docstrings, and bodies by keywords (OR between words). Returns up to `limit` matches with locations and snippets.
Nondeterministic full-text search over function names, docstrings, and bodies by keywords (OR between words). Returns up to `limit` matches with locations and snippets.
Search BSL procedures by enriched terms: synonyms, object descriptions, and comments. Uses trigram FTS for fuzzy matching across Russian/English terminology.
Nondeterministic full-text search over text files (markdown, yaml, json, xml, etc.) by keywords (OR between words).
Get file metadata: size, language, line count, and indexing status.
No tool annotations despite all 29 tools being read-only. Adding readOnlyHint=true to all tools would signal to agents that these calls are safe to retry and have no side effects, improving agent planning and error recovery.
No error handling guidance. Tool descriptions do not explain what happens on failure (e.g., 'repo not found', 'function not found', 'invalid regex'). Descriptions lack recovery hints like 'Try search_function() first if you only have a partial name.'
Pagination not explicitly documented. Tools like search_function, search_class, get_callers accept 'limit' but do not specify if results are truncated, whether a next_cursor or offset is returned, or how to fetch additional results. Large result sets risk context window exhaustion.