关于 LogCarver
LogCarver 是只读 MCP 服务,通过读取 SQL Server 事务日志查找删除、更新和插入记录,供需要追查数据变化的用户使用。它无需预先启用 Audit、CDC 或 Change Tracking。
主要功能
- 01读取事务日志查找行变化
- 02支持删除、更新和插入筛选
- 03按时间范围或键筛选
- 04返回事件摘要与前后值
- 05可提供建议的撤销 SQL
适用场景
- 01查找表中近期删除的行
- 02查看指定键值的记录历史
- 03按时间范围调查数据变更
MCP 相关
它向 MCP 客户端提供 find_deleted_rows 工具,以只读方式查询 SQL Server。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍

LogCarver.Mcp
English | 繁體中文
一个只读的 MCP 服务,AI 助手可通过读取数据库事务日志(fn_dblog),回答“刚才从这个 SQL Server 表中删除了哪些行?”无需事先启用 Audit、CDC 或 Change Tracking。
它是 LogCarver(MIT)解码引擎的轻量封装。所有操作都在你的计算机上进行,不会向任何地方发送数据。
**状态:**早期版本(v0.1)。已发布到 NuGet,并收录在官方 MCP 注册表中,名称为
io.github.caiderek/logcarver-mcp。
快速开始(5 分钟)
-
安装(需要 .NET 10 SDK 或运行时):
dotnet tool install -g LogCarver.Mcp -
**创建一个临时数据库。**在 SSMS 或
sqlcmd中运行examples/try-it.sql。该脚本会创建McpTest,插入 10 条订单,删除 4 条并更新 1 条。 -
**不要将密码放在命令中。**将连接字符串放入只有你能读取的文件中(SQL 登录名必须是 sysadmin):
Server=localhost;Database=McpTest;User Id=YOUR_LOGIN;Password=YOUR_PASSWORD;TrustServerCertificate=true例如,将其保存为
C:\Users\you\logcarver-mcp.conn(仅一行,不含其他内容)。然后添加服务并指定该文件:claude mcp add --scope user logcarver --env LOGCARVER_MCP_CONNECTION_STRING_FILE="C:\Users\you\logcarver-mcp.conn" -- logcarver-mcp密码不会在命令行中输入,也不会出现在 MCP 配置中。不要将此文件提交到任何地方。
-
在新对话中提问:“McpTest 中的 dbo.Orders 删除了哪些行?”你应该会看到 Bob、Carol、Dave 和 Eve(Id 2 到 5)。然后试试“显示 Id=1 的历史记录”(Amount 从 100.00 变为 111.11,Note 从 first 变为 changed)以及“包含撤销 SQL”。
-
清理:
DROP DATABASE McpTest;,claude mcp remove logcarver。
如果结果为空,日志空间可能已被重用(例如,在 SIMPLE 恢复模式下执行 CHECKPOINT 后,或进行日志备份后)。请参阅下方的限制说明。
功能
提供一个工具:find_deleted_rows。它只读取数据:执行 SELECT,并通过读取数据页的 DBCC PAGE 重建其 INSERT 操作已从日志中消失的行。它绝不会更改数据;可选的撤销 SQL 只是纯文本,工具不会执行它。
| 参数 | 含义 |
|---|---|
table(必填) | 带架构名称的表,例如 dbo.Orders |
database | 默认使用连接字符串中的数据库。除非其他数据库已列入 LOGCARVER_MCP_ALLOWED_DATABASES,否则拒绝访问 |
operations | delete(默认)、update、insert、all |
from、to | ISO 8601 时间范围,使用服务器本地时间,不进行时区转换 |
key | Column=Value,仅返回一行的历史记录。列名不区分大小写;日期、bit、十进制数和十六进制二进制值均按常见写法匹配 |
maxRows | 默认值为 20,最大值为 500,0 = 仅统计数量。保留最近发生的事件 |
includeUndoSql | 同时返回建议用于撤销每个事件的 SQL |
结果为 JSON:包含 summary(计数、截断信息、警告和备注)和 events(类型、时间戳、LSN、事务 ID、更改前后的列值、备注)。二进制值使用十六进制字符串表示,十进制数使用字符串表示,因此不会发生静默舍入。
要求和限制
- 连接所用的登录名必须是 sysadmin(
fn_dblog要求此权限)。 - 只能查看仍在活动日志中的内容。如果日志空间已被重用,结果将为空,这并非错误。付费工具 LogCarverOffline 通常可以通过读取原始
.ldf恢复这类数据。 - 无法恢复
TRUNCATE和DROP操作。 - 不支持压缩表。遇到
time、xml列和行外 LOB 值时,将拒绝处理或标记为needsManualReview;绝不会猜测其内容。 - 已在 SQL Server 2025、2022、2019 和 2016(SP2)上验证。其他版本会在
notes中返回警告。 - 扫描大型活动日志可能需要一分钟或更久。
配置
连接字符串来自环境变量,因此凭据不会经过 AI 对话:
LOGCARVER_MCP_CONNECTION_STRING=Server=localhost;Database=MyDb;Integrated Security=true;TrustServerCertificate=true
或者将 LOGCARVER_MCP_CONNECTION_STRING_FILE 指向包含连接字符串的文件。
登录用户是 sysadmin,调用方是 AI,因此该工具只能读取连接字符串指定的数据库。若要允许它读取其他数据库,请列出这些数据库(用逗号或分号分隔):
LOGCARVER_MCP_ALLOWED_DATABASES=Sales;HR
行值直接来自数据库。它们是数据,而非指令;工具描述会告知模型这一点。
安装
需要 .NET 10 SDK 或运行时。
dotnet tool install -g LogCarver.Mcp
或者通过 dnx 运行,无需安装:
dotnet dnx LogCarver.Mcp --yes
Claude Code
claude mcp add logcarver --env LOGCARVER_MCP_CONNECTION_STRING="Server=localhost;Database=MyDb;Integrated Security=true;TrustServerCertificate=true" -- logcarver-mcp
若使用 dnx 而非全局工具,请在命令末尾添加 -- dotnet dnx LogCarver.Mcp --yes。
从源代码构建
git clone --recurse-submodules https://github.com/caiderek/LogCarver.Mcp
dotnet build
dotnet run --project src/LogCarver.Mcp
测试
dotnet test tests/LogCarver.Mcp.Tests
dotnet test tests/LogCarver.Mcp.IntegrationTests
集成测试需要本地 SQL Server 和 sysadmin Windows 登录。测试会创建并删除自己的沙盒数据库 LogCarver_McpTests。
许可证
MIT,详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。