An MCP server for a project-aware AI agent with memory, skills, and file manipulation tools
Three tools with well-structured schemas and detailed descriptions. memory_recall and memory_remember have comprehensive, LLM-optimized descriptions (200+ chars) with clear use cases and constraints. Schemas are valid JSON Schema with proper oneOf constraints. However, the Skill tool has minimal description (single sentence, ~90 chars) and trivial schema (only 'name' param). All tools lack explicit error handling guidance, output schema documentation, and parameter validation rules. No tool declares permissions or security boundaries. The server appears to be STDIO-only (no HTTP/SSE transport detected in source), which is a hard cap at 50 for protocol readiness.
Fetch the instructions for a skill listed in the Available skills section. Returns the skill's Markdown body; follow its steps for the current task. Call this when the user's request matches a skill's description.
Fetch the full content of a project-memory (M) entry by name, or search entries by query. The M-index injected at prompt-start gives you the name + tagline of every active entry; use this when you need the full rationale. - With 'name': returns exactly one entry and bumps its recall_count (keeps the decay-score forgetter from staling it). - With 'query': returns all entries whose tagline or tags contain the substring (case-insensitive). Recall count is NOT bumped — this is a search, not a recall. Do NOT use both 'name' and 'query' in the same call.
Save a durable project lesson, design decision, or discovered constraint to project memory (M layer). Requires user approval per call (inline y/N prompt). Use this for knowledge that will help future sessions in this project: - Design decisions and their rationale ("chose JSONL over protobuf for session storage because...") - Reusable lessons from bugs you already fixed ("when using write-tmp-rename, always f.Sync() before f.Close()") - Non-obvious constraints discovered during development ("this API has a rate limit of 10 req/s") - Recurring patterns the project follows ("tests use behaviour comparison, not golden files") Do NOT use M as a bug tracker or todo list: - If you discover a bug, fix it first, then record the reusable lesson (not the bug itself) - Do not create entries like "X is broken" or "need to implement Y" — those are transient - Use memory_archive when a lesson becomes outdated (superseded by a newer decision) Re-calling with the same name updates the existing entry.
Skill tool has minimal description (single sentence, ~90 chars). LLMs cannot determine when to invoke it vs other tools without richer context about skill discovery, prerequisites, or expected outcomes.
No output schema documentation for any tool. memory_recall returns JSON Entry objects; memory_remember returns confirmation/error strings; Skill returns Markdown. LLMs need explicit field definitions to plan downstream calls and extract data reliably.
Error handling lacks recovery guidance. memory_recall returns bare 'no entry named X' or 'no entries matching Y' without suggesting next steps (e.g., 'Try searching with a broader query' or 'Call memory_remember to create this entry'). Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No permission gates or scope declarations. memory_remember modifies state (writes to project memory) but lacks user approval flow documentation or permission checks visible in the tool definition. The code references permission.Policy but tool schema does not expose approval mechanism.
Skill tool naming is generic. 'Skill' does not follow verb_noun convention (e.g., 'get_skill', 'fetch_skill_instructions'). Name alone does not convey action; LLMs must read description to understand it retrieves skill Markdown.