A Python-based MCP server for translating product specifications between languages
This MCP server has a single tool 'translate_specs' with a severely underdeveloped definition. The tool has a name that starts with a verb (good), but the description is minimal (62 chars, below the 194-char baseline and below the minimum actionable threshold). More critically, the tool definition shown in source code is a mock stub with no actual implementation, it returns hardcoded '{k: f"{v} translated"}' placeholder text rather than real translation logic. The input schema IS present in the metadata (dimensions dict, source_language, target_language strings), so schema is partially defined, but the actual Python implementation in client.py shows zero validation, error handling, or real translation capability. There is no output schema documentation, no error handling guidance, no security considerations (API keys exposed?), and no idempotency guarantees. The tool is read-only per metadata, which is appropriate, but the stub nature of the implementation makes this unsuitable for production use.
Translates product specifications from a source language to a target language
Description is too short (62 characters) to be actionable. Baseline is 194 chars. Must include: WHAT does it do, WHEN to use it, what does it return, any prerequisites, and language support details.
Input schema present in metadata but lacks detailed parameter descriptions in source code. 'dimensions' parameter description is minimal and does not explain structure, size limits, or encoding. 'source_language' and 'target_language' lack enum constraints, free-form strings invite invalid ISO codes (e.g., 'xyz', 'english' instead of 'en', 'zh'). No documentation of supported language pairs.
Output schema is not documented. client.py returns {'translated_specifications': {...}} but no formal schema description exists in tool definition. LLM cannot reason about field names or structure for downstream tool calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No error handling guidance. If a language is unsupported, dimensions is empty, or API fails, there is no recovery path documented for the LLM. Stub implementation always succeeds, hiding real error modes.
Implementation is a stub mock that returns hardcoded placeholder text ('{v} translated'). This is not a real translation tool and is unsuitable for any production scenario. No API integration, no actual language processing, no validation.
No documentation of which language pairs are supported. LLM cannot know if 'ja', 'fr', 'es' are valid. Enum constraint should list all supported language codes.
No security consideration documented. Tool accepts 'dimensions' dict but no mention of input sanitization, size limits, or encoding validation. If this were a real translation API, secret injection for API keys would be required but is not mentioned.
No idempotency guarantee. Calling translate_specs twice with same input should return same result, but this is not documented. For a stateless translation, this should be implicit and stated.