TypeScript MCP Server with greeting, calculator, timezone, geocoding, weather, and image generation tools
Server defines 6 tools with explicit Zod schemas and descriptions in Korean. All tools have type-safe parameter definitions and basic error handling. However, descriptions are brief (20-100 chars) and lack LLM-optimization signals like prerequisites, intent guidance, or recovery paths. No tool annotations (readOnlyHint/destructiveHint) are present despite all tools being READ_ONLY. Output schemas are implicit (text responses) rather than documented. Parameter coverage is good (all have types + descriptions), but descriptions are minimal and don't explain when/why to use each tool relative to others. Naming follows verb_noun conventions adequately.
두 개의 숫자와 연산자를 입력받아 사칙연산 결과를 반환합니다.
텍스트 프롬프트를 입력받아 AI 이미지를 생성합니다. (HF_TOKEN 환경변수 필요)
도시 이름이나 주소를 입력받아 위도와 경도 좌표를 반환합니다.
위도와 경도 좌표를 입력받아 현재 날씨와 예보 정보를 제공합니다.
Timezone을 입력받아 해당 시간대의 현재 시간을 반환합니다.
이름과 언어를 입력하면 인사말을 반환합니다.
Tool descriptions are under-optimized for LLM selection. Descriptions lack explicit intent guidance (WHEN to use), dependency hints (prerequisites like HF_TOKEN), or disambiguation from similar tools (no comparison to alternatives).
No tool annotations present despite explicit risk declarations (all marked READ_ONLY). Tools should include readOnlyHint in MCP spec to inform agents these are safe to call speculatively without side effects. generate-image should declare destructiveHint if it consumes API quota (Hugging Face token usage).
Output schemas are not formally documented. All tools return {content: [{type: 'text', text: string}], isError?: boolean}, but this contract is implicit in code rather than declared in tool registration. LLMs cannot plan downstream actions without seeing return field names and types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Minimal error recovery guidance. Error responses return bare text ('오류: ...') without actionable next steps. E.g., 'Invalid timezone' should suggest 'Use IANA Timezone format (Asia/Seoul, UTC, etc.)' or offer discovery of valid values.
Tool naming inconsistency: 'getTime' uses camelCase while 'get-weather' uses kebab-case and 'generate-image' uses kebab-case.
generate-image requires HF_TOKEN environment variable but this dependency is mentioned only in the description as a parenthetical note. No parameter validation or clear error if the token is missing. Tool should validate token presence upfront and return a user-actionable error ('HF_TOKEN environment variable not configured. Set it before calling this tool.').
Descriptions are in Korean only. While acceptable for a Korean-language server, no English fallback is provided. LLMs and documentation tooling expect descriptions in English or multilingual support. This limits discoverability and integration with non-Korean LLM clients.