mcpField
L
LogCarver

LogCarver

本地服务
caiderek.github.io数据库11 周前更新

关于 LogCarver

LogCarver 是只读 MCP 服务,通过读取 SQL Server 事务日志查找删除、更新和插入记录,供需要追查数据变化的用户使用。它无需预先启用 Audit、CDC 或 Change Tracking。

主要功能

  1. 01读取事务日志查找行变化
  2. 02支持删除、更新和插入筛选
  3. 03按时间范围或键筛选
  4. 04返回事件摘要与前后值
  5. 05可提供建议的撤销 SQL

适用场景

  1. 01查找表中近期删除的行
  2. 02查看指定键值的记录历史
  3. 03按时间范围调查数据变更

MCP 相关

它向 MCP 客户端提供 find_deleted_rows 工具,以只读方式查询 SQL Server。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetLogCarver.Mcp0.1.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LogCarver 徽标

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 分钟)

  1. 安装(需要 .NET 10 SDK 或运行时):

    dotnet tool install -g LogCarver.Mcp
    
  2. **创建一个临时数据库。**在 SSMS 或 sqlcmd 中运行 examples/try-it.sql。该脚本会创建 McpTest,插入 10 条订单,删除 4 条并更新 1 条。

  3. **不要将密码放在命令中。**将连接字符串放入只有你能读取的文件中(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 配置中。不要将此文件提交到任何地方。

  4. 在新对话中提问:“McpTest 中的 dbo.Orders 删除了哪些行?”你应该会看到 Bob、Carol、Dave 和 Eve(Id 2 到 5)。然后试试“显示 Id=1 的历史记录”(Amount 从 100.00 变为 111.11,Note 从 first 变为 changed)以及“包含撤销 SQL”。

  5. 清理: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,否则拒绝访问
operationsdelete(默认)、update、insert、all
from、toISO 8601 时间范围,使用服务器本地时间,不进行时区转换
keyColumn=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。

评论

支持 Markdown

第一次接触 MCP?

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

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