MCP server for multilingual place/location extraction, backed by mDeBERTa models.
Two tools with clear naming and reasonable descriptions, but significant gaps in schema documentation and parameter descriptions. extract_places has a well-structured docstring and clear purpose, but the input schema lacks descriptions for both parameters. list_place_types is minimal but functional. Output schemas are not formally documented in the code. No error handling guidance, no validation rules, and no recovery paths documented. Naming follows verb_noun convention (extract_*, list_*) which is good, but parameter documentation is sparse.
Extract place/location entities from text in 13 languages. Detects cities, countries, regions, and named entities (landmarks / points of interest) across Latin and non-Latin scripts using a multilingual mDeBERTa token-classification model.
List the place entity types this server can extract.
Input parameter descriptions missing. 'language' parameter has a description, but 'text' parameter in extract_places lacks clarity on format, length limits, or encoding expectations.
Output schema not formally documented. extract_places returns a dict with 'places' array containing {text, type, score, start, end}, but this structure is only visible in the docstring, not in a machine-readable schema. LLMs cannot reliably parse unstructured docstring descriptions.
No error handling guidance. If the model fails to load, if text is malformed, or if the pipeline crashes, there is no documented recovery path. Error responses should tell the LLM what to do next (e.g., 'Model unavailable, retry in 30s' vs bare exception).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No input validation or constraint documentation. 'text' parameter has no stated length limits, encoding requirements, or language support details. 'language' parameter accepts any string but should document valid ISO 639-1 codes or state that auto-detection is preferred.
list_place_types description is generic (60 chars). It should explain WHEN to call this tool (e.g., 'Call before extract_places to understand available entity types') and what the response structure is.