MCP server for semantic search and content retrieval from OpenViking knowledge base
OpenViking MCP has 6 tools with basic schemas and descriptions in Chinese. All tools are READ_ONLY and properly registered via FastMCP. However, critical gaps exist: (1) descriptions are minimal (10-30 chars), well below the 50-200 char LLM-optimized baseline; (2) parameter descriptions lack detail on format, constraints, and use cases; (3) no output schemas documented, LLMs cannot predict response structure; (4) error handling returns raw strings or JSON without recovery guidance; (5) no pagination support despite tools returning lists (find, glob, grep). Tool names follow verb_noun pattern (openviking_*) but are domain-specific and lack clarity for general LLM reasoning.
获取资源的L0摘要
语义搜索OpenViking知识库
使用glob模式匹配文件
全文内容搜索
获取资源的L1概览
从指定URI读取完整内容
Descriptions are 10-30 characters, far below LLM-optimized 50-200 char baseline. 'Get resource L0 abstract' and '全文内容搜索' lack context on when to use each tool vs alternatives, prerequisites, and return structure.
No output schemas documented. Tools return JSON strings or plain text, but LLMs cannot predict field names, types, or structure. E.g., openviking_find returns [{uri, score, preview}] but this is inferred from code, not declared.
Parameter descriptions lack format constraints and use-case guidance. 'query' and 'pattern' are ambiguous, do they accept regex, glob, or literal strings? What character limits apply? No guidance on when to use find vs grep.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Error handling returns raw exception strings ('Error: {e}') or JSON with bare 'error' field. No recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
No pagination support. openviking_find, openviking_glob, and openviking_grep return lists but lack offset/limit parameters and total_count in responses. Large result sets will blow context windows.