Project memory for Claude: decisions, pipelines, and constraints across conversations.
{
"mcpServers": {
"io-github-jarmstrong158-context-keeper": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Project memory for Claude: decisions, pipelines, and constraints across conversations.
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
License not specified.
Is it maintained?
Commit history unknown.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Dynamic problem-solving through sequential thought chains
A Model Context Protocol server for searching and analyzing arXiv papers
An open-source AI agent that brings the power of Gemini directly into your terminal.
The official Python SDK for Model Context Protocol servers and clients
MCP Security Weekly
Get CVE alerts and security updates for io.github.jarmstrong158/context-keeper and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Project memory for Claude. Records design decisions, pipeline flows, and constraints so Claude maintains context across conversations.
As conversations get long, Claude loses the "why" behind earlier decisions. New conversations start blank. This causes Claude to make changes that break established patterns — like rewriting a pipeline step it doesn't remember exists.
Context Keeper gives Claude 8 tools to record and retrieve structured project context:
| Tool | Purpose |
|---|---|
record_decision | Save a decision with rationale and alternatives |
record_pipeline | Save a multi-step workflow with ordering |
record_constraint | Save a rule with scope and enforcement level |
get_context | Retrieve relevant entries by query, tags, scope, or ID |
get_project_summary | Compact overview for conversation start |
update_entry | Update any entry by ID |
deprecate_entry | Retire an entry with reason |
prune_stale | Find entries not verified recently |
get_compaction_report | Check if last compaction lost any context |
All data stored as human-editable JSON files in .context/ inside your project directory. Zero external dependencies.
pip install context-keeper
claude mcp add --scope user context-keeper -- python /path/to/context-keeper/server.py
Add to your claude_desktop_config.json:
{
"mcpServers": {
"context-keeper": {
"command": "python",
"args": ["/path/to/context-keeper/server.py"],
"env": {
"CONTEXT_KEEPER_PROJECT": "/path/to/your/project"
}
}
}
}
Set CONTEXT_KEEPER_PROJECT to the root of your project. If omitted, it uses the current working directory.
When you make a design decision:
You: Let's use JSON files instead of SQLite for storage.
Claude: [calls record_decision with summary, rationale, and alternatives]
When you establish a workflow:
You: The deploy pipeline is: run tests, build, push to registry, deploy.
Claude: [calls record_pipeline with ordered steps]
When you set a rule:
You: Never run Conductor from source. Always use the exe.
Claude: [calls record_constraint with rule, reason, and hardness=absolute]
At conversation start, Claude calls get_project_summary to see all active decisions, pipelines, and constraints. Before making changes, it calls get_context with relevant tags to check for conflicts.
Without embeddings or external services, Context Keeper scores entries using:
Results are capped by a configurable token budget (default: 4000 tokens).
Context Keeper includes hooks that snapshot your context before Claude Code compaction and detect if anything was lost afterward.
Add to your Claude Code hooks config (~/.claude/settings.json):
{
"hooks": {
"PreCompact": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "python /path/to/context-keeper/hooks/pre_compact.py"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "python /path/to/context-keeper/hooks/post_compact.py"
}
]
}
]
}
}
Replace /path/to/context-keeper with the actual install path. Set CONTEXT_KEEPER_PROJECT env var if your project isn't in the current working directory.
At session start, Claude calls get_compaction_report to check if the last co