mcpField
D
deckprobe

deckprobe

本地服务
github.com生产力010 周前更新

关于 deckprobe

deckprobe 是用于检查 PDF、Office 和 iWork 文件的 MCP 服务,无需渲染文档。它返回有界 JSON 报告,涵盖结构、元数据、安全信号和完整性,并附带证据与置信度信息。

主要功能

  1. 01检查单个文档
  2. 02批量探测多个路径
  3. 03查看元数据与结构
  4. 04检查加密和宏信号
  5. 05列出支持的格式与目标
  6. 06返回有界 JSON 报告

适用场景

  1. 01盘点文件夹中的文档
  2. 02筛查加密或含宏的文件
  3. 03检查幻灯片、页面或工作表结构
  4. 04无需渲染即可检查不可信文档

MCP 相关

提供四种带类型的工具:probe、probe_batch、list_formats 和 list_targets,并提供 deckprobe://schema 资源。MCP 客户端通过 stdio 连接。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"deckflow-deckprobe": {
"command": "npx",
"args": [
"-y",
"@deckflow/deckprobe-mcp"
],
"env": {
"DECKPROBE_MCP_ROOTS": "<DECKPROBE_MCP_ROOTS>",
"DECKPROBE_MCP_TIMEOUT_MS": "<DECKPROBE_MCP_TIMEOUT_MS>",
"DECKPROBE_MCP_MAX_CONCURRENCY": "<DECKPROBE_MCP_MAX_CONCURRENCY>",
"DECKPROBE_MCP_MAX_BATCH": "<DECKPROBE_MCP_MAX_BATCH>",
"DECKPROBE_MCP_BIN": "<DECKPROBE_MCP_BIN>"
}
}
}
}
启动命令npx -y @deckflow/deckprobe-mcp
需要配置的环境变量
DECKPROBE_MCP_ROOTSDirectories the server is allowed to read, separated like PATH. Unrestricted when unset.
DECKPROBE_MCP_TIMEOUT_MSHard per-call deadline on an engine process, in milliseconds. Defaults to 30000.
DECKPROBE_MCP_MAX_CONCURRENCYMaximum engine processes running at once. Defaults to 4.
DECKPROBE_MCP_MAX_BATCHMaximum paths accepted by one probe_batch call. Defaults to 64.
DECKPROBE_MCP_BINPath to a DeckProbe binary to use instead of the bundled one.

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

安装包
npm@deckflow/deckprobe-mcp0.1.1

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
pathstring是文档的路径。文件扩展名用于选择格式驱动程序,然后会根据该格式验证容器。
viewenum否report:完整证据——每个 target 的值、置信度、路径和成本。values:精简的 target 到值映射。report | values
levelenum否探测预算和符合条件的路径。header:仅身份信息。metadata(默认)。deep:成本较高的路径,仅当 target 的 min_level 指定时才需要。header | metadata | deep
budgetobject否覆盖级别的资源限制。出现 BUDGET_EXCEEDED 错误后可调高。
budget.timeout_msinteger否
budget.max_expanded_bytesinteger否
budget.max_physical_bytesinteger否
budget.max_archive_entriesinteger否
targetsarray否短名称(slide_count)、规范名称(powerpoint.slide_count)或预设值:@header、@summary、@security、@structure、@assets、@quality、@format、@all。默认使用驱动程序自身的集合。请调用 list_targets,而不要猜测名称。@summary 不包含需要读取完整文件的统计信息,因此请明确请求 PDF 的 page_count。
min_confidenceenum否路径可能提供的最低证据强度。默认值为 high;调低后可接受近似值。low | medium | high | exact
target_confidenceobject否按 target 覆盖设置,例如 {"slide_count": "exact"},以强制使用权威路径。

详细介绍

DeckProbe MCP 服务

让 Agent 无需打开文件,就能询问 PDF、Office 或 iWork 文件中有什么。

CI npm License: MIT

安装 · 工具 · 配置 · 安全 · 工作原理 · DeckProbe

