Skip to main content
Glama
deckflow

DeckProbe MCP Server

Official
by deckflow

DeckProbe MCP Server

エージェントにPDF、Office、iWorkファイルの中身を尋ねさせる——開かずに。

CI npm License: MIT

インストール · ツール · 設定 · セキュリティ · 仕組み · DeckProbe

ドキュメント用のffprobeであるDeckProbeを4つの型付きツールとして公開するMCPサーバーです。ページ数、スライド数、メタデータ、暗号化とマクロのシグナル、構造、整合性を問い合わせると、信頼度、根拠、測定済みのI/Oコストを伴う、境界が定められた決定的なJSONが返ってきます。

レンダリングは一切行われず、マクロも実行されず、外部参照も追跡されず、ネットワーク接続も開かれません。信頼できないファイルを対象にしても安全です。

// 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)、Windowsのx86-64およびARM64向けに、プラットフォーム別のオプショナル依存関係として提供されます。それ以外の環境では、サーバーは同じエンジンをWebAssemblyにコンパイルしたものにフォールバックするため、npxはNodeが動作する場所ならどこでも機能します。

Related MCP server: Visual Document Forensics MCP Server

ツール

ツール

用途

probe

1つのドキュメントに関するすべての情報

probe_batch

多数のドキュメントの棚卸しやトリアージを1回の呼び出しで

list_formats

サポートされているフォーマットと、サポートがどこで終わるか

list_targets

フォーマットが提供する正確なターゲット名

また、実行中のエンジンに同梱されているレポートJSON Schemaを運ぶリソースdeckprobe://schemaも1つあります。

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"] }

1つのエンジンプロセスがバッチ全体を処理します。結果は入力順に返され、各結果には独自のレポートまたは独自のエラーが付くため、1つの不良ファイルが実行全体を台無しにすることはありません。デフォルトはコンパクトなvaluesビューです。リテラルパスのみ——グロブ展開は自分で行ってください。

list_formatsとlist_targets

list_targetsはformat(pdf、docx、xlsx、pptx、doc、xls、ppt、key、numbers、pages)を受け取り、各ターゲットのエイリアス、説明、値の型、最小レベル、コストクラス、セレクタのメンバーシップを返します。エンジンの完全なレポート(ターゲットごとのJSON Schemaフラグメントと展開済みセレクタリストを含む)が必要な場合は、detail: "full"を渡してください。

どちらもサーバープロセスの存続期間中キャッシュされます。

レポートの読み方

ツールの結果は、エンジン自身のschema-v2エンベロープをそのまま返したものです。消費する前に知っておくべきことが2つあります:

  • status: "partial"は失敗ではありません。 要求されたターゲットの少なくとも1つが、要求された信頼度で解決できなかったことを意味します。それはexecution.unresolved_targetsに名前が挙げられ、他のすべての結果は依然として有効です。

  • confidence_scoreはラベルごとの固定定数(0.4、0.7、0.95、1.0)であり、校正された確率ではありません。0.95は値が95%の確率で正しいことを意味しません。

valueを持つのは、ステータスがresolvedまたはestimatedの結果のみです。unknownは一般的で、通常はドキュメントが単にその事実を記録していないことを意味します。

失敗した呼び出しは、エンジンのエラーエンベロープに加えて、対処方法を1行添えてisErrorを返します。エンジンが実行される前にサーバー自身が発生させる失敗——パスの欠落、ディレクトリ、許可リスト外のパス、期限超過——は、MCP_プレフィックス付きのコードとorigin: "mcp-server"を持つ同じエンベロープ形式を使用します。

設定

すべての設定は環境変数であり、クライアントのMCP設定で設定します。すべてオプションです。

変数

デフォルト

意味

DECKPROBE_MCP_BIN

–

同梱のものの代わりに使用するエンジンバイナリ

DECKPROBE_MCP_ROOTS

制限なし

許可されるディレクトリ。PATHと同様に区切る

DECKPROBE_MCP_TIMEOUT_MS

30000

エンジンプロセスへの1回の呼び出しあたりのハード期限

