A Kotlin-based MCP server that provides tools for querying ship position data, tracking, and station state information via HTTP APIs
Three tools with visible schemas and descriptions, but significant quality gaps. Tool names lack action verbs (listAllApis, getApiDetails, executeApi use camelCase but are acceptable). Descriptions are present but generic and under 100 chars. Input schemas exist but parameters lack detailed descriptions beyond single-line text. No output schema documentation. Error handling returns plain text without recovery guidance. Parameters like 'params' in executeApi are underspecified (type: object with no properties defined). No enum constraints, no validation rules, no idempotency hints. Tool composition is reasonable (three separate concerns), but descriptions don't explain WHEN to use each tool or what data flows between them.
执行指定的API,需要提供API的ID和参数
获取特定API的详细信息和使用方法
列出所有可用的API接口
executeApi 'params' parameter is type:object with no properties schema. LLMs cannot infer what fields are valid, leading to hallucinated or invalid payloads.
No output schema documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does listAllApis return apiId, name, category separately or as strings?).
Error responses are plain text without recovery guidance. 'API未找到' (API not found) gives no hint to retry with a different ID or call listAllApis first.
Descriptions are generic and under 100 chars. 'Execute specified API' does not explain when to use executeApi vs getApiDetails, what side effects occur, or what parameters the target API expects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter 'apiId' lacks format/constraint documentation. Is it a UUID, slug, or integer? Description says '唯一标识符' (unique identifier) but does not specify format or valid range.