FastAPI + FastMCP application providing 6 MCP tools for searching, listing, retrieving, creating, updating, and deleting 1C code templates with semantic search and hybrid full-text search capabilities
The server defines 6 tools with action-verb naming (templatesearch, list_templates, get_template, add_template, update_template, delete_template) and full input schemas visible in the source code. Descriptions are present for all tools and most parameters. However, there are moderate gaps: parameter descriptions lack detail about constraints and formats; output schemas are documented only as informal JSON strings rather than structured schema objects; error handling guidance is minimal; and some parameter type annotations could be more precise. The tool set is well-composed (each does one thing, proper CRUD structure), and the codebase is clean and readable. This is a solidly-functional domain-specific tool set suitable for production use with minor polish.
Add a new template to the database.
Delete a template by ID.
Get full template with code by ID.
List templates (id, name, description, tags) without code — paginated. The database contains hundreds of templates. Use `templatesearch` to find specific templates by keyword instead of browsing the full list.
Searches the 1C code template database using hybrid semantic + full-text search.
Update an existing template.
Output schemas not formally declared. Tools return free-form JSON strings (via json.dumps()) rather than structured response schemas. LLMs must infer response field names and types from examples in the docstring.
Parameter descriptions lack constraint details. 'offset' and 'limit' have minimal guidance; no mention of min/max bounds (limit capped at 200 is enforced in code but not documented in schema). 'tags' parameter accepts comma-separated string but format/length constraints are not specified.
Error handling returns plain text strings without structured guidance. E.g., 'Template with id=X not found' does not suggest recovery steps (e.g., 'Try list_templates() or templatesearch()' for discovery).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
No tool annotations present. Destructive tools (delete_template) and reversible tools (update_template) do not carry tool-level hints (destructiveHint, idempotentHint) via the spec's toolAnnotations capability. LLMs must infer risk from the description alone.
No confirmation/dry-run for destructive operations. delete_template executes immediately without a preview or confirmation step. A multi-step confirmation pattern would reduce accidental data loss.
templatesearch returns free-form text with code blocks rather than structured template objects. The response includes full code inline, which can be verbose. A paginated, structured response with optional code inclusion would be more agent-friendly.