Install script
One command configures every MCP client on your machine:Clients it configures
The server is registered as
senselab in each config, so it is easy to spot and easy to remove.
Options
Re-running the script is safe: it replaces its own entry and leaves the rest of your config alone.
Passing
--api-key installs amfs-mcp-server-pro. Without a key you get
amfs-mcp-server, which exposes only the SenseLab Open Source tools — no
rooms, negotiations, documents, or intelligence tools.Manual setup
If you would rather not run a script, or your client is not in the list above.Cursor
Add to.cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
Claude Code
Verify
Restart your IDE after saving the config. Ask the agent to runamfs_stats() — if it returns a response, you’re connected.
What Your Agents Get
Once connected, agents have around 78 tools across five categories. Theamfs-mcp-server package exposes 36 of them; amfs-mcp-server-pro adds the
rest. The most important ones:
Identity & Context
Read & Write
Agent Brain
Decision Traces
Timeline
Agent Identity
Agents should callamfs_set_identity at the start of every session:
If
amfs_set_identity isn’t called, the MCP server auto-detects identity from the IDE environment (cursor/<username>, claude-code/<username>).
SenseLab Skill
Agents use memory well when they are told when to reach for it. This skill covers the full session lifecycle — set identity, get briefed, read and write, commit the outcome — and, most importantly, tells the agent to search memory before answering any question about what it knows or remembers.On Claude Code the install script writes a short version of this to
~/.claude/skills/senselab-memory/SKILL.md, and the same guidance into
~/.claude/CLAUDE.md and ~/.codex/AGENTS.md. The version below is the fuller
one — it adds the naming, memory-type, and confidence conventions. Paste it
over the installed file, or copy it in by hand on other clients.How Knowledge Compounds
Pinning a Version
To pin to a specific MCP server version, put the version in the package argument and drop--refresh — the whole point of that flag is to pick up newer
builds:
