Contextforge MCP server
Persistent memory MCP server for Claude Code, Cursor, and GitHub Copilot.
2 stars59 downloads/wk
Reviews
Write oneNobody has reviewed Contextforge yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Contextforge tools (69, 25 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
collaborators_listList collaborators on a shared project. Shows who has access and what tasks are assigned to them.
memory_check_freshnessCheck whether memories linked to git-tracked code (via `related_paths` on memory_ingest) are stale because the underlying code changed since they were saved. Compares each candidate's saved commit SHA against the current HEAD with a local `git diff` — no data leaves your machine for the diff itself. Returns up to 3 memories whose related files changed, so you can review and refresh them. Call this
memory_confirmConfirm that a memory flagged by memory_check_freshness is still accurate, even though its related code changed. Updates the memory's confirmed timestamp so it won't be flagged again until the code changes further.
memory_correctwrite actionUpdate a memory flagged by memory_check_freshness with corrected content after its related code changed. Replaces the stored content and refreshes the git context (current commit SHA) so future freshness checks compare against the new baseline. For a general edit to any memory that is NOT part of a freshness check, use memory_update instead.
memory_create_projectwrite actionCreate a new project to organize related spaces
memory_create_spacewrite actionCreate a new memory space (workspace) for organizing knowledge
memory_current_project**Check the linked project at the start of every new conversation in a directory.** Call this FIRST (alongside memory_query) before answering questions about the user's project, code, or work — it tells you which ContextForge project and spaces are scoped to the current working directory. If `linked: false`, surface that to the user and suggest `memory_link_project`. Pair this with memory_query as
memory_deletewrite actionDelete a knowledge item from memory by ID or title
memory_delete_batchwrite actionDelete multiple items from memory based on filters. Use dry_run=true first to preview what will be deleted.
memory_delete_projectwrite actionDelete a project and all its spaces permanently. This will delete all spaces and their items within the project. This action cannot be undone.
memory_delete_spacewrite actionDelete a space and all its items permanently. This action cannot be undone.
memory_exportExport all items from a space to JSON, Markdown, or CSV format
memory_forgetwrite actionDelete a memory flagged by memory_check_freshness that is no longer relevant or accurate. Use this instead of memory_delete when acting directly on a freshness check result.
memory_get_itemGet the full content of a knowledge item by its ID. Use this when memory_query returns truncated previews and you need the complete content.
memory_git_activateActivate or deactivate a connected repository webhook after setup
memory_git_commitsList commits stored in memory from connected repositories
memory_git_connectConnect a GitHub repository to automatically sync commits and PRs to memory
memory_git_disconnectDisconnect a GitHub repository and stop syncing
memory_git_listList all connected GitHub repositories
memory_git_prsList pull requests stored in memory from connected repositories
memory_git_syncSync existing commits and PRs from a connected GitHub repository into memory
memory_helpShow help and usage instructions for ContextForge memory commands
memory_importImport items from JSON, Markdown, Notion, or Obsidian format into a space
memory_ingest**Save important context to persistent memory — be proactive.** Call this WHENEVER you learn information that would be valuable in a future conversation: project decisions ('we chose Postgres because X'), architectural choices, user preferences, debugging insights, recurring patterns, deadlines, stakeholder context, or any 'remember this' / 'save this' / 'note that' style request from the user. He
memory_ingest_batchAdd multiple items to memory in a single operation. More efficient than multiple single ingests.
memory_link_projectLink the current directory to a ContextForge project. When linked, all queries will be automatically filtered to only search within that project's spaces. This creates a .contextforge file in the current directory.
memory_list_itemsList all items stored in memory. Shows titles, previews, tags, and creation dates.
memory_list_projectsList all projects. Projects contain multiple spaces for organizing knowledge by project.
memory_list_relationshipsList all relationships for a knowledge item, showing both incoming and outgoing connections with related item details
memory_list_spacesList knowledge spaces (workspaces). By default shows only knowledge spaces. Use space_type "git" for GitHub repos, or "all" to see everything.
memory_move_itemMove a knowledge item to a different space (organizes memory by topic). Identify the item by id or a title substring, and give the target space by name or UUID. Cross-project moves within your org are allowed.
memory_move_spaceMove a space to a different project
memory_query**Search persistent memory BEFORE answering any project-specific question.** You MUST call this tool: (a) at the start of any conversation that touches the user's codebase, work, or decisions, BEFORE generating any response; (b) whenever the user references prior context ('did we', 'we decided', 'remember', 'what did I save', 'last time'); (c) before making architectural or design recommendations
memory_relatewrite actionCreate a relationship between two knowledge items
memory_snapshot_createwrite actionCreate a snapshot (backup) of the current memory state
memory_snapshot_deletewrite actionDelete a snapshot
memory_snapshot_listList all available snapshots
memory_snapshot_restoreRestore memory to a previous snapshot state
memory_statsGet statistics about memory usage
memory_unlink_projectwrite actionRemove the project link from the current directory. This deletes the .contextforge file and queries will no longer be filtered by project.
memory_updatewrite actionEdit any saved memory's content (and optionally its title) by id — for general corrections, not tied to a freshness check. Regenerates the item's embedding so semantic search reflects the new content. Get the id from memory_query or memory_list_items. (For a memory flagged by memory_check_freshness after related code changed, use memory_correct instead.)
project_shareShare a project with a collaborator by email. Creates an invitation and returns the invite URL. An email notification may also be sent.
routines_createwrite actionCreate a new Routine. Schedules a Skill to run on a cron expression. Pass either schedule_preset (hourly/daily/weekly/monthly) OR a custom cron_expression. timezone defaults to UTC.
routines_deletewrite actionPermanently delete a Routine. Execution history rows are retained.
routines_getGet a single Routine by ID, including its cron expression, input_params, and last/next run.
routines_listList all Routines in a project. Returns routines with their schedule, last/next run, and enabled flag.
routines_run_nowwrite actionFire a Routine immediately, ahead of its schedule. Creates a skill_executions row with trigger_type=scheduled and routine_id set, just like the cron tick would.
routines_toggleEnable or disable a Routine without deleting it. Pass enabled=false to pause.
routines_updatewrite actionUpdate an existing Routine (name, schedule, timezone, input_params).
session_endEnd THIS session's live presence explicitly (it also ends automatically when the process exits or after the heartbeat TTL).
session_listList OTHER live Claude Code sessions working on the same project right now, and what each is focused on. By default it is scoped to THIS session's project (the one linked in the current directory) — that's where work actually collides. If the current directory isn't linked to a project, it falls back to the whole organization. Use it at conversation start and before big changes to avoid stepping o
session_updatewrite actionDeclare or update what THIS Claude Code session is currently working on (live presence). Call it when you start or switch tasks so parallel sessions can avoid stepping on your work. Example focus: 'working on the auth module'.
skills_createwrite actionCreate a new Skill in a project. The 'body' is a markdown prompt template that may use {{variable}} placeholders for input_params at run time.
skills_deletewrite actionDelete a Skill.
skills_getGet a single Skill by ID with full body.
skills_listList all Skills in a project. Returns skills with their name, description, model, and prompt body.
skills_runwrite actionExecute a Skill on the configured LLM, optionally storing the output as a knowledge_item, and returns the result. Available to all project members.
skills_updatewrite actionUpdate an existing Skill.
tasks_add_commentAdd a comment to a task. Accepts any task identifier: UUID, short_id, or task title. The response includes the task dashboard URL — always show it to the user.
tasks_assignAssign a task to a collaborator by their email address. Accepts any task identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.
tasks_createwrite actionCreate a new task in a project. Optionally assign it to a collaborator by their email. The response includes a dashboard URL — always show it to the user.
tasks_deletewrite actionPermanently delete a task. Accepts any identifier: UUID, short_id, or task title. Also deletes related comments, activity, and notifications.
tasks_list**Call this at the start of any conversation about work, planning, or status — and any time the user asks about pending/open/in-progress tasks.** Shows pending tasks by default (sort by due date, urgent first). Use status "all" for everything, "resolved" for completed, "in_progress" for active work. IMPORTANT: Every task includes a dashboard URL (🔗). You MUST include these clickable links when pr
tasks_list_commentsList comments on a task. Accepts any identifier: UUID, short_id, or task title.
tasks_resolveMark a task as "resolved". Use this when you finish working on a task. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.
tasks_resolve_by_nameResolve a task by searching for it by title, short_id, or UUID. Use this when you have any identifier for the task. The response includes a dashboard URL — always show it to the user.
tasks_startMark a task as "in_progress". Use this when you start working on a task. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.
tasks_updatewrite actionUpdate a task's title, description, status, priority, tags, due date, or assignee. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.
tasks_what_next**Call this whenever the user asks what they should work on, what's next, what's pending, or how to start the day.** Trigger phrases include: 'what should I do', 'where do I start', 'qué hago hoy', 'next task', 'I have time, what's open'. Returns the highest-priority unresolved task assigned to the user, with due date and priority. Always include the dashboard URL (🔗) in your reply so the user ca
Public scan report
scanner v0.1.9 · 2026-09-20 · same rubric, same numbers if you re-run it
- Code scan33 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 16 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Install directly
Runs npx -y contextforge-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add contextforge-mcp -- npx -y contextforge-mcp
Contextforge: common questions
- Is Contextforge MCP server safe?
- Mostly: it is graded B (83/100). Read the Contextforge safety report
- How do I install Contextforge?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Contextforge need an API key?
- Yes. The registry entry asks for
CONTEXTFORGE_API_KEY. - Is Contextforge maintained?
- The last commit was 16 days ago (2026-09-04). The latest release is v0.11.0.
- What can I use instead of Contextforge?
- Servers from other publishers that do the same job: GitHub MCP server, uploads.sh MCP server and Palinode MCP server. Compare all Contextforge alternatives.
Alternatives to Contextforge
Same job from other publishers: the closest match first, then the best rated.
- GitHubConnect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.not reviewedEstablishedA
uploads.shHost files from coding agents; stage on a branch and attach to GitHub PRs.not reviewedEstablishedA- PalinodeInspectable, correctable project memory in git-versioned Markdown for AI agents.not reviewedEstablishedC
- Agent HarnessesAgent-harness picks and decision guides; pick_infrastructure adds live GitHub/HN discovery.not reviewedGrowingA
- NexusmemLocal-first memory for AI coding agents: shell history with exit codes, git diffs, docs, MCP.not reviewedGrowingA