ContextForge
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ContextForgeCompose task pack for 'fix-login-redirect' with component:api-gateway"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ContextForge
A local MCP server for managing engineering context across Components, Repos, Tasks, and Governance entities.
Built for the cross-repo reality: a single task touches the UI repo + the API repo + the gateway + external service X + database Y. ContextForge lets you capture reusable context once and compose it per-task, with typed relationships and cross-cutting guidelines.
Model
Component — a coherent unit of functionality. Kinds:
system | service | api | database | library | tool. Can declare ausesdependency graph over other components.Repo — a codebase. Optionally belongs to a parent Component (e.g.
gateway-proxy-repo → component:api-gateway).Task — a transient unit of work that composes context by linking specific Component/Repo/Governance refs. Can carry
external_refsto Jira/GitLab/Confluence/etc.Governance — reusable cross-cutting guidelines (security policy, API design standards, user prefs, branding). Any other entity can reference them; they cascade into task packs automatically.
Ref grammar: type:slug (entity) or type:slug/subtopic (one document within an entity).
Examples: component:api-gateway, component:api-gateway/auth, repo:ui-repo/testing, task:fix-login-redirect, governance:security-policy/data-handling.
Related MCP server: Codebase Graph MCP Server
Storage
All data lives under ~/.contextforge/ (override with CONTEXTFORGE_HOME):
~/.contextforge/
components/{slug}/_meta.md, {subtopic}.md
repos/{slug}/_meta.md, {subtopic}.md
tasks/{slug}/_meta.md, {subtopic}.md
governance/{slug}/_meta.md, {subtopic}.md
.index/contextforge.db # SQLite + FTS5, rebuildable via `reindex`
config.json # always_include refs + workspace bindings
logs/contextforge.log # persistent usage + debug (rotating)Markdown files are the source of truth. The SQLite index is derived — if it drifts, call reindex.
Storage opens one SQLite connection per thread (threading.local()) with PRAGMA journal_mode=WAL so FastMCP's worker threads can each call in safely. This is load-bearing — don't cache a Connection on the instance or remove the WAL pragma.
New entities get scaffolded subtopics:
Components:
overview.md,auth.md,integration.md,gotchas.mdRepos:
overview.md,style.md,testing.md,local-dev.mdTasks:
goal.md,plan.md,notes.mdGovernance:
overview.md,rules.md
Delete the ones you don't want.
Install & run
uv is the expected package manager (install via brew install uv or Astral's installer).
cd /path/to/context-forge
uv sync
uv run contextforge # stdio MCP serverTests (pytest is a dev dependency):
uv sync
uv run pytestBehind an SSL-inspecting proxy? If
uv syncfails withinvalid peer certificate: UnknownIssuer, add--system-certsto theuvcommands (orexport UV_SYSTEM_CERTS=1).
Logs go to stderr and to ~/.contextforge/logs/contextforge.log (rotating text file, on by default). The file is the durable record for usage analysis and trials.
Default level is INFO (pack assembly summaries, creates, links, governance, resolves, etc.). Set CONTEXTFORGE_LOG_LEVEL=DEBUG for full FTS scoring breakdowns per entity — useful for tuning per_entity_top_k and min_score.
Use the tail_logs(n) tool to inspect recent activity from inside the MCP.
For development / dogfooding where you want the same events written to a second location (e.g. inside the source repo so logs travel with the checkout), set:
CONTEXTFORGE_DEV_LOG_DIR=/path/to/desired/dir(recommended), orCONTEXTFORGE_LOG_FILE=/path/to/specific.log
You get both the normal home log and the extra location.
Wire into Cursor
Install it globally, not per-project. ContextForge is a single global store
(~/.contextforge/) meant to serve every repo you work in. The --directory
below only tells uv where this server's code lives — the running server reads
~/.contextforge/ regardless of which workspace is open, so you never need to add
the context-forge folder to your other repos. Wire it once, globally, and it's
available everywhere.
1. Register the MCP server globally
Add it to your global Cursor MCP config (~/.cursor/mcp.json, or your
mcp-manager proxy config if you use one), replacing the placeholder with this
repo's path on your machine:
{
"mcpServers": {
"contextforge": {
"command": "uv",
"args": ["run", "--directory", "/ABSOLUTE/PATH/TO/context-forge", "contextforge"]
}
}
}Behind an SSL-inspecting proxy, add "--system-certs" as the first entry in args,
or set UV_SYSTEM_CERTS=1 on the server's env. Restart Cursor (or toggle the
server under Settings → MCP) and confirm the contextforge tools appear.
A project-scoped .cursor/mcp.json is also committed in this repo, but it only activates when this repo is the open workspace — fine for hacking on ContextForge itself, not for using it across your work.
2. Make the router rule global too
The MCP registration gives the agent the tools; the .cursor/rules/contextforge-router.mdc rule gives it the behavior (when to recall and capture context proactively). A rule that lives only in this repo won't apply in your other repos — so it must be global as well. Two equivalent options:
Symlink the rule into your global Cursor rules location (single source of truth — edits here propagate automatically). On Windows this needs Developer Mode or an elevated
mklink.Copy the rule into your global Cursor rules location (more portable; re-copy after edits).
Either way the rule is alwaysApply: true, so once it's global it's in context for
every session — that's what lets the agent use ContextForge without being told to.
Tools
Entity management
create_component(slug, description?, kind?, aliases?, uses?, governance?)create_repo(slug, description?, component?, aliases?, governance?)create_task(slug, description?, aliases?, governance?)create_governance(slug, description?, aliases?)list_components(kind?),list_repos(),list_tasks(),list_governance_entities()delete_entity(ref)— destructive, cascades
Context CRUD
get_context(ref)— entity or single subtopicupsert_context(ref, content)— create/overwriteappend_context(ref, content)— append (creates if missing)delete_context(ref)— delete subtopic
Aliases + resolution
add_alias(ref, alias)— globally unique nicknamesremove_alias(ref, alias)resolve_ref(query, type_filter?)— fuzzy lookup against slugs/aliases/names
Task composition
link_task(task_slug, refs)/unlink_task(task_slug, refs)get_task_pack(task_slug, include_always?, focus?, per_entity_top_k?, min_score?)— assembled pack (task + governance + links). Withfocus=True(default), entity-level refs with more subtopics thanper_entity_top_k(default 3) are FTS-narrowed against the task's description + notes — only the most relevant subtopics are included. Filtered refs are listed indroppedso the agent can pull them on demand. Passfocus=Falseto get the full unfiltered pack.suggest_task_links(task_slug, anchors?, depth?, top_k?)— graph + FTS suggestions
Governance
add_governance(ref, governance_ref)— attach guideline to component/repo/taskremove_governance(ref, governance_ref)
External refs (Jira/GitLab/Confluence/etc.)
add_external_ref(task_slug, system, id, url?)remove_external_ref(task_slug, system, id)
Imported content (from Confluence, Jira, GitLab, etc. via other MCPs in Cursor)
import_content(ref, content, source_url, source_name?)— store snapshot with source trackingrefresh_source(ref)— return the source_url so the caller can re-fetchlist_stale_sources(older_than_iso)
Search + config
search(query, entity_type?, limit?)— FTS5get_config()add_always_include(ref)/remove_always_include(ref)— refs auto-included in every task packbind_workspace(path, repo_slug)/unbind_workspace(path)/get_current_workspace(path)
Maintenance
reindex()— rebuild SQLite from disktail_logs(n=50)— recent lines from the persistent log (for usage inspection)
Resources
context://component/{slug}/context://repo/{slug}/context://task/{slug}/context://governance/{slug}— full entity as markdowncontext://{type}/{slug}/{subtopic}— single subtopicpack://task/{slug}— assembled task pack (separate scheme avoids colliding withtask/{slug}/{subtopic})
Smoke test
After wiring it into Cursor, ask the agent to run these (or call them from the MCP panel):
create_component(slug="api-gateway", kind="system", description="Our edge proxy")upsert_context(ref="component:api-gateway/auth", content="OAuth2 with PKCE; tokens rotate hourly.")create_governance(slug="security-policy", description="Company-wide security baseline")add_governance(ref="component:api-gateway", governance_ref="governance:security-policy")create_task(slug="demo-task", description="Kicking the tires")link_task(task_slug="demo-task", refs=["component:api-gateway/auth"])get_task_pack(task_slug="demo-task")— you should see the auth subtopic AND the security-policy content (cascaded through the governance link on the component).
License
MIT. Runtime deps are permissive (MIT/BSD/Apache-2.0) — no copyleft.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.Last updated
- Alicense-qualityDmaintenanceA comprehensive MCP server that provides a graph database for tracking software codebase components, their relationships, and associated tasks/goals.Last updated1MIT
- Alicense-qualityAmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.Last updated1,014MIT
- Alicense-qualityCmaintenanceA local MCP server for managing engineering context across Components, Repos, Tasks, and Governance entities, enabling cross-repo context composition and reuse.Last updatedMIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
MCP Spec Compliance MCP — audits any MCP server.json against the official Model Context Protocol
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/srmackey/context-forge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server