DECKPROBE_MCP_MAX_CONCURRENCY

4

同時実行するエンジンプロセス

DECKPROBE_MCP_MAX_BATCH

64

1回のprobe_batch呼び出しで受け付けるパス

{
  "deckprobe": {
    "command": "npx",
    "args": ["-y", "@deckflow/deckprobe-mcp"],
    "env": { "DECKPROBE_MCP_ROOTS": "/Users/me/Documents:/Users/me/Downloads" }
  }
}

セキュリティ

DeckProbeは信頼できない入力のために作られています:境界のある解析、レンダラーなし、マクロインタープリタなし、外部参照の解決なし、ネットワークアクセスなし。このサーバーはその上に2つのことを追加します。

  • プロセス分離とハード期限。 各プローブは独自の短命プロセスで実行され、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

サーバーはWebAssemblyビルドを呼び出すのではなく、ネイティブのDeckProbe CLIを起動します。CLIはプローブプランが必要とするバイトレンジのみを読み取ります。一方、WebAssemblyパスはファイル全体をメモリに保持し、別のOSプロセスが信頼できない解析を分離すると同時に完全に強制終了できるようにします。エンジンは次の順序で選択されます:

  1. DECKPROBE_MCP_BIN

  2. このパッケージの@deckflow/deckprobe依存関係に同梱されているバイナリ

  3. PATH上のdeckprobe

  4. 同梱のWebAssemblyエンジン

解決されたエンジンは起動時にstderrに記録されます。stdoutはMCPトランスポートに属し、それ以外は何も運びません。

MCPサーバーか、エージェントスキルか?

DeckProbeには、シェル対応エージェントにCLIを直接使用する方法を教えるAgent Skillも同梱されています。どちらも同じ語彙を教えます。エージェントにシェルがあり、CLIの全機能が必要な場合はスキルを使用してください。シェルがない場合、またはエンジンが実行される前に型付き引数を検証したい場合は、このサーバーを使用してください。

開発

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

貢献は歓迎します——CONTRIBUTING.mdを参照してください。却下された代替案を含む設計の根拠はdocs/rfc.mdにあります。

ライセンス

MIT。LICENSEを参照してください。

Available Tools

4 tools
list_formatsList supported formatsA
Read-onlyIdempotent

List the document formats DeckProbe can inspect: drivers, the extensions each one handles, and where support stops. Call this when you are unsure whether a file type is supported at all.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context about the exact output content (drivers, extensions, support limitations), which goes beyond the annotations. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the primary purpose and scope front-loaded. It avoids redundancy and every sentence earns its place—the first states what it lists, the second when to call it. No unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless list tool with no output schema, the description fully explains what the tool returns (drivers, extensions, and support limits). There is nothing missing for an agent to correctly invoke it and interpret the result. Complexity is low, so this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is fully covered (100% by default). There is nothing to add about parameters; the description doesn't need to explain any. The baseline for zero parameters is 4, and no additional info is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('document formats DeckProbe can inspect'), and specifies the content (drivers, extensions, and where support stops). It effectively distinguishes itself from sibling tools like probe and list_targets by focusing on format capabilities rather than probing or target listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Call this when you are unsure whether a file type is supported at all.' It doesn't mention alternatives, but the trigger condition is clear and implies that if you have a specific file, you would use probe instead. It could be improved by naming the sibling tools explicitly, but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_targetsList targets for a formatA
Read-onlyIdempotent

