BlobGuard MCP
BlobGuard MCP是一个轻量级的、会话隔离的blob存储和差异服务器,专为LLM编码代理进行大量或频繁的代码编辑而设计。它有助于减轻文本处理开销,避免幻觉,并保持正在进行的工作的保真度。
目的
BlobGuard MCP提供了一种多租户、内存中的blob存储和差异化服务,专为LLM编码代理构建。通过在代理外部处理blob存储和差异化,它能够高效、准确地管理大型或大量代码更改,降低幻觉风险,并保持正在进行的工作的完整性。
多会话支持
此服务器设计为多租户。它会自动为每个客户端连接创建一个唯一的、隔离的工作区。
所有blob都会根据连接自动命名。这意味着多个用户或应用程序可以同时与服务器交互,而其数据不会相互干扰,从而确保安全和可预测的体验,而无需任何所需的客户端配置。
安装
要开始使用BlobGuard MCP,请按照以下安装说明进行操作。
- 克隆存储库:
git clone https://github.com/Voidious/blobguard-mcp.git
cd blobguard-mcp- 创建和激活虚拟环境:
对于macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate对于Windows:
python -m venv .venv
.\.venv\Scripts\activate- 再进行:
使用以下命令安装所需的Python包 requirements.txt 文件。
pip install -r requirements.txt用法
BlobGuard MCP旨在用作具有MCP兼容客户端的服务器,例如Cursor或VS Code等编辑器中的AI编码助手。
要配置服务器,请在编辑器的配置中找到“MCP工具”或“MCP服务器”设置。然后,添加一个新的服务器配置块,如下所示:
对于macOS/Linux/Windows(Git Bash/WSL/Cygwin):
"blobguard": {
"command": "/path/to/your/clone/of/blobguard-mcp/run.sh"
}对于Windows(命令提示符或PowerShell):
"blobguard": {
"command": "C:\\path\\to\\your\\clone\\of\\blobguard-mcp\\run.bat"
}确保将路径替换为克隆存储库中脚本的实际位置。该脚本将自动激活虚拟环境并运行服务器。
注: 使用 run.sh 适用于类Unix shell(macOS、Linux、Git Bash、WSL、Cygwin)和 run.bat 适用于本机Windows命令提示符或PowerShell。
配置后,您的AI编码助手将能够使用BlobGuard MCP工具。
使用流式HTTP启动服务器
默认情况下,服务器使用stdio传输运行(适用于本地工具和编辑器集成)。要将服务器作为可流式HTTP服务运行(建议用于基于web的部署或远程访问),请使用 --http 标志:
python main.py --http您还可以指定自定义主机和端口:
python main.py --http --host 0.0.0.0 --port 9000--http:使用Streamable HTTP(而不是stdio)启动服务器--host:HTTP服务器的主机(默认值:127.0.0.1)--port:HTTP服务器的端口(默认值:8000)
注: 这 run.sh 和 run.bat 脚本也支持这些参数,并将它们传递给 main.py例如:
./run.sh --http --host 0.0.0.0 --port 9000或在Windows上:
run.bat --http --host 0.0.0.0 --port 9000如果你忽略了 --http,服务器将使用stdio传输(默认行为):
python main.py人工智能辅助编码编辑器的使用规则
为了使用BlobGuard MCP获得最佳效果,请加载文件 blobguard-rules.md 将AI辅助编码编辑器(如Cursor或Windsurf)作为规则。这使您的编码助手能够遵循最佳实践,并高效地使用BlobGuard MCP。如果你愿意,你也可以阅读这个文件,但它的主要目的是作为你的编码助手的规则集。
可用工具
save_blob
使用给定名称和可选元数据保存blob。
参数:
name(str):blob的唯一名称。content(str):要存储在blob中的内容。metadata(dict,可选):与blob关联的可选元数据。force(bool,可选):如果为True,则用相同的名称覆盖任何现有的blob。默认值为False。
退货:
dict:{ "success": True }如果保存,或{ "error": ... }如果blob存在并且未设置力。
例子:
save_blob(name="foo", content="hello world", metadata={"author": "alice"})get_blob
按名称检索blob及其元数据。
参数:
name(str):要检索的blob的名称。
退货:
dict:{ "content": content, "metadata": metadata }如果发现,或{ "error": ... }如果没有找到。
例子:
get_blob(name="foo")差异
按名称返回两个blob之间的统一diff,类似于diff命令的输出。
参数:
name1(str):第一个blob的名称。name2(str):第二个blob的名称。
退货:
dict:{ "diff": unified_diff_string }如果两个斑点都存在,或者{ "error": ... }
