An MCP server implementation in Go that provides tool execution, file management, memory management, and integration with external MCP servers via SSE transport
PicoAide provides 7 tools with complete JSON schemas and descriptions. File operation tools (write_file, edit_file, append_file) have clear, actionable descriptions and proper parameter typing. However, descriptions are inconsistent in depth, some lack context on when to use them vs alternatives. The update_memory tool has a complex schema with nested objects and enums, but its description is in Chinese, creating accessibility issues. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite several tools being destructive (write_file with overwrite=true). Error handling guidance is absent, tools do not document recovery paths or validation constraints. Parameter descriptions are present but generic; e.g., 'File path relative to workspace' lacks format constraints or examples of valid paths.
Append content to a file. Creates the file if it does not exist.
Replace text in an existing file. Requires exact match of old_text and fails if multiple matches found.
Find files matching a glob pattern within the workspace.
List files and directories in a specified path with file sizes and types.
Read the contents of a file from the workspace.
主动更新长期记忆。用于记录重要决策、知识点、进度状态或用户偏好。数据会被合并到 MEMORY.md 或 USER.md
Write content to a file in the workspace. Supports creating new files or optionally overwriting existing ones.
update_memory description is in Chinese only, blocking non-Chinese-speaking LLMs and users from understanding tool purpose and parameters. Descriptions must be in English for international accessibility.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite write_file, edit_file, append_file being destructive. LLMs cannot distinguish safe reads from irreversible writes without explicit hints.
Error handling guidance absent. Tools do not document what errors are retryable, what user-fixable errors look like, or recovery paths. E.g., write_file with overwrite=false should explain 'File exists' error and suggest checking with list_dir first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Parameter descriptions lack format constraints and validation rules. 'File path relative to workspace' does not specify allowed characters, max length, or whether absolute paths are rejected. LLMs cannot validate input without explicit constraints.
update_memory schema is complex (nested objects, conditional fields) but lacks examples or dependency documentation. LLMs cannot infer which combinations of section/action/entries are valid without explicit guidance.