Local MCP server for recalling past code, commits, and AI conversations — search-only, no local LLM required
fridai exposes 2 tools with clear, detailed descriptions (194 - 250 chars each) that explain WHEN to use them and what they return. Both tools have complete input schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are free-text strings rather than structured objects. Error handling is present but minimal (empty index, empty note). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tool names are verb-noun (recall, remember) and unambiguous. Parameter descriptions are actionable (e.g., 'e.g. 7d, 24h, 2w' for since). Overall: solid definitions with room for structured output and richer error guidance.
Recall the developer's past code, commits, AI conversations, and saved notes — with sources (personal coding memory). **For questions that recall past work, call this BEFORE grepping code/git history:** "how did I do/fix this before", a recurring error's past solution, the rationale behind an implementation (why it was done this way). Native code/git search only sees the current state; this tool also holds *past attempts, conversations, and reasons*. Answer grounded in the returned sources; if insufficient, then supplement with code/git search. If nothing is found, say so. Effective queries: include relevant English identifiers/technical terms (functions/variables/error codes, e.g. login, auth, token, 401, mount) even if the user's question is in another language. Prefer key terms over long sentences. If results are weak, retry with synonyms/related terms. (The index mixes natural-language conversations with English code.) Scope (repo): empty = current working repo (default). Use repo="all" for cross-repo, or repo="<name>" for a specific repo. source_type (empty = all): agent_turn | code | commit | note. since (empty = all time): limit to recent memory, e.g. "7d", "24h", "2w".
Save a durable memory note to the developer's personal coding memory (retrievable later via `recall`). **Call this when something is worth remembering across sessions:** a decision and its rationale (why an approach was chosen over alternatives), a non-obvious gotcha or constraint, or a fix for a recurring problem. Prefer distilled, self-contained notes over raw transcript — write what a future session would need to know, including the *why*. This writes to persistent storage, so only save things genuinely worth keeping (not transient status). Scope (repo): empty = the current working repo (default, so `recall` finds it there); repo="<name>" pins it to a specific repo.
Output schemas not formally documented. Both tools return free-text strings; LLMs cannot parse structured fields or plan downstream calls. recall returns formatted text with citations, but no schema declares the structure (e.g., list of results with title, source_type, text fields).
No tool annotations. Neither tool declares readOnlyHint (recall is read-only, remember is destructive/write). LLMs cannot infer safety properties and may incorrectly retry or compose tools.
Error handling is minimal. Empty index and empty note return plain strings; no guidance on recovery (e.g., 'run fridai index' is mentioned but not actionable for an LLM). No error classification (retryable vs. fatal).
Parameter 'k' (recall) lacks bounds. Unbounded integer could allow LLMs to request 1000+ results, wasting tokens and context. Should specify min=1, max=50 or similar.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No pagination support. recall returns up to k results but does not offer offset/limit or next_cursor for large result sets. If index grows, LLMs cannot iterate through results efficiently.