MCP server providing diary search, memory search, and web search tools with support for both public and internal endpoints with different authentication schemes
The server defines 3 tools with explicit schemas and descriptions. All tools have clear input schemas with typed properties and descriptions. However, there are significant gaps in schema completeness, output documentation, and error guidance. Tool naming is acceptable but could be more specific (verb_noun pattern). Descriptions are present but vary in quality and could be more optimized for LLM decision-making. Output schemas are not documented, LLMs cannot see what fields are returned. Error handling is minimal with no recovery guidance. The code shows proper tool registration with mcp.Tool objects, but lacks idempotent/destructive hints and structured output patterns.
根据关键词和可选的时间范围搜索用户的日记内容。此工具支持从数据库拉取并解密原始文字内容。
搜索用户的记忆信息,包括日记、人生图谱、中期记忆(AI 总结的重要事件)和短期记忆上下文(最近的对话记录)。此工具综合了向量检索和对话历史,提供全面的记忆检索能力。
Performs web search using configurable search providers (Google, Serper, or Bocha)
Output schemas not documented for any tool. LLMs cannot see what fields are returned, forcing downstream lookup calls and context loss.
Tool descriptions are generic and lack LLM decision-making context. No explanation of when to choose diarySearch vs memorySearch vs web_search, no prerequisites or result format guidance.
Integer parameters (maxResults) lack minimum/maximum bounds. Unbounded numbers let LLMs pass absurd values (negative, millions) that break service logic or cause timeouts.
No error handling guidance visible. Error responses do not tell LLMs what to do next (retry, ask user, fallback). Raw error codes or gRPC errors provide no actionable recovery path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 56 | 2024-11-05+ | v1 |
Tool naming inconsistency: all tools use lowercase camelCase (diarySearch, memorySearch, web_search). Go convention and MCP best practice use PascalCase or snake_case for clarity (DiarySearch, diary_search).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. While all tools are read-only, the mcp.Tool struct does not declare ReadOnly=true for client optimization.
Secret handling: apiKey is extracted from context and passed to gRPC service. While not exposed as a tool parameter (good), context extraction assumes proper authentication middleware. Missing: explicit audit trail logging of who accessed which diaries/memories.