mcp上下文缓存
持久化MCP服务器 克劳德代码。阻止Claude在每个会话中重新读取相同的文件和重新获取相同的文档。
- 代码图 --树型索引符号、调用图BFS、影响分析
- Web缓存 --获取URL一次,缓存24小时,ETag无效
- 会话内存 --在会议期间坚持调查结果、决策和研究
- 自动同步 --PostToolUse钩子在编辑时保持索引最新
search_code("authenticate") → found in eigeneval/authentication.py:28
get_callers("authenticate") → 3 callers across 2 files
memory_set("auth-decision") → persists across restarts
fetch_url_cached(django_url) → cached: true on second call安装
npx mcp-context-cache init
npx mcp-context-cache index就是这样。Claude Code通过以下方式自动获取MCP服务器 .mcp.json.
需求
- Node.js≥20
- 克劳德代码
它做什么
在第一次运行时, init 创造 .context-cache/ 在你的项目中,写道 .mcp.json,并安装git钩子。 index 使用树状图解析每个源文件,并将符号+调用边存储在本地SQLite数据库中。
Claude Code有14个可用工具:
| 工具 | 它做什么 |
|---|---|
search_code | FTS5符号搜索——比grep快 |
get_callers | 谁调用此函数(BFS,可配置深度) |
get_callees | 这个函数调用什么 |
get_impact | 爆炸半径:所有受影响的符号+风险评分 |
read_file_cached | 使用基于哈希的更改检测读取文件 |
fetch_url_cached | 获取URL,缓存24小时,Etag无效 |
web_cache_list | 列出/检查缓存的URL |
memory_set/get/search | FTS5的持久键值存储 |
memory_delete/clear_namespace | 管理存储的内存 |
project_index | 从MCP工具调用重新索引 |
project_status | 文件计数、节点/边缘计数、缓存大小 |
如何更改同步
| 更改 | 同步触发器 |
|---|---|
| Claude代码编辑 | PostToolUse钩子(自动,每个文件) |
git pull / git merge | post-merge git挂钩(自动) |
git checkout /分支开关 | post-checkout git挂钩(自动) |
| 手动编辑(vim、VS代码) | mcp-context-cache serve --mcp --watch |
| 任何时候 | mcp-context-cache index |
命令行界面
mcp-context-cache init # scaffold, create .mcp.json, install git hooks
mcp-context-cache index # full index (or re-index)
mcp-context-cache sync # incremental sync (changed files only)
mcp-context-cache serve --mcp # start MCP stdio server
mcp-context-cache status # show index stats
mcp-context-cache clean # prune expired cache entries
mcp-context-cache doctor # validate install, DB health, config支持的语言
TypeScript·JavaScript·Python·Go·Rust·Java
运作原理
Claude Code session
│
│ MCP tool calls
▼
mcp-context-cache server
├── Code graph (tree-sitter → SQLite + FTS5)
├── Web cache (undici + ETag → SQLite)
└── Memory (FTS5 KV store → SQLite)
│
│ PostToolUse hook (per edit)
│ git post-merge hook (per pull)
▼
Incremental sync每个项目一个SQLite文件 .context-cache/default.db。没有后台守护进程。没有云。一切都是当地的。
许可证
麻省理工学院
