MCP server for PubMed medical research search with Impact Factor analysis
Two tools with visible schemas and descriptions, but significant quality gaps. Tool names lack action verbs (pubmed_search is acceptable but load_impact_factor is weak). Descriptions are present but generic and in Korean, limiting LLM comprehension. Schemas are properly typed but lack parameter constraints (enums, ranges). No output schema documented. Error handling is minimal, responses lack recovery guidance. No security considerations for file I/O or API key exposure in environment variables.
Impact Factor 데이터 파일을 로드합니다.
의학 주제에 대한 질문을 분석하여 관련 논문을 PubMed에서 검색하고, Impact Factor를 기준으로 정렬된 결과를 제공합니다.
Tool names lack clear action verbs. 'load_impact_factor' is vague, does it load, parse, validate, or cache? 'pubmed_search' is acceptable but could be 'search_pubmed' for consistency with verb_noun convention.
Descriptions are in Korean and generic. 'Impact Factor 데이터 파일을 로드합니다' (Load Impact Factor data file) lacks context on WHEN to call it, WHAT it returns, and WHY it's needed. LLMs cannot infer dependencies or output structure.
No output schema documented. Callers cannot predict response structure. pubmed_search returns text with file paths; load_impact_factor returns a count. Neither is formally specified, forcing LLMs to guess at downstream tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
API key exposed in source code. NCBI_API_KEY hardcoded as '9585a3fc07ce86e32a3f42169e2c571a5708' in index.ts line 16. Credentials must never appear in code or tool parameters, use server-side secret injection only.
No parameter constraints. maxResults accepts any number (no min/max bounds). outputDir accepts any path (no validation against traversal). filePath in load_impact_factor has no format or existence check. Unbounded inputs invite abuse and errors.