ccontext
Provides AI agents with persistent execution context across sessions through local YAML files, enabling shared memory, task tracking, milestone management, and context hygiene for single or multi-agent workflows.
README
ccontext-mcp — Execution Context for AI Agents
Local-first MCP server that gives agents a shared, durable “execution context” across sessions: Vision (why) · Sketch (static blueprint) · Milestones (timeline) · Tasks (deliverables) · Notes/Refs (knowledge) · Presence (who’s doing what).
🧠 Persistent agent memory • 📋 Agent-native task tracking • 🧹 Built-in hygiene (diagnostics + lifecycle) • ⚡ Batch updates (one call) • 🔒 Local files, zero infra
🖼️ ccontext at a Glance
Files on disk (portable, git-friendly)
your-project/
└── context/
├── context.yaml # vision, sketch, milestones, notes, references (+ embedded contract)
├── tasks/
│ ├── T001.yaml # deliverable tasks with steps
│ └── T002.yaml
├── presence.yaml # runtime status (recommend gitignore)
├── .ccontext.lock # lock file (recommend gitignore)
└── archive/ # auto-archived notes/refs/tasks (optional gitignore)
One call to “load the brain”
get_context() returns version + now + diagnostics so agents can quickly orient:
{
"version": "abc123def456",
"now": {
"active_milestone": { "id": "M2", "name": "Phase 2", "description": "...", "status": "active" },
"active_tasks": [{ "id": "T001", "name": "Implement auth", "milestone": "M2" }]
},
"diagnostics": {
"debt_score": 2,
"top_issues": [{ "id": "NO_ACTIVE_MILESTONE", "severity": "info", "message": "No active milestone." }]
},
"context": { "...": "vision/sketch/milestones/notes/references/tasks_summary" }
}
Why ccontext? (Pain → Payoff)
The Pain
- Agents forget what they were doing between sessions.
- Multi-agent work becomes N² coordination noise without a shared “source of truth”.
- Context grows unbounded; old notes become misleading; task state drifts.
The Payoff
- Resume instantly: agents always start from the same structured context.
- Coordinate cleanly: presence shows who’s doing what; tasks show what’s actually done.
- Stay sane: diagnostics highlight context debt; ttl-based lifecycle prevents bloat.
✨ What Makes ccontext Different
<table> <tr> <td width="50%">
🗂️ Local-first, Portable
Context is plain YAML in your repo. No DB, no cloud, no lock-in.
📋 Agent-native Structure
Designed around how agents actually work: vision, blueprint, milestones, tasks, notes.
⚡ Low-friction Updates
commit_updates() batches multiple changes in one call (status + task step + note).
</td> <td width="50%">
🧹 Context Hygiene
get_context() emits diagnostics + top issues so agents know what to fix.
⏳ Lifecycle Built-in
Notes/refs decay by ttl and auto-archive, keeping context fresh.
👥 Presence That Stays Readable
Presence is normalized (single-line, de-duped) by design.
</td> </tr> </table>
Core Model (The “Contract”)
- Vision: one-sentence north star. Low frequency.
- Sketch: static blueprint only (architecture, strategy, constraints, major decisions).
Do not put TODO/progress/task lists here. - Milestones: coarse phases (typically 2–6). Exactly one active at a time.
- Tasks: deliverables with 3–7 steps. If work spans handoffs, it belongs in a task.
- Notes/References: “things we must not forget” + “where to look”.
- Presence: what each agent is doing/thinking right now (keep it short).
This contract is embedded into context.yaml under meta.contract for standalone use.
Installation
Claude Code
# Using uvx (recommended)
claude mcp add ccontext -- uvx ccontext-mcp
# Or using pipx
claude mcp add ccontext -- pipx run ccontext-mcp
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ccontext": {
"command": "uvx",
"args": ["ccontext-mcp"],
"env": { "CCONTEXT_ROOT": "/path/to/your/project" }
}
}
}
Other MCP clients / manual
pip install ccontext-mcp
CCONTEXT_ROOT=/path/to/project ccontext-mcp
Root selection: ccontext uses CCONTEXT_ROOT when set; otherwise it uses the current working directory.
Agent Loop (Recommended)
- Start every run
ctx = get_context() # call first
- If missing, set the foundation
update_vision("Ship a reliable X that achieves Y.")
update_sketch("## Architecture\n...\n## Strategy\n...\n## Risks\n...")
- Keep one milestone active
create_milestone(name="Phase 1: Foundation", description="...", status="active")
- Track real work as tasks
create_task(
name="Implement auth",
goal="Users can sign in and sessions are validated",
steps=[
{"name":"Design", "acceptance":"Spec reviewed"},
{"name":"Implement", "acceptance":"Tests passing"},
{"name":"Rollout", "acceptance":"Docs updated"}
],
milestone_id="M1",
assignee="peer-a"
)
- Update with low friction (one call)
commit_updates(ops=[
{"op":"presence.set","agent_id":"peer-a","status":"Auth: implementing session validation; checking edge cases"},
{"op":"task.step","task_id":"T001","step_id":"S2","step_status":"done"},
{"op":"note.add","content":"Edge case: empty header triggers fallback path","ttl":50}
])
Tools
| Category | Tool | Purpose |
|---|---|---|
| Context | get_context() |
Call first. Returns version, now, diagnostics, and the full context. |
commit_updates() |
Batch multiple updates (presence + task progress + notes/refs) in one call. | |
| Vision / Sketch | update_vision() |
Set the north star. |
update_sketch() |
Update blueprint (static, no TODO/progress). | |
| Presence | get_presence() |
See what other agents are doing. |
update_my_status() |
Update your status (1–2 sentences). | |
clear_status() |
Clear your status (remove stale/finished status). | |
| Milestones | create_milestone() / update_milestone() / complete_milestone() / remove_milestone() |
Manage coarse phases. |
| Tasks | list_tasks() / create_task() / update_task() / delete_task() |
Track deliverables with steps. |
| Notes / Refs | add_note() / update_note() / remove_note() |
Preserve lessons/decisions with ttl lifecycle. |
add_reference() / update_reference() / remove_reference() |
Bookmark key files/URLs with ttl lifecycle. |
Version Tracking (ETag-style)
Agents can detect change without guessing:
v = get_context()["version"]
# ... later ...
if get_context()["version"] != v:
# someone changed context/tasks
ctx = get_context()
Note: version is semantic. It intentionally ignores notes/refs ttl decay so frequent reads don’t churn the hash.
Diagnostics & Lifecycle (Context Hygiene)
- Diagnostics:
get_context()returnsdiagnostics(includingdebt_scoreandtop_issues) so agents can keep the context clean. - TTL-based lifecycle: notes and references decay by 1 each
get_context()call and auto-archive when stale, preventing “memory bloat”. - Presence normalization: agent IDs are canonicalized and de-duped; status is normalized to a single concise line for readability.
Git Recommendations
Most teams prefer:
context/presence.yaml
context/.ccontext.lock
context/archive/
Commit context/context.yaml and context/tasks/ so work survives sessions and can be reviewed.
Works With (and Without) Orchestrators
- Standalone: any MCP-capable agent client can use ccontext directly.
- Orchestrators: tools like CCCC can read/write the same
context/files for multi-agent runtime UX. - No MCP? You can still read/write the YAML files manually (you just won’t get MCP ergonomics like batch updates and diagnostics).
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。