OpenContext
OpenContext MCP is a Model Context Protocol server that gives AI agents persistent, project-local markdown memory.
Save durable project knowledge, architectural decisions, conventions, API contracts, and debugging notes with
save_context.Store context as plain markdown files in
.opencontext/<topic>.mdinside the current project.Read a specific saved topic with
read_context.List all available topics by calling
read_contextwithout a topic.Overwrite existing context by saving to the same topic name.
Use topic names in lowercase snake_case or kebab-case (e.g.,
api_contractsorauth-rules).Keep memory project-specific based on the client's current working directory, with no database, account, or cloud sync.
Run over stdio with any MCP-compatible client, such as OpenCode, Cursor, or Claude Desktop.
Click on "Deploy 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., "@OpenContextsave our API conventions under topic api-contracts"
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.
Most coding agents lose critical decisions between sessions: architecture invariants, API contracts, rejected patterns, and setup quirks. OpenContext solves context loss through a lightweight Model Context Protocol (MCP) server that lets agents read and mutate durable markdown files inside .opencontext/.
No vector databases, no cloud subscriptions, and no hidden state. Memory is plain markdown tracked directly in Git.
Quickstart
Run the MCP server directly without installation via npx:
npx -y opencontext-mcp
One-Command Setup
Scaffold OpenContext in the current project interactively:
npx -y opencontext-mcp initinit walks you through the setup (enabling OpenCode and Claude Code integration) and generates everything you need:
.opencontext/— directory that holds your context topic files.opencontext.json— configuration templateopencode.json— MCP server entry for OpenCode.mcp.json— MCP server entry for Claude CodeAGENTS.md/CLAUDE.md— workflow reminders for your agents
The init command takes no arguments: it always runs in the current directory, prompts interactively, and never overwrites an existing config.
Client Setup
OpenCode
Add OpenContext to your project MCP configuration (opencode.json) — or let opencontext-mcp init do it for you:
{
"mcp": {
"opencontext": {
"type": "local",
"command": ["npx", "-y", "opencontext-mcp"],
"enabled": true
}
}
}
Cursor / Claude Desktop / Windsurf
Add OpenContext to your MCP settings file (claude_desktop_config.json or Cursor MCP settings):
{
"mcpServers": {
"opencontext": {
"command": "npx",
"args": ["-y", "opencontext-mcp"]
}
}
}
Remote Access (HTTP)
Expose the MCP server over the network with the Streamable HTTP transport. The endpoint URL is printed to stderr on startup.
# Plain HTTP on 127.0.0.1:3032 (default)
opencontext-mcp --http
# Custom port / bind to all interfaces
opencontext-mcp server --http --port 8787 --host 0.0.0.0The server listens at http://<host>:<port>/mcp (stateless Streamable HTTP — one request at a time, no sessions). GET / returns basic server info, handy for a browser health check.
Core Tools
Tool | Parameters | Description |
|
| Reads a specific context topic, or returns the lightweight topic index (~100 tokens) if omitted. |
|
| Writes or mutates markdown memory inside |
|
| Removes an obsolete topic file and automatically rebuilds the topic index. |
ADR Lifecycle & Frontmatter
Topics support optional YAML frontmatter to track lifecycle status — useful when architectural decisions evolve and old context should be visible but clearly flagged as outdated.
---
description: OAuth2 + PKCE authentication flow
status: active
supersedes: auth_v1
---
# Authentication v2
Migrated from JWT to OAuth2 with PKCE.Supported frontmatter keys:
Key | Values | Description |
| string | Short summary used in the auto-generated index. |
|
| Lifecycle status. Defaults to |
| string | Topic name this topic replaces (set on the newer topic). |
| string | Topic name that replaced this one (set on the older topic). |
Non-active topics automatically receive [DEPRECATED] or [SUPERSEDED] badges in the auto-generated index.md, along with cross-references showing which topic replaced or was replaced.
Agent Workflows
Instruct your agents to automatically leverage project context. Add this snippet to your .cursorrules, CLAUDE.md, or system prompt:
Before making structural code changes, run `read_context` to inspect existing project topics and architectural decisions.
Whenever a new architectural convention, database schema, or API rule is established or refactored, call `save_context` with a concise, topic-scoped markdown summary. Use YAML frontmatter (status, supersedes) when updating conventions to track lifecycle changes.
When a topic becomes obsolete, call `delete_context` to remove it. For deprecated topics that should remain visible, set status: deprecated or status: superseded in the frontmatter instead of deleting.Configuration
Customize storage paths and security boundaries with an optional .opencontext.json file in your repository root (plain JSON — comments are not supported):
{
"path": ".opencontext",
"readOnly": false,
"autoIndex": true,
"guard": {
"enabled": true,
"maxFileSizeKb": 50,
"strictPatternCheck": true
}
}Local Development
# Clone and install dependencies
git clone [https://github.com/slxca/opencontext.git](https://github.com/slxca/opencontext.git)
cd opencontext
pnpm install
# Build & run tests
pnpm build
pnpm test
Documentation
For advanced setup guides, guard parameters, and agent prompt templates, visit opencntx.dev/docs.
Contributing
Contributions are welcome. Please ensure all unit tests and typechecks pass before submitting a pull request:
pnpm typecheck && pnpm test
Available Tools
2 toolsread_contextRead ContextA
Read a saved OpenContext topic, or list all available topics when no topic is provided.
Inputs: topic.
save_contextSave ContextA
Persist markdown project context, architectural rules, or decisions into .opencontext/.md in the current working directory.
Inputs: topic (required), content (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one writes/persists context and the other reads/lists context. There is no overlap or ambiguity between them.
Both tools follow a consistent verb_noun pattern: save_context and read_context. The naming is predictable and clear.
With only two tools, the server is minimal but appropriately scoped for persisting and reading context files. It is slightly thin, but each tool serves a distinct and necessary function.
The core save/read workflow is covered, including listing topics via read_context when no topic is provided. An explicit delete/update tool is missing, but saving can overwrite existing context, so this is a minor gap.
Maintenance
Related MCP Connectors
Shared project context for AI agents and teams: docs, tasks, and messages that stay current.
Personal context for every AI: search, read, and write back to your private Markdown library.
Securely search and manage workspace context files for AI agents and teams.
Project memory, documentation and controlled secret access for AI coding agents.
Related MCP Servers
- FlicenseAqualityBmaintenanceNode.js server implementing Model Context Protocol (MCP) for filesystem operations.70141,355,927 npm91,812-
- AlicenseAqualityDmaintenanceEnables AI assistants to maintain persistent project context across sessions by storing and retrieving structured information in markdown files organized in a memory bank directory.457Apache 2.0
- AlicenseAqualityDmaintenanceEnables AI coding agents to persist structured long-term memory (gotchas, architecture, API notes) in a .context folder and sync across devices and agents via Git.410 npm20MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding assistants to store and retrieve project-aware context as plain Markdown files locally, with no cloud or vector database required.1MIT