mcpField
S
Semantic Cache MCP

Semantic Cache MCP

本地服务
github.com/CoderDayton开发工具35 天前更新

关于 Semantic Cache MCP

Semantic Cache MCP 是面向编码 Agent 的本地文件缓存,重复读取时返回未变状态或差异,减少重复传输内容。它还通过 MCP 提供文件搜索与编辑工具,并将数据存储在 SQLite 中。

主要功能

  1. 01基于哈希的重复读取
  2. 02返回变更行差异
  3. 03grep、BM25 搜索与 glob
  4. 04支持 dry_run 的原子编辑
  5. 05按令牌预算批量读取

适用场景

  1. 01避免重复传输未变文件
  2. 02只检查读取后修改的行
  3. 03由编码 Agent 搜索和编辑文件

MCP 相关

它作为 MCP 服务运行,向 MCP 客户端提供文件读取、搜索和编辑工具。同一台机器上的客户端可共用本地后台进程。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"coderdayton-semantic-cache": {
"command": "uvx",
"args": [
"semantic-cache-mcp"
]
}
}
}
启动命令uvx semantic-cache-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisemantic-cache-mcp0.7.0

工具

14

收录的工具列表 · 更新于 5 天前

参数类型必填说明
pathstring是文件路径(绝对路径,或相对于项目根目录的路径)。对于项目根目录之外的文件,请使用 绝对路径。
limitany否从 `offset` 开始返回的行数。
offsetany否范围读取的起始行号(从 1 开始);省略或传入 0 时从 第一行开始。
outlineboolean否返回文件中的定义及其行号,而非文件文本。不能与 `offset`/`limit` 同时使用。
max_sizeinteger否超过此字节阈值时,返回文件映射而非文本;使用 `offset`/`limit` 读取精确行。
known_hashany否上次读取此文件时返回的 `content_hash`,或上次范围读取时返回的 `coverage_token`。回传此值可在内容无需重新发送时获取 `"unchanged"`。仅在首次读取,或不再持有该值所保証的内容时省略。
line_numbersboolean否在范围读取的每一行前添加行号。约多消耗 17% 的 token;无论是否添加,范围都会在 `lines` 中返回。需要指定 `offset` 或 `limit`。

详细介绍

Semantic Cache MCP 标志

Semantic Cache MCP

别再为同一个文件重复付费。
面向 AI 编码 Agent 的 MCP 文件缓存:重新读取一次约需 40 个 token,而不是整个文件。

PyPI 版本 PyPI 下载量 Python 3.12+ 许可证:MIT

Glama 上的 Semantic Cache MCP   在 Ko-fi 上支持


编码 Agent 会反复读取相同的文件:编辑前、编辑后,以及每次上下文压缩后。内置的 Read 每次都会发送整个文件。Semantic Cache MCP 知道 Agent 已经持有哪些内容。对一个含 7,891 个 token 的文件进行测量:

读取内置 ReadSemantic Cache MCP
首次读取7,891 个 token完整文件,另加一个哈希值
重新读取,文件未变7,891 个 token77 个 token
修改一行后重新读取7,891 个 token137 个 token(差异内容)

在一个包含 48 个文件的项目中,重新读取的 token 可减少 98.7%,读取未变文件耗时 0.17 ms。它还为 Agent 提供针对缓存的 grep、BM25 搜索和 glob、支持 dry_run 的原子编辑,以及按 token 预算读取的批量操作。仅有三个运行时依赖,无需 API 密钥或 GPU。

快速开始

你需要安装 uv。在 Claude Code 中:

claude mcp add semantic-cache --scope user -- uvx semantic-cache-mcp

其他客户端(Cursor、Claude Desktop,以及其他支持 mcpServers JSON 的客户端):

{
  "mcpServers": {
    "semantic-cache": {
      "command": "uvx",
      "args": ["semantic-cache-mcp"]
    }
  }
}

VS Code、Codex 和 OpenCode 的配置,以及如何关闭内置文件工具以便 Agent 使用缓存:docs/clients.md。

工作原理

服务发送的每个文件都附带一个 content_hash。Agent 会在下一次读取时将其作为 known_hash 传回:

flowchart LR
    R["read(path, known_hash)"] --> M{"hash matches<br/>the file now?"}
    M -- yes --> U["unchanged<br/>~40 tokens"]
    M -- "no, older version" --> D["diff of changed lines"]
    M -- "no hash" --> F["full file + content_hash"]
  • 不会返回过时内容。 每次读取前都会先检查磁盘上的文件。只有哈希值与当前字节内容一致时,才会返回 unchanged。
  • 忘记内容也安全。 上下文压缩后,Agent 不带哈希值读取,就会重新获得完整文件。
  • 大文件会转换为索引。 超过 max_size 的文件会返回其定义的概要,而不是盲目截断。
  • 所有内容都保留在本地。 缓存是一个 SQLite 文件。一个后台守护进程即可为你机器上的所有客户端提供服务。

工具

read · batch_read · read_image · write · edit · batch_edit · edit_preview · delete · warm · grep · search · glob · stats · clear

参数和示例:docs/tools.md。

常见问题

搜索在嵌入意义上是“语义搜索”吗? 不是。search 使用 BM25 关键词排序,grep 则进行精确匹配。无需下载模型、无需 GPU,也无需 API 密钥。

它会把我的代码发送到别处吗? 不会。唯一的网络请求是一次性下载 o200k 分词器文件,并通过 SHA-256 哈希值进行校验。

它能在 Windows 上运行吗? 可以。CI 在 Linux 和 macOS 上运行。

文档

指南内容
客户端各客户端的设置、关闭内置文件工具
工具所有工具及其参数和示例
环境变量所有设置及其默认值
性能基准测试和方法
架构存储、算法、共享守护进程
安全威胁模型、大小限制、路径处理
故障排除常见问题、调试日志
高级用法Python API

贡献

git clone https://github.com/CoderDayton/semantic-cache-mcp.git
cd semantic-cache-mcp
uv sync --extra dev
uv run pytest

请参阅 CONTRIBUTING.md。欢迎提交问题和拉取请求。

许可证

MIT。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。