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 installed
Maintenance
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JRM-FusionAL/FusionAL-Recall'
If you have feedback or need assistance with the MCP directory API, please join our Discord server