一个 MCP 服务,将 DeckProbe——文档领域的 ffprobe——作为四种类型化工具提供。查询页数、幻灯片数量、元数据、加密和宏信号、结构或完整性,即可获得有界且确定性的 JSON,其中包含置信度、证据和实测 I/O 成本。

不会渲染任何内容,不会运行宏,不会跟随外部引用,也不会打开网络连接。可安全地用于不可信文件。

// probe { "path": "deck.pptx", "targets": ["slide_count"], "view": "values" }
{
  "schema_version": 2,
  "status": "ok",
  "driver": { "id": "powerpoint", "profile": "pptx" },
  "values": { "powerpoint.slide_count": 31 },
  "view": "values"
}

安装

无需提前安装任何内容——npx 会同时获取服务和引擎。

Claude Code

claude mcp add deckprobe -- npx -y @deckflow/deckprobe-mcp

Claude Desktop、Cursor、VS Code、Zed,以及任何读取 mcpServers 的工具

{
  "mcpServers": {
    "deckprobe": {
      "command": "npx",
      "args": ["-y", "@deckflow/deckprobe-mcp"]
    }
  }
}

如需固定版本安装,请运行 npm install -g @deckflow/deckprobe-mcp,并将 deckprobe-mcp 用作命令。

需要 Node.js 20 或更高版本。引擎二进制文件作为各平台的可选依赖提供,支持 macOS、Linux(glibc 和 musl)以及 x86-64 和 ARM64 架构的 Windows;其他环境中,服务会回退到编译为 WebAssembly 的同一引擎,因此凡是 Node 能运行的地方都能使用 npx。

工具

工具用途
probe获取一份文档的所有信息
probe_batch在一次调用中盘点或分类处理多份文档
list_formats查看支持哪些格式,以及支持范围
list_targets查看某种格式提供的确切目标名称

此外还有一个资源 deckprobe://schema,其中包含与运行中引擎捆绑的报告 JSON Schema。

probe
{
  "path": "reports/q3.pptx",
  "targets": ["@summary", "@security"],  // presets, short names, or canonical names
  "level": "metadata",                   // header | metadata | deep
  "min_confidence": "high",              // low | medium | high | exact
  "target_confidence": { "slide_count": "exact" },
  "view": "report",                      // report | values
  "budget": { "max_physical_bytes": 8388608, "timeout_ms": 1000 }
}

targets 接受简短名称(slide_count)、规范名称(powerpoint.slide_count)和预设:

预设展开为
@header仅容器身份信息——格式、大小、扩展名匹配情况、加密标记
@summary身份信息、常见元数据和主要结构
@security加密、宏、签名、外部引用、活动内容
@structure格式自有的计数、名称和尺寸
@assets图片、媒体、预览、字体、嵌入对象
@quality完整性、修复、扩展名匹配、符合性
@format当前级别下所有格式专属目标
@all当前级别下所有可用内容

@summary 有意省略需要读取整个文件才能获取的统计信息。PDF 的 page_count 是其中的典型例子——请明确请求它。

probe_batch
{ "paths": ["a.pdf", "b.pptx", "c.xlsx"], "targets": ["@security"] }

整个批次由一个引擎进程处理。结果按输入顺序返回,每项都包含各自的报告或错误,因此单个文件出错不会影响整次运行。默认使用精简的 values 视图。仅接受字面路径——请自行展开 glob。

list_formats 和 list_targets

list_targets 接受 format(pdf、docx、xlsx、pptx、doc、xls、 ppt、key、numbers、pages),并返回每个目标的别名、说明、值类型、最低级别、成本类别和选择器归属。传入 detail: "full",即可获取引擎的完整报告,其中包括每个目标的 JSON Schema 片段和展开后的选择器列表。

这两个工具的结果会在服务进程的整个生命周期内缓存。

阅读报告

工具结果是引擎自身的 schema-v2 信封,未经修改。使用前有两点值得了解:

  • status: "partial" 并不表示失败。 这表示至少有一个请求的目标无法以所请求的置信度解析。它会列在 execution.unresolved_targets 中,其他所有结果仍然有效。
  • confidence_score 是每个标签对应的固定常量(0.4、0.7、0.95、1.0),并非经过校准的概率。0.95 不代表该值有 95% 的概率正确。

只有状态为 resolved 或 estimated 的结果才带有 value。unknown 很常见,通常表示文档根本没有记录该事实。

调用失败时会返回 isError,其中包含引擎的错误信封,以及一行说明应如何处理。服务器自身在引擎运行前引发的故障——路径缺失、路径是目录、路径位于允许列表之外、超出截止时间——使用相同的信封结构,并带有以 MCP_ 为前缀的代码和 origin: "mcp-server"。

配置

每项设置都是一个环境变量,在客户端的 MCP 配置中设置。所有设置均为可选。

变量默认值含义
DECKPROBE_MCP_BIN–用于替代捆绑版本的引擎二进制文件
DECKPROBE_MCP_ROOTS不限允许访问的目录,分隔方式与 PATH 相同
DECKPROBE_MCP_TIMEOUT_MS30000引擎进程每次调用的硬性截止时间
DECKPROBE_MCP_MAX_CONCURRENCY4并发引擎进程数
DECKPROBE_MCP_MAX_BATCH64单次 probe_batch 调用接受的路径数
{
  "deckprobe": {
    "command": "npx",
    "args": ["-y", "@deckflow/deckprobe-mcp"],
    "env": { "DECKPROBE_MCP_ROOTS": "/Users/me/Documents:/Users/me/Downloads" }
  }
}

安全性

DeckProbe 专为处理不可信输入而构建:采用有界解析,不使用渲染器或宏解释器,不解析外部引用,也不访问网络。此服务在此基础上又增加了两项保护。

  • 进程隔离和硬性截止时间。 每次探测都在独立的短生命周期进程中运行;若超出 DECKPROBE_MCP_TIMEOUT_MS,进程就会被终止。
  • 可选的读取允许列表。 DECKPROBE_MCP_ROOTS 限定可访问的目录树;检查前会解析路径中的符号链接,因此无法通过链接绕过限制。默认不设限制,与用户可自行运行的 CLI 一致;对于共享或自动化部署,请设置此项。

报告描述的是文档(元数据、计数、信号),而非复现其内容。请注意,报告中的值(例如文档标题)仍是由攻击者控制的字符串:服务器会将它们作为 JSON 数据原样传递,绝不会将其插入指令中;使用者也应以同样方式对待这些值。

请按照 SECURITY.md 中的说明,私下报告漏洞。

工作原理

MCP client
    │  JSON-RPC over stdio
    ▼
deckprobe-mcp ── validates arguments, resolves the path, maps the result
    │  argv + stdout (one process per probe, or one --jsonl process per batch)
    ▼
DeckProbe engine ── plans the cheapest paths that answer the request

服务器会启动原生 DeckProbe CLI,而不是调用 WebAssembly 版本。CLI 只读取探测计划所需的字节范围,而 WebAssembly 路径会将整个文件保存在内存中;此外,独立的 OS 进程既能隔离不可信内容的解析,也可以直接终止。引擎按以下顺序选择:

  1. DECKPROBE_MCP_BIN
  2. 随本软件包的 @deckflow/deckprobe 依赖一起提供的二进制文件
  3. PATH 上的 deckprobe
  4. 捆绑的 WebAssembly 引擎

启动时会将最终选用的引擎记录到 stderr。stdout 专供 MCP 传输使用,不会承载其他内容。

MCP 服务还是 Agent 技能?

DeckProbe 还提供了一个 Agent 技能,可指导能够使用 shell 的 Agent 直接使用 CLI。两者教授的词汇相同。当 Agent 能使用 shell,且你需要 CLI 的完整功能时,请使用该技能;如果 Agent 无法使用 shell,或者你希望在引擎运行前先验证类型化参数,请使用此服务。

开发

npm install
npm test          # typecheck, lint, build, and the full suite
npm run test:watch

欢迎贡献,请参阅 CONTRIBUTING.md。设计依据(包括被否决的方案)见 docs/rfc.md。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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