celesto
Secure and persistent computer for AI agents
Stop re-explaining your project to Claude every session. ContextForge adds persistent memory to Claude Code, Cursor, and Copilot via MCP. Free tier, 3-minute setup.
Developer toolsTypeScript · JavaScriptGitHub @alfredoizdevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Persistent memory MCP server for Claude Code, Cursor, and GitHub Copilot. Long-term memory via Model Context Protocol with semantic search, Git sync, and team collaboration.
Loading the full README.
Read the full README ↗Give Claude Code, Cursor, and GitHub Copilot persistent memory across sessions via the Model Context Protocol (MCP). Stop re-explaining your project every time.
ContextForge MCP is an open-source MCP server that connects your AI coding assistants to long-term, searchable memory. Decisions, architecture notes, debugging context, and project knowledge stay available across every session — across every tool that supports MCP.
[!NOTE] Works automatically, no config needed (v0.5.1+). On connect, the server sends startup instructions to your AI client. Clients that honor them (Claude Desktop, Claude Code) load your project memory at the start of every session and save new decisions proactively — without you editing any settings. Running
init(Step 4) is now a reinforcement, not a requirement, and still helps on clients that don't yet honor server instructions (e.g. Cursor).
No install step needed — the setup below runs the server via npx -y contextforge-mcp, which fetches it on demand and keeps it up to date.
Prefer a global install for slightly faster cold starts?
npm install -g contextforge-mcpis optional; if you do it, you can drop thenpx -yprefix from the commands below.
cf_)Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"contextforge": {
"command": "npx",
"args": ["-y", "contextforge-mcp"],
"env": {
"CONTEXTFORGE_API_KEY": "your-api-key-here"
}
}
}
}
Restart Claude Desktop.
claude mcp add contextforge -s user \
-e CONTEXTFORGE_API_KEY=your-api-key-here \
-- npx -y contextforge-mcp
Restart Claude Code and run /mcp to verify it's connected.
Add to your Cursor MCP settings:
{
"mcpServers": {
"contextforge": {
"command": "npx",
"args": ["-y", "contextforge-mcp"],
"env": {
"CONTEXTFORGE_API_KEY": "your-api-key-here"
}
}
}
}
Add to your Copilot MCP config:
{
"servers": {
"contextforge": {
"command": "npx",
"args": ["-y", "contextforge-mcp"],
"env": {
"CONTEXTFORGE_API_KEY": "your-api-key-here"
}
}
}
}
With v0.5.1+ the server auto-loads memory on supporting clients (see the note at the top), so this step is optional but recommended: it reinforces the behavior, covers clients that don't honor server instructions, and fully overrides the built-in file-based memory.
Set up your project so your AI editor always prefers ContextForge memory:
npx contextforge-mcp init
By default, init auto-detects which editor your project uses and writes three rule sections and two hooks:
SessionStart hook with matcher compact in .claude/settings.json. When Claude Code compacts a long conversation, the hook runs npx -y contextforge-mcp recall and re-injects the session objective, memories relevant to what you are working on, your project's 10 most recent memories and pending tasks, so decisions saved in ContextForge survive the summary.UserPromptSubmit hook that runs the generated script .claude/hooks/contextforge-objective.cjs with plain node (~50 ms). It records your prompts to ~/.contextforge-mcp/sessions/<session_id>.jsonl on your machine, so recall can put the session's objective back after a compaction. The log is pruned after 14 days and never uploaded; see the privacy note below for what recall sends.Files written:
CLAUDE.md for Claude Code (signals: existing CLAUDE.md or .claude/ directory).cursorrules for Cursor (signals: existing .cursorrules or .cursor/ directory).claude/settings.json for Claude Code — merged, never overwritten; only the two ContextForge hook groups are added.claude/hooks/contextforge-objective.cjs for Claude Code — the generated objective hook script (safe to commit; refreshed by init when a new version ships; Claude Code's own system turns — prompts that start with an XML-like tag and contain a closing tag — are not logged)If no editor is detected, both files are generated.
This is the beginning of the README. Read the rest at the original. Read the full README ↗