FusionAL-Recall
FusionAL Recall — Semantic Registry Search MCP
Recall wraps the FusionAL Solved-Issues Registry with semantic search, three-tier access control, and auto-migration.
Query your team's solved problems via MCP tools: recall() for semantic search, remember() to log new entries, list_recent() for recent issues, verify() to validate entry integrity.
Features
Semantic Search: Query by problem description, not keyword. "claude desktop timeout" returns SI-001 even if you don't say "timeout" or "claude" exactly.
Automatic Migration: Parse existing SOLVED-ISSUES.md markdown on first run; auto-assign SI-XXX IDs; populate SQLite.
Three-Tier Access:
personal(agent-only),project(team-scoped),public(shared community).Vector Storage: sentence-transformers + sqlite-vec for fast CPU-friendly embeddings.
MCP Tools:
recall(query, tier, limit),remember(symptoms, root_cause, fix, source, tags),list_recent(n),verify(si_id),get(si_id).
Related MCP server: recall-mcp
Architecture
SOLVED-ISSUES.md (markdown source)
↓
[Migrate on startup]
↓
SQLite + sqlite-vec (embeddings index)
↓
FastMCP Server (port 8107)
↓
[Tools]SQL Schema
CREATE TABLE issues (
si_id TEXT PRIMARY KEY, -- SI-001, SI-002, etc.
title TEXT NOT NULL, -- one-line summary
symptoms TEXT NOT NULL,
root_cause TEXT NOT NULL,
fix TEXT NOT NULL,
source TEXT, -- session/task context
tags TEXT, -- comma-separated
verified_at TEXT, -- YYYY-MM
created_at TEXT NOT NULL, -- ISO 8601
tier TEXT DEFAULT 'personal', -- personal, project, public
embedding BLOB NOT NULL -- float32 vec (float-serialized)
);Usage
Start the Server
python -m recall.server
# Listens on 0.0.0.0:8107On first run, the server:
Reads SOLVED-ISSUES.md (path from SOLVED_ISSUES_PATH env var)
Parses SI-XXX markdown blocks
Generates embeddings for symptoms + root_cause + fix (combined text)
Inserts into SQLite + sqlite-vec index
Auto-assigns next SI-ID based on highest existing ID
MCP Tools
recall(query: str, tier: str = "personal", limit: int = 5) → List[Issue]
Semantic search. Returns issues matching the query, ranked by embedding similarity.
# Query: "claude desktop timeout"
# Returns: SI-001 (Claude Desktop server timeout above 8 servers)
results = await client.call_tool(
name="recall",
arguments={"query": "claude desktop timeout", "tier": "personal", "limit": 5}
)remember(symptoms: str, root_cause: str, fix: str, source: str, tags: str) → Dict
Log a new issue. Returns the assigned SI-ID (e.g., SI-012).
result = await client.call_tool(
name="remember",
arguments={
"symptoms": "My symptoms here",
"root_cause": "Root cause",
"fix": "Steps to fix",
"source": "session context",
"tags": "tag1,tag2"
}
)
# Returns: {"si_id": "SI-012", "title": "...", "created_at": "..."}list_recent(n: int = 10) → List[Issue]
Return the N most recently added issues.
recent = await client.call_tool(
name="list_recent",
arguments={"n": 10}
)verify(si_id: str) → Dict
Check if an SI entry exists and is valid.
valid = await client.call_tool(
name="verify",
arguments={"si_id": "SI-001"}
)get(si_id: str) → Dict
Retrieve full entry by SI-ID.
entry = await client.call_tool(
name="get",
arguments={"si_id": "SI-001"}
)Deployment
Docker
docker build -t fusional-recall:latest .
docker run -p 8107:8107 \
-e SOLVED_ISSUES_PATH=/mnt/kb/05-RECALL/SOLVED-ISSUES.md \
-v /path/to/kb:/mnt/kb \
fusional-recall:latestDocker Compose
docker-compose up -d
# Recalls listens on localhost:8107
# recall.db volume persists embeddings across restartsTesting
pytest tests/ -vTests validate:
Migration: SOLVED-ISSUES.md parses correctly; all entries load into SQLite
Recall: Semantic search returns SI-001 for query "claude desktop timeout"
Remember: New entry is assigned SI-012, written to DB, queryable immediately
Verify: SI-001 exists and validates; SI-999 does not
Tier filtering: personal/project/public tiers are enforced
Environment Variables
Variable | Default | Purpose |
|
| MCP server bind address |
|
| MCP server port |
|
| SQLite database file |
|
| sentence-transformers model |
|
| Default access tier |
|
| Path to registry markdown |
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
MCP server for querying Forkast documentation
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLocal MCP server for indexing personal knowledge into SQLite with hybrid search, chunk-level citations, memory tools, and agent orchestration.4MIT
- FlicenseNot gradedqualityDmaintenancePersistent memory MCP server for AI coding agents. Stores, searches, and retrieves context across sessions using SQLite and FTS5.-
- AlicenseNot gradedqualityDmaintenancePersonal memory MCP server backed by SQLite FTS5 BM25 search with temporal reranking.11 npm1MIT
- AlicenseNot gradedqualityCmaintenanceSemantic memory server for AI agent teams. Stores, searches, and retrieves knowledge across sessions using pluggable vector backends with local ONNX embeddings, exposed as an MCP server.MIT