mcpField
L
LiteScope

LiteScope

本地服务
litescope-site.pages.dev数据库15 周前更新

关于 LiteScope

LiteScope 是面向开发者和 AI Agent 的 SQLite、Cloudflare D1 与 Turso 运维工具,支持本地数据库及生产集群。它将诊断、迁移与默认试运行的写入结合,并在执行前创建可回退点。

主要功能

  1. 01检查数据库结构、查询并比较数据库
  2. 02诊断健康状况、锁及集群问题
  3. 03规划并应用迁移,分析影响范围
  4. 04写入默认试运行,并用回退令牌撤销
  5. 05创建快照、恢复及回退数据库

适用场景

  1. 01检查 D1 集群的健康问题
  2. 02应用迁移前评估其影响
  3. 03安全更新生产数据并保留回滚路径

MCP 相关

MCP 服务向客户端提供数据库检查、诊断、迁移及可选写入工具,并提供提示词和资源。写入需启用 --allow-writes,默认先试运行,应用前会创建撤销点。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"croc100-litescope": {
"command": "npx",
"args": [
"-y",
"litescope"
],
"env": {
"CLOUDFLARE_API_TOKEN": "<CLOUDFLARE_API_TOKEN>",
"CLOUDFLARE_ACCOUNT_ID": "<CLOUDFLARE_ACCOUNT_ID>"
}
}
}
}
启动命令npx -y litescope
需要配置的环境变量
CLOUDFLARE_API_TOKEN密钥Cloudflare API token — only needed for Cloudflare D1 sources (d1://...)
CLOUDFLARE_ACCOUNT_IDCloudflare account ID — only needed for Cloudflare D1 sources

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

安装包
npmlitescope0.9.0

工具

还没有获取到工具列表

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

详细介绍

Litescope

让 AI Agent 安全地操作生产环境中的 SQLite。 写入前先诊断,写入后可回退。支持 Cloudflare D1、Turso 和本地文件。

网站 · 路线图 · 赞助

许可证:AGPL v3 Go Cloudflare D1 Turso 贡献者 Litescope MCP 服务

让 Claude 修改你的 D1 数据库——如果结果不对,还能撤销。默认情况下,每次写入都会先进行试运行,准确显示影响范围,并且只需一次调用即可回退。

Litescope 可逆写入流程:试运行并查看影响范围,使用回退令牌应用更改,然后一次调用即可撤销

免费且开源(AGPL-3.0)——所有命令和所有集群操作均可自托管,无需许可证密钥。唯一收费的部分是由我们托管的仪表板。


为什么需要 SQLite 工具?

“它只不过是个文件——有什么可运维的?”

SQLite 过去确实只是本地开发用的小玩意儿。如今已不再如此。D1、Turso、 LiteFS 和 Litestream 将 SQLite 带入了大规模集群生产环境——数千个 数据库,每个租户一个。但工具支持一直没有跟上:

  • sqlite3 假设只有一个数据库。 生产环境却有数千个。没有 pg_stat,没有 APM,也没有标准方式从外部查看数据库为何被锁定、WAL 为何不断膨胀,或哪个租户不再活跃。
  • 嵌入式意味着无法观测。 SQLite 的优势恰恰在于没有服务器,但这也让你在生产环境中无从了解其内部状况。
  • Agent 现在会写入你的数据。 没有 SQLite 工具是以 AI 会执行迁移为前提设计的。Litescope 则是。

Postgres 的每种问题都有成熟的工具。SQLite 却一个也没有——因此 Litescope 用一个二进制文件解决所有问题:集群可观测性、文件级超能力(细分排查 / 回退 / 抢救)、锁与 WAL 诊断,以及为 Agent 提供的安全接口。这些都是通用数据库客户端从架构上就无法做到的。


MCP——让 Claude 直接访问你的 D1

Claude Code——安装插件,即可获得 MCP 服务和五项技能(锁问题诊断、安全写入、迁移审查、集群扫描、损坏恢复),帮助 Agent 在遇到问题时学会如何使用这些功能:

/plugin marketplace add croc100/Litescope
/plugin install litescope@litescope

或者只安装 MCP 服务,一行命令(只读):

claude mcp add litescope -- litescope mcp

启用写入和 D1(Litescope 仍会对每次写入进行试运行,并在应用前创建回退点):

claude mcp add litescope \
  -e CLOUDFLARE_API_TOKEN=your-token \
  -e CLOUDFLARE_ACCOUNT_ID=your-account-id \
  -- litescope mcp --allow-writes

Cursor——一键安装: ➕ 将 litescope 添加到 Cursor (以只读模式安装;要启用写入,请在 mcp.json 中添加 --allow-writes 和 Cloudflare 环境变量)。

Claude Desktop / Windsurf / 任意 MCP 客户端——直接添加到配置文件中:

{
  "mcpServers": {
    "litescope": {
      "command": "litescope",
      "args": ["mcp", "--allow-writes"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your-token",
        "CLOUDFLARE_ACCOUNT_ID": "your-account-id"
      }
    }
  }
}

也已列入 MCP Registry,名称为 io.github.croc100/litescope。

然后可以向 Claude 提出类似这样的请求:

"List my D1 databases"
"Show me the schema of the users table in d1://abc-123"
"Delete every inactive user from d1://prod-db-id"     ← dry-run first: shows the
                                                        exact blast radius before
                                                        you approve the write
"Undo that — put it back the way it was"              ← one-call revert via the
                                                        rewind_token from the write
"The deploy at 2pm broke something — rewind prod to 1:45pm"
"Diff my local dev.db against d1://prod-db-id and show me the migration SQL"
只读工具(始终可用)
工具功能
litescope_d1_list列出账户中的所有 D1 数据库(UUID、名称、DSN)
litescope_query在任意 D1 数据库或本地 SQLite 文件上运行 SELECT 查询
litescope_schema查看表、列和索引
litescope_health检查损坏、WAL 膨胀和碎片化情况
litescope_diff比较任意两个数据源的架构和行数差异
litescope_migrate_plan生成迁移 SQL 和影响范围分析
litescope_migrate_diff仅生成迁移 SQL(不含影响范围分析)
litescope_advise性能分析:缺失索引、全表扫描
litescope_check根据参考数据库验证备份
litescope_fingerprint根据架构指纹对整个数据库集群进行分组
litescope_fleet_health对整个数据库集群的故障进行分类
litescope_locks诊断 database is locked / SQLITE_BUSY(静态和实时)
litescope_snapshot_list列出本地数据库的时间点快照

litescope_query 会执行令牌预算控制——通过 max_rows 限制行数、使用 columns 指定列,并报告截断情况——因此,即使表很大,也不会撑爆 Agent 的 上下文窗口。

写入工具(--allow-writes)
工具功能
litescope_query_write执行可修改数据的 SQL——默认试运行,并准确报告受影响的行数和影响范围差异(D1 试运行在拉取的副本上测量);应用更改时,先捕获撤销点(本地:快照;D1:Time Travel 书签),并将其作为 rewind_token 返回
litescope_write_undo使用 rewind_token 一次调用即可撤销写入——适用于本地文件和 D1;令牌与生成它的数据库绑定
litescope_migrate_apply应用迁移——可逆机制与 litescope_query_write 相同
litescope_autopilot自动执行优化(ANALYZE、索引、VACUUM)——默认试运行
litescope_snapshot对本地数据库进行时间点备份
litescope_restore从快照恢复本地数据库
litescope_rewind将 D1 数据库恢复到某个时间点(Time Travel)
litescope_d1_pull将 D1 数据库下载到本地 SQLite 文件
litescope_d1_create创建新的 D1 数据库
litescope_d1_delete删除 D1 数据库(不可逆)

除非使用 --allow-writes 启动服务,否则写入工具处于关闭状态;每次写入默认都以试运行方式执行,且任何写入提交前都会自动捕获撤销点。完整的安全边界说明请参阅安全模型,了解各层防护的内容及其局限。

提示词和资源

除了工具,MCP 服务还提供提示词——例如 diagnose_locked_database、review_migration、safe_optimize 和 health_checkup 等预设工作流,可将上述工具串联成安全计划——以及 资源:数据库的架构、数据字典、实时健康状况和实时锁诊断。这些内容可供 Agent 读取,无需调用工具;底层文件每次发生更改时,还可订阅推送更新。使用 litescope mcp ./app.db 绑定数据库,或通过 litescope://schema/{source}、litescope://dictionary/{source}、 litescope://health/{source} 和 litescope://locks/{source} 指定任意数据源。

该服务实现了MCP 2026-07-28这一无状态版本:server/discover、 每个请求的协议元数据、resultType、缓存提示(ttlMs / cacheScope)以及 subscriptions/listen 流;同时还支持工具注释 (只读/破坏性提示)、结构化输出(structuredContent + outputSchema)和参数补全。该服务支持双时代协议:仍使用 initialize 握手启动的客户端会继续使用未作更改的 MCP 2025-06-18,因此 较旧的 MCP 客户端也能继续工作。

交互式视图(MCP Apps)

四个工具会通过 MCP Apps 扩展 (io.modelcontextprotocol/ui),在对话中渲染交互式面板并返回结果:

工具视图
litescope_locks锁诊断器 — 判定结果、每项发现对应的精确 PRAGMA/DSN 修复方案、实时锁探测
litescope_health健康面板 — 完整性、WAL、碎片情况、快照覆盖范围
litescope_query_write / litescope_migrate_apply影响范围 — 每条语句影响的行数、架构影响、回退令牌
litescope_fleet_health数据库集群网格 — 按最差状态优先展示每个数据库,并支持下钻查看

这些视图是编译进二进制文件的独立文档,不会从网络加载任何内容,因此适用宿主最严格的 CSP,数据库内容也不会离开 iframe。它们也绝不会写入数据:如果某个按钮会应用或撤销写入操作,就会将请求交还给对话,因为在嵌入式面板中点击按钮并不代表用户批准了生产环境写入。不支持该扩展的宿主会获得相同的文本结果。

远程 / 托管(Streamable HTTP)

默认情况下,litescope mcp 使用 stdio 通信。对于托管、远程或多客户端设置,请改用 Streamable HTTP 传输方式:

litescope mcp --http :7577 --http-token "$LITESCOPE_MCP_TOKEN"

向端点(默认为 /mcp)发送 JSON-RPC 消息。现代客户端以无状态方式提供服务 — 不使用会话 — 每个请求都携带自己的协议元数据和标准的 MCP-Protocol-Version / Mcp-Method / Mcp-Name 标头,变更通知则通过 subscriptions/listen 响应流传送。握手时代的客户端仍会通过 Mcp-Session-Id 标头获取会话,并使用 GET SSE 流。

公开此服务之前,请先做好安全防护:--http-token(或 LITESCOPE_MCP_TOKEN 环境变量)要求每个请求都携带 Authorization: Bearer <token>,而 --http-origin 会将浏览器 Origin 加入允许列表(始终允许 localhost),以防范 DNS 重绑定攻击。不设置令牌时,端点处于开放状态,服务会打印警告。


D1 — 命令行操作

Rewind — D1 时间旅行
# Restore to a previous point in time
litescope rewind d1://DB_ID --to "2h ago"
litescope rewind d1://DB_ID --to "yesterday"
litescope rewind d1://DB_ID --to "2024-01-15T10:30:00Z"

# List available restore points (30-day window + migration timestamps)
litescope rewind list d1://DB_ID
Pull / Push — 在 D1 与本地 SQLite 之间同步
# Download D1 → local (for inspection, backup, or diffing)
litescope d1 pull d1://DB_ID ./snapshot.db

# Upload local → D1 (seed a fresh database or restore from snapshot)
litescope d1 push ./seed.db d1://DB_ID
litescope d1 push ./seed.db d1://DB_ID --drop-existing
Migrate — 更改 D1 架构
# Diff local dev schema against live D1 — generate migration SQL
litescope migrate local.db d1://DB_ID

# Apply a migration directly to D1
litescope migrate apply d1://DB_ID migration.sql
Bisect — 找出哪个提交导致 D1 数据库出错

通过二分搜索 D1 时间旅行,精确定位查询开始返回错误结果的快照:

litescope bisect d1://DB_ID \
  --good "3d ago" \
  --bad now \
  --check "SELECT COUNT(*) FROM orders WHERE status = 'paid'" \
  --expect "gt:0"

检查 gt:0(大于)、lt:N、eq:N 或字面值。将范围缩小到条件首次失败的快照区间,然后即可检查或回退。


本地 SQLite

doctor — 一次性检查
litescope doctor app.db
litescope doctor app.db --deep            # exhaustive integrity_check
litescope doctor app.db --format html -o report.html

通过一条命令完成完整性检查、WAL/碎片健康检查、索引建议和架构检查。需要处理问题时以 1 退出 — 可将其用作 CI 质量门禁。

snapshot / restore — 时间点备份
litescope snapshot app.db                     # consistent VACUUM INTO copy
litescope snapshot app.db --label before-migration
litescope snapshot app.db --keep 7            # retain only the 7 newest
litescope snapshot list app.db
litescope restore app.db                      # restore the newest snapshot
litescope restore app.db --from <snapshot.db>

快照存储在同级 .litescope-snapshots/ 目录中。恢复操作会检查完整性,并先创建恢复前安全快照 — 这与 D1 通过时间旅行获得的“是否已备份?”安全网相同,适用于本地数据库和 Turso。

autopilot — 自动优化
litescope autopilot app.db                    # dry-run: show the plan
litescope autopilot app.db --apply            # apply the safe actions
litescope autopilot app.db --apply --aggressive
litescope autopilot --fleet litescope.fleet.yaml --apply

运行 ANALYZE + PRAGMA optimize,为缺失的外键添加索引,并且(使用 --aggressive 时)运行 VACUUM 并删除冗余索引 — 每项操作都会用通俗语言说明。默认执行试运行;每次实际变更之前都会自动创建快照。

locks — 诊断“数据库已锁定”
litescope locks app.db                        # static config diagnosis
litescope locks app.db --live                 # is a writer holding the lock now?
litescope locks app.db --watch                # stream lock-state changes
litescope locks app.db --timeline             # recorded contention history
litescope locks app.db --timeline --since 24h

检查日志模式、busy_timeout、锁定模式和 WAL 膨胀情况,并给出精确的 PRAGMA/DSN 修复方案。--live 会识别当前持有锁的进程。--watch 会将每次观测记录到本地历史存储;随后 --timeline 会将记录汇总成每个数据库的争用视图 — 显示数据库何时被阻塞、持续多久、哪些进程持有锁、等待时间百分位数,以及 WAL 检查点是否及时跟上。

diff — 架构和数据差异
litescope diff old.db new.db
litescope diff old.db new.db --format json
litescope diff local.db d1://DB_ID        # local vs live D1
litescope diff local.db turso://TOKEN@ORG/prod
migrate — 生成并应用迁移
litescope migrate before.db after.db --output migration.sql
litescope migrate apply prod.db migration.sql --dry-run
litescope migrate apply prod.db migration.sql --verify after.db

migrate apply 安全流程:预检完整性 → VACUUM INTO 备份 → 单个事务 → 验证外键 → 失败时自动回滚。

lint — 检查架构反模式
litescope lint app.db
litescope lint app.db --strict   # exit 1 on info findings too

规则:no-primary-key、untyped-column、not-strict、autoincrement-overhead、non-integer-pk。

schema — 检查架构 + ERD
litescope schema app.db
litescope schema app.db --erd    # Mermaid ER diagram
dump — 导出可移植的 SQL
litescope dump app.db -o backup.sql
litescope dump app.db --schema-only
litescope dump app.db --table users
import / export — 电子表格和 SQLite
litescope import sales.csv              # → sales.db, table "sales"
litescope import budget.xlsx            # first sheet → budget.db
litescope export shop.db --table orders -o orders.xlsx
litescope export shop.db --query "SELECT city, COUNT(*) FROM users GROUP BY city"

格式:CSV、TSV、JSON、Excel(.xlsx)。无需外部依赖。

monitor — 检测架构漂移
litescope monitor snapshot prod.db --output baseline.json
litescope monitor check prod.db --baseline baseline.json     # exits 1 on drift
litescope monitor watch prod.db --baseline baseline.json --interval 1h --webhook https://hooks.slack.com/...
serve — 本地 Web 仪表板
litescope serve                   # opens http://127.0.0.1:7575
litescope serve --config litescope.fleet.yaml

集群拓扑图、运行状况排查、架构指纹、交互式 ERD、带可视化查询构建器的分页数据浏览器、拖放导入,以及可视化差异面板——选择任意两个数据库,在应用更改前查看架构和行数的变化。完全在本地运行,无需账户。


集群

一次管理数百个数据库。专为使用 Turso 和 D1 的多租户应用打造。

# Discover all databases
litescope fleet discover turso --org my-org --token $TURSO_API_TOKEN
litescope fleet discover d1 --account $CF_ACCOUNT_ID --token $CF_API_TOKEN

# Triage the whole fleet
litescope fleet health
litescope fleet locks         # roll up "database is locked" contention, worst-first
litescope fleet fingerprint   # cluster by schema — find drift before it bites

# Stage a migration across the fleet
litescope fleet migrate migration.sql --dry-run
litescope fleet migrate migration.sql --canary 5
litescope fleet migrate migration.sql

CI — GitHub Action

在每个拉取请求上运行 Litescope——检查架构、与基准分支进行差异比较,并评论影响范围,避免未经审核的高风险迁移被合并。

- uses: croc100/Litescope@v1
  with:
    args: "lint app.db --strict"
    comment: "true"          # post the result as a sticky PR comment

args 可以是任意 Litescope 命令;当 Litescope 标记出问题时,作业会以非零状态退出,从而使检查失败。完整的 lint + diff 工作流请参阅 examples/github-actions/migration-ci.yml。

输入默认值说明
args—要运行的 Litescope 命令(必填)
versionlatest要安装的发布标签,或 latest
commentfalse将输出作为固定的 PR 评论发布
working-directory.要在其中运行的目录

安装

Homebrew

brew install croc100/tap/litescope

npm / npx — 适用于 JS 和 wrangler 用户,无需单独安装:

npx litescope doctor app.db
npm install -g litescope

Go 安装

go install github.com/croc100/litescope/cmd/litescope@latest

下载二进制文件

macOS、Linux、Windows — Releases。


远程数据源

DSN提供方
./app.db 或 /path/to/file.db本地 SQLite 文件
d1://DB_UUIDCloudflare D1(环境变量:CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID)
d1://TOKEN@ACCOUNT_ID/DB_UUIDCloudflare D1(显式凭据)
turso://TOKEN@ORG/DBNAMETurso

定价 — 免费内容

工具免费。我们只对替你托管仪表板收费。

免费(OSS,AGPL-3.0)云端(付费)
所有 CLI 命令、MCP 服务、集群运维✅✅
litescope serve — 本地 Web 仪表板✅✅
在你自己的基础设施上自托管仪表板✅✅
由我们托管和维护的仪表板—✅
托管元数据导入、保留和告警—✅
组织身份验证、团队、SSO—✅
支持 SLA—✅

**界限很简单:软件及所有功能永久免费,并且可自托管。只有当你希望我们托管和运维仪表板,让你省去这些工作时,才需要付费。**没有任何功能需要许可证密钥才能使用。

托管方案请参阅 litescope-site.pages.dev/pricing。


许可证

Litescope 采用 AGPL-3.0 许可证。可免费使用、修改和自托管。如果你将其作为网络服务提供,AGPL 要求你公开自己的修改。组织可申请商业许可证(AGPL 例外 + 支持 SLA)——请参阅 COMMERCIAL.md 或发送邮件至 [email protected]。

评论

支持 Markdown

第一次接触 MCP?

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

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