List every target a format supports, with its aliases, value type, minimum probe level, cost class, and which @selectors include it. Call this before naming a target you have not already seen — probe rejects an unknown one rather than guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNocompact (default): target names, aliases, descriptions, levels, and selector membership. full: the complete report, including each target's JSON Schema fragment and every selector's expanded member list.
formatYesA format profile from list_formats, such as "pdf", "docx", "xlsx", "pptx", "doc", "xls", "ppt", "key", "numbers", or "pages".

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, covering safety. The description adds behavioral context by spelling out returned fields and the probe rejection behavior, which matters for planning calls. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the core purpose and output contents, then give one practical usage rule. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich annotation set, fully documented parameters, and a description that names the output fields and the prerequisite call, an agent has enough to invoke the tool correctly even with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already explains format and detail fully, including enumerations and examples. The description adds no new parameter-level semantics beyond naming the report contents, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (list) and resource (targets for a given format), enumerates exactly what is included (aliases, value type, minimum probe level, cost class, selector membership), and contrasts with probe by stating probe rejects unknown targets. This distinguishes it from sibling tools list_formats and probe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs when to call: before naming a target not already seen, because probe rejects unknowns rather than guessing. It also ties the format parameter to list_formats, implying the prerequisite and differentiating from list_formats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

probeProbe a documentA
Read-onlyIdempotent

Read facts about one local PDF, Microsoft Office, or Apple iWork document without opening or rendering it: page, slide, and sheet counts; title, author, and dates; encryption, macro, signature, and active-content signals; structure; embedded assets; and integrity. Handles .pdf, .docx/.xlsx/.pptx, legacy .doc/.xls/.ppt, and modern .key/.numbers/.pages.

Start with targets ["@summary"], or ["@security"] to triage an untrusted file. Prefer this over unzipping the document or parsing its bytes by hand.

Reports facts ABOUT the document, never its text: it does not extract, render, run macros, follow external references, or open a network connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the document. The filename extension selects the format driver, and the container is then verified against it.
viewNoreport: full evidence — value, confidence, path, and cost per target. values: a compact target-to-value map.
levelNoProbe budget and eligible paths. header: identity only. metadata (default). deep: higher-cost paths, needed only when a target's min_level says so.
budgetNoOverride the level's resource limits. Raise after a BUDGET_EXCEEDED error.
targetsNoShort names (slide_count), canonical names (powerpoint.slide_count), or presets: @header, @summary, @security, @structure, @assets, @quality, @format, @all. Defaults to the driver's own set. Call list_targets rather than guessing a name. @summary omits statistics needing a full-file read, so ask for a PDF's page_count explicitly.
min_confidenceNoWeakest evidence a path may offer. Default high; lower it to accept an approximation.
target_confidenceNoPer-target override, e.g. {"slide_count": "exact"} to force the authoritative path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
schema_versionNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds critical behavioral context beyond those hints: it does not extract, render, run macros, follow external references, or open a network connection; it handles legacy formats; it can hit resource limits (referenced by 'Raise after a BUDGET_EXCEEDED error'). This is exactly the kind of non-obvious behavior an agent needs to trust the tool with untrusted files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: opening scope sentence, format list, usage hint, and a final 'does not' sentence. It is front-loaded with the core purpose and scoping. It earns its sentences; only a minor redundancy exists (the 'Prefer this over...' sentence partially repeats the 'does not' list). Not a 5, but far above the typical terse definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, nested budget object, output schema present, and complex behavior (format drivers, confidence levels, presets, resource limits), the description provides substantial orientation: preset suggestions, the @summary caveat, the budget-error hint, and a clear non-extraction guarantee. The description does not explain what each target means, but it correctly defers to list_targets. So it's complete enough without being exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters well. The description adds important cross-references that the schema alone does not capture: the distinction between @summary and full-read statistics, the warning that @summary omits page_count so ask explicitly, and that list_targets should be used rather than guessing names. This goes beyond a baseline 3 by explaining how the parameters interact with presets and the driver's default set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Read facts about one local PDF, Microsoft Office, or Apple iWork document') plus a precise resource list (page/slide/sheet counts, title/author/dates, encryption, macros, structure, assets, integrity). The scope is explicit: it reports facts ABOUT the document, never extracts text, renders, runs macros, or opens connections. It also names sibling tools (list_targets, probe_batch) and distinguishes from unzipping/byte-parsing by hand. This is clear and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises 'Start with targets ["@summary"], or ["@security"] to triage an untrusted file.' and 'Prefer this over unzipping the document or parsing its bytes by hand.' It also warns about @summary omitting statistics and instructs to 'Call list_targets rather than guessing a name.' This provides direct when-to-use and when-not-to-use guidance, plus pointers to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

probe_batchProbe several documentsA
Read-onlyIdempotent

Probe many local documents in one call — inventory a folder, triage a batch of uploads, or compare a set of files. One engine process handles the whole batch, so this is much cheaper than calling probe once per file.

Takes literal paths; expand any glob yourself first. Returns one entry per path, in the order given, each carrying that file's report or its own error envelope. A file that fails does not affect the others.

Defaults to the compact "values" view because inventory rarely needs per-target evidence; pass view: "report" when it does.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoreport: full evidence — value, confidence, path, and cost per target. values: a compact target-to-value map.
levelNoProbe budget and eligible paths. header: identity only. metadata (default). deep: higher-cost paths, needed only when a target's min_level says so.
pathsYesDocument paths, at most 64 per call. Literal paths only.
budgetNoOverride the level's resource limits. Raise after a BUDGET_EXCEEDED error.
targetsNoShort names (slide_count), canonical names (powerpoint.slide_count), or presets: @header, @summary, @security, @structure, @assets, @quality, @format, @all. Defaults to the driver's own set. Call list_targets rather than guessing a name. @summary omits statistics needing a full-file read, so ask for a PDF's page_count explicitly.
min_confidenceNoWeakest evidence a path may offer. Default high; lower it to accept an approximation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
reportsYesOne entry per requested path, in order. A per-file failure is confined to it.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the annotations: one engine process for the batch, per-path results in order, error envelopes per file, failure isolation, default view and when to switch. Annotations already cover read-only/idempotent/destructive, and the description does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero fluff. The first sentence front-loads purpose and use cases; the second covers path handling and return behavior; the third gives view guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, nested objects, and a full output schema, the description covers the essential usage context: batch behavior, order of results, error isolation, and view default. It does not mention budget override or target selection, but those are adequately documented in the schema. The description is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds valuable semantic guidance: 'Takes literal paths; expand any glob yourself first' clarifies the paths parameter, and the view default rationale ('inventory rarely needs per-target evidence') adds context beyond the schema. It does not elaborate on every parameter, but the key ones receive useful extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool probes many local documents in one call, listing concrete use cases (inventory a folder, triage a batch, compare files). It distinguishes itself from the sibling 'probe' by explicitly being the batch counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use this tool ('Probe many local documents in one call'), gives practical scenarios, and contrasts cost efficiency ('much cheaper than calling probe once per file'). It also gives guidance on view selection ('pass view: report when it does').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.1
    • First observedlist_formats
    • First observedlist_targets
    • First observedprobe
    • First observedprobe_batch

TDQS

A4.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a wholly distinct purpose: probe handles a single file, probe_batch handles multiples, list_formats enumerates supported file types, and list_targets enumerates probe targets. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tools follow a consistent lowercase_snake_case convention with clear verb prefixes: probe, probe_batch, list_formats, list_targets. The naming style is uniform and predictable, making the tool set easy to reason about.

Tool Count5/5

With exactly 4 tools, the server is tightly scoped for its purpose of document inspection. Each tool fills a necessary role (single file, batch, format discovery, target discovery) without redundancy or bloat, fitting well within the ideal 3–15 range.

Completeness5/5

The surface covers all core workflows: probing an individual file, probing many files efficiently, discovering supported formats, and enumerating probe targets for a given format. There are no obvious dead ends or missing operations for the server's stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with comprehensive document parsing capabilities including PDF text extraction, OCR, HTML-to-markdown conversion, table extraction, and summarization, optimized for agent workflows.
    63 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.
    1
    -
  • A
    license
    A
    quality
    A
    maintenance
    Inspects documents for tampering, ineffective redactions, and text aimed at language models before they enter an agent's context, and compares documents to confirm whether they are unchanged.
    4
    47 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to inspect and convert PDF, PowerPoint, Excel, and many other file formats into clean, structured Markdown, with chunking support for long documents.
    Apache 2.0