Production MCP gateway composing vtk-knowledge, vtk-index, and vtk-validate
The vtk-mcp server defines 30 tools covering VTK API documentation, semantic search, validation, and code generation. Most tools have descriptions and partial schemas, but quality is inconsistent. Naming follows verb_noun conventions well (get_, search_, validate_, translate_). However, parameter descriptions are sparse, most tools have only minimal inline docs without rich context. Output schemas are rarely documented. Error handling is absent from visible code. The server's core purpose (VTK knowledge gateway) is clear, but LLM-facing descriptions lack the specificity needed for reliable tool selection. This is solidly mediocre, typical of domain-specific documentation tools that prioritize functional completeness over agent ergonomics.
Get detailed information about a VTK class from online C++ docs.
Get Python API documentation for a VTK class using help().
Return True if *text* is already in the VTK pipeline DSL format.
Search for VTK classes containing a specific term.
Translate a natural language VTK request into the pipeline DSL. The DSL encodes the full pipeline as a structured specification (sources, filters, auxiliary objects, render settings) with explicit class slugs and parameter names, which produces more accurate code generation than plain natural language.
Validate a Python source string against the VTK API. Returns a ValidationReport with status and diagnostics.
Sparse output schema documentation. Most tools (18/30) lack documented return types. LLMs cannot plan downstream tool calls or extract required fields without knowing the response structure.
Parameter descriptions are generic or absent. The 'class_name' parameter appears in 18 tools with identical brief description. Parameters like 'limit', 'k', 'query' lack guidance on valid ranges, formatting, or impact.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Hybrid semantic search over VTK documentation chunks.
Hybrid semantic search over VTK code example chunks.
Search VTK examples using vector similarity search with RAG. This function performs semantic search over VTK code examples using embeddings and returns the most relevant code snippets and documentation.
Get the action phrase for a VTK class (e.g. 'mesh smoothing').
Get the docstring for a VTK class.
Get the full VTK class record (module, role, methods, synopsis, inheritance, etc.).
Get the full MRO (method resolution order) chain for a VTK class.
Get the input data type expected by a VTK class.
List all methods (with signatures) for a VTK class.
Get the vtkmodules.* import path for a VTK class.
Get the output data type produced by a VTK class.
Get versioning and integrity metadata for a VTK class record. Returns vtk_version, schema_version, and content_hash.
Get the pipeline role of a VTK class (source, filter, mapper, output, etc.).
List non-boilerplate callable methods for a VTK class.
Get a one-sentence synopsis for a VTK class.
Get the visibility score (0.0–1.0) for a VTK class.
Get the docstring for a specific method of a VTK class.
Get documentation for a specific method of a VTK class.
Get the canonical signature for a specific method of a VTK class.
List all VTK classes in a specific module.
Check if a name is a valid VTK class.
Search for VTK classes by name or keyword.
Validate a VTK import statement and suggest corrections.
Return the VTK version loaded by this gateway instance.
No error handling guidance. None of the 30 tools document what happens on invalid input (e.g., nonexistent class name) or how to recover. Agents are left guessing whether to retry or try an alternative approach.
Ambiguous tool overlap. Tools like vtk_get_class_info, get_vtk_class_info_cpp, and get_vtk_class_info_python all retrieve class information but with unclear distinctions. LLMs will waste reasoning cycles deciding which to call.
Minimal context in descriptions for semantic search tools. vector_search_docs, vector_search_examples, and vector_search_vtk_examples lack guidance on when to use each, what 'hybrid' means, or how filtering by role/visibility affects results.
Parameter 'nullable' fields in vector search tools lack guidance on default behavior when omitted. If role=null filters to all roles, the agent should know this without trial and error.
translate_prompt_to_dsl and is_dsl_prompt are specialized tools that assume LLMs understand the DSL format. Descriptions lack examples of DSL syntax or when to use DSL vs natural language queries. What is the DSL format?
translate_prompt_to_dsl accepts optional LLM parameters (model, base_url, api_key) without explaining when/why to override defaults. Agents may pass credentials as parameters, violating secret-injection pattern.
No tool constraints on numeric parameters. vtk_search_classes and vector_search_* tools accept 'limit' and 'k' parameters with no documented min/max. Can an agent pass limit=1000000? Is there a performance cliff?