MCP
A memory server for Cursor, Claude and Codex
The module is fluctlightdb.mcp_server. On main, memory_remember calls checkpoint() after it flushes the turn. A second process then recalled the sentence. That fix is not in the published package yet. It ships in the next release. The server process itself still does not start on the mcp 2.x the extra resolved to.
Tools the module registers
These names are the functions decorated in mcp_server.py . With mcp pinned below 2 they were present on the server object run() builds. They were not all called, and the process was not left listening.
- memory_remember, memory_recall, memory_resolve, memory_consolidate, memory_observe_tool
- fluctlight_status, fluctlight_recall, fluctlight_remember, fluctlight_handoff, fluctlight_list_handoffs, fluctlight_session_context
How the assistants are pointed at it
The re-run used the install on the integrations index : main, subdirectory sdks/python, with the native and mcp extras among the others. The line below is the published package, and it does not include the checkpoint yet. fluctlight-project renders a config from the templates in the package. On Linux and macOS the command is the python3 it finds, and the arguments are ["-m", "fluctlightdb.mcp_server"]. Cursor and Codex get an mcp.json. Claude gets the same server merged into its settings. Each sets FLUCTLIGHT_AGENT to its own name. On the mcp 2.x that extra resolved to, that process does not start.
Published package. The checkpoint fix is not in it yet.
pip install "fluctlightdb[native,mcp]" Shape of the Cursor and Codex template, after the placeholders are filled
{
"mcpServers": {
"fluctlight": {
"command": "python3",
"args": ["-m", "fluctlightdb.mcp_server"],
"env": { "FLUCTLIGHT_AGENT": "cursor" }
}
}
} Remember, then recall in a new process
memory_remember opens a brain, pushes the text, flushes the turn, and calls checkpoint(). memory_recall opens its own brain. The two calls below were separate interpreters on the same FLUCTLIGHT_BRAIN_PATH, after the directory had been created. The second printed one episodic hit. The id and the score change between runs, so they are not printed. The content, the verified flag and the lane are.
First process. Run from main.
import os
os.environ["FLUCTLIGHT_BRAIN_PATH"] = "./mcp-brain"
os.makedirs("./mcp-brain", exist_ok=True)
from fluctlightdb.mcp_server import memory_remember
print(memory_remember("Keep the primary CTA disabled")) Printed
{
"stored": true,
"flush": {
"committed": 1,
"turn_id": 1
}
} Second process, same directory.
import json
import os
os.environ["FLUCTLIGHT_BRAIN_PATH"] = "./mcp-brain"
from fluctlightdb.mcp_server import memory_recall
payload = json.loads(memory_recall("primary CTA"))
for hit in payload["hits"]:
print(hit["content"], hit["verified"], hit["lane"])
print(payload["mode"], payload["lanes_used"]) Printed
Keep the primary CTA disabled False episodic
episodic ['episodic']