MCP integration
MemoryFirst exposes a Model Context Protocol (MCP) server. Any compatible client (Claude, ChatGPT, Cursor, LM Studio, your own agent) reads and writes your company's memory with your identity and verifiable citations. A local model without an MCP client can use it too: it receives the context as text.
Two ways to connect
Remote (recommended)
One HTTP endpoint for every client and every team member. Nothing to install; works from your phone and from claude.ai.
https://api.memoryfirst.ai/mcpLocal (stdio)
A process on your machine for clients that only speak stdio (older Claude Desktop, scripts). Same tools; MEMORYFIRST_API_URL, MEMORYFIRST_API_KEY and MEMORYFIRST_PROJECT variables.
npx @memoryfirst/mcp-serverAuthentication and identity
- API key: for scripts, CLIs and agents. Created in Settings → API keys. Sent as
Authorization: Bearer mf_live_… - OAuth: for people: the client opens the MemoryFirst sign-in screen, you log in with your account and every call is signed with your name and the AI that made it. No keys to copy.
- Team: every workspace member has a role: owner, member or viewer. A viewer can recall and query but not write. Events keep who wrote them (person and model).
Per-client setup
- Claude Code:
claude mcp add --transport http memoryfirst https://api.memoryfirst.ai/mcp --header "Authorization: Bearer mf_live_…" - claude.ai, Claude Desktop, Claude iOS: Settings → Connectors → Add custom connector with the URL above; sign-in happens over OAuth.
- ChatGPT: Settings → Connectors → Create with the URL above. Uses the connector's search and fetch tools on top of the mf_* ones.
- Cursor, VS Code, Windsurf: add to the MCP servers file:
{ "mcpServers": { "memoryfirst": { "url": "https://api.memoryfirst.ai/mcp", "headers": { "Authorization": "Bearer mf_live_…" } } } } - LM Studio, Open WebUI, Jan: any desktop client with MCP support uses the same URL and key; the model running on your machine reads and writes the company's memory.
- Custom agents: JSON-RPC 2.0 over HTTP (initialize, tools/list, tools/call), stateless. Any MCP SDK works.
Local models without an MCP client
Ollama, llama.cpp or any model that only takes a system prompt: request the project context already trimmed to a token budget and pass it in. Same state everyone else sees; the client changes, the memory doesn't.
# Project state as markdown, within the requested budget CONTEXT=$(curl -s "https://api.memoryfirst.ai/v1/brain/context?project=lexiel&max_tokens=3000" \ -H "Authorization: Bearer $MEMORYFIRST_API_KEY") ollama run llama3.1 --system "$CONTEXT"
In Claude Code this is already automated (context on start, session distilled into events on stop) with @memoryfirst/claude-hooks.
Tools
The same set remote and local; parity is checked by tests.
mf_recall· decisions, blockers, deploys and current state of a projectmf_query· natural-language question with citations; scoped by partition and document typemf_record· record a decision, blocker, deploy or customer contact; signed with your identity and your AImf_morning· the workspace's last 24 h, grouped by typemf_state· the project's current state (what is still in force, not the history)mf_skills· catalogue of skills compiled from repeated questions, and their SKILL.mdmf_assets· the workspace's asset and project registrysearch· search for the ChatGPT connectorfetch· one full event by id, for the ChatGPT connector
Verifiable citations
Every mf_query answer carries a spanRef per citation: page and box in documents, milliseconds in audio, event id in the brain. Your client renders them as links to the source.
{
"answer": "The contract scope is fixed-fee €4,500.",
"citations": [
{
"sourceType": "doc",
"spanRef": { "page": 3, "bbox": [120, 450, 380, 60] },
"snippet": "Fixed fee of €4,500 for the scope defined..."
},
{
"sourceType": "ops",
"spanRef": { "source": "brain.event:decision_taken:78048c2c-…", "eventId": "chunk:0" },
"snippet": "Decision (Jose, claude-code): fixed fee confirmed with the client on 12 May."
}
]
}Detailed schemas, error codes and per-plan limits live in the API reference. Missing something? Write to jose.diaz@memoryfirst.ai.