MCP server for KISTI OpenAPI (ScienceON, NTIS, DataON) - Provides unified search services for Korean research papers, reports, research data, and project information
The KISTI-MCP server defines 11 tools with basic schema coverage but significant gaps in schema completeness, parameter documentation, and error handling. All tools have descriptions (positive), but descriptions are generic Korean translations lacking LLM-optimized guidance on when/why to use each tool. Input schemas are present for all tools with type information, but many parameters lack actionable constraints (enums, ranges, formats). No output schemas are documented. Error handling is minimal, no recovery guidance, no error classification, no actionable error messages. The server uses STDIO transport, which is a hard cap at 50 for protocol readiness. Tools show moderate naming clarity (verb_noun format) but lack distinction between overlapping search/detail pairs. No tool annotations, no structured output guidance, no pagination info despite max_results parameters.
DataON 데이터셋 상세 정보 조회 - 연구 데이터셋의 상세한 메타데이터를 조회합니다
NTIS 분류 추천 - 연구 목표와 내용에 기반하여 적절한 분류를 추천합니다
NTIS 세부 분류 추천 - 항목별 입력값을 기반으로 세부 분류를 추천합니다
NTIS 프로젝트 상세 정보 조회 - 연구개발 프로젝트의 상세한 정보를 조회합니다
NTIS 연구과제 추천 - 검색어에 기반하여 관련 연구과제를 추천합니다
ScienceON 논문 상세 정보 조회 - 논문의 상세한 메타데이터와 초록을 조회합니다
DataON 통합 검색 - 한국의 연구 데이터셋을 검색합니다
NTIS 통합 검색 - 한국 연구개발 프로젝트 정보와 권고사항을 검색합니다
No output schemas documented for any tool. LLMs cannot predict return structure or plan downstream calls. All tools lack documented result types, violating pattern:tool baseline (100% of A+ tools have documented return types).
Parameter 'target' in search_ntis accepts free-form strings ('PROJECT', 'CLASSIFICATION', 'RECOMMENDATION') without enum constraint. LLM has no way to know valid values; missing values cause silent API failures. Should declare as enum with all valid options.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 20 | - | v1 |
NTIS 프로젝트 검색 - 연구개발 프로젝트를 검색합니다
ScienceON 통합 검색 - 한국 학술논문, 학위논문, 학술지, 학술대회를 검색합니다
ScienceON 고급 검색 - 필터를 적용하여 학술논문을 검색합니다
Descriptions for all 11 tools are generic/templated (45-50 chars). Do not explain WHEN to use each tool or how they differ. E.g., search_scienceon vs search_scienceon_advanced differ by filtering options, but descriptions don't explain this distinction. LLM will waste reasoning on choosing between overlapping tools.
No error handling or recovery guidance in tool definitions. If API returns 401 (bad API key), 404 (doc not found), or rate limit, LLM has no guidance. Should include: 'If not found, try searching first with search_scienceon()' or 'Requires NTIS_API_KEY env var set'.
Parameters 'max_results' (type: integer) lack range constraints. No min/max documented. LLM could pass max_results=1000000, causing API overload or timeout. Should specify 1-100 range and document in description.
Parameters 'year_from' and 'year_to' in search_scienceon_advanced lack descriptions. LLM has no guidance on format (YYYY?), valid range, or what happens if year_from > year_to. Should include: 'Year as YYYY (e.g. 2020); year_from ≤ year_to required.'
Parameter 'collection' in search_scienceon_advanced accepts free-form strings without enum. Should declare as enum: ['article', 'thesis', 'journal', 'conference']. LLM currently guesses valid values, risking API errors.
Parameters 'classification_type' in get_ntis_classification and get_ntis_classification_detailed accept 'standard, health, industry' as free-form strings, not enums. LLM could pass invalid values. Should use enum constraint.
No pagination documentation. search_* tools accept max_results but do not document: Can I get results 11-20 (offset/page)? What is the total count? If 1000 results exist and max_results=10, how do I fetch the rest? Violates pattern:paginated-result.
Tool composition risk: get_scienceon_detail, get_ntis_detail, get_dataon_detail require IDs (doc_id, project_id, dataset_id) that search_* tools must return. No documentation guarantees search results include these IDs, risking broken chains.