doc-extract-mcp
doc-extract-mcp
一个 MCP(Model Context Protocol)服务器,为结构化数据提取工作流提供确定性的文档工具。LLM 负责阅读和提取推理;这个服务器提供那些绝不该交给语言模型的部分:可靠的文件访问、解析、分块、JSON Schema 校验,以及受保护的文件输出。
由 Koray Nar 作为作品集项目开发,用于他正在构建的 AI 文档自动化工作流——目标用例是将凌乱的 PDF(采购订单、发票、发票)转换为通过 schema 校验的 JSON。作为公开作品集的一部分发布。可与 Claude Code、针对 Claude Desktop 以及任何其他 MCP 客户端搭配使用。
为什么
提取代理会在可预期的地方失败:它凭空捏造文件内容、在长文档里丢失上下文、默默产出几乎符合目标 schema 的 JSON,并把输出写到它喜欢的位置。这个服务器消除了这些失败模式:
文件访问被限制在一个允许的根目录下(
DOC_EXTRACT_ROOT)。PDF 文本带有显式的
--- page N ---标记,因此“第 3 页”这种引用就是指真正的第 3 页。长文档按确定性规则分块,带重叠和页码提示。
提取出的 JSON 会针对 JSON Schema(Draft 2020-12)校验,并且每个错误都会随代码返回——不只是第一个——这样模型可以一次性修复所有问题,并附带 JSON Pointer 路径。
输出由服务器写入(JSON 或 CSV),位置处于同一个根目录内,并有可验证的行数/字节数。
Related MCP server: file-analyzer
工具
工具 | 参数 | 说明 |
|
| 列出允许根目录下某个目录内的文件,包含大小和修改时间。支持递归 glob,例如 |
|
| 返回文档的文本。 |
|
| 不含完整内容的元数据:类型、大小、修改时间;PDF 还包括页数和 PDF 元数据;文本文件包含行数。 |
|
| 将文档切分为有序且互相重叠的分块,每块带 index、起始偏移量以及(PDF 的)页码判断。 |
|
| 校验 JSON 字符串是否符合 JSON Schema(Draft 2020-12),通过 |
|
| 在允许的 root 内写入提取数据。CSV 需要 JSON 数组包含扁平对象。返回写入路径、行数以及字节数。 |
所有路径参数都会被解析;如果解析结果超出允许的 root,则被拒绝(路径遍历防护)。glob_pattern 参数同样受限:绝对路径模式和包含 .. 的模式都会被拒绝,任何解析到根目录之外(比如通过符号链接)的匹配都会被静默从结果中移除。防护被触发时会抛出 MCP 工具错误,所以调用模型看到的是真实原因,而不是一笔被掩盖的一般性错误。
快速开始
要求 Python 3.11+ 和 uv。
git clone https://github.com/koraynar/doc-extract-mcp.git
cd doc-extract-mcp
uv venv
uv pip install -e .单机运行(stdio 传输):
DOC_EXTRACT_ROOT=/path/to/your/documents uv run doc-extract-mcpClaude Code
claude mcp add doc-extract --env DOC_EXTRACT_ROOT=/path/to/your/documents \
-- uv run --directory /absolute/path/to/doc-extract-mcp doc-extract-mcpClaude Desktop
将下面的内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"doc-extract": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/doc-extract-mcp",
"doc-extract-mcp"
],
"env": {
"DOC_EXTRACT_ROOT": "/path/to/your/documents"
}
}
}
}DOC_EXTRACT_ROOT 如果未设置,默认使用服务器的工作目录。请把它设为你的文档所在文件夹;该目录之外的内容不会被读取或写入。
典型工作方式
list_documents(".", "*.pdf")—— 找到发票。document_info("invoice.pdf")—— 确认页数。read_document("invoice.pdf", "1-3")或chunk_document(...)—— 获取文本。让 LLM 把字段提取到 JSON。
validate_json(data, json_schema)—— 修复安全性,每项报告的错误再重新校验。save_structured("out/invoice.json", data, "json")—— 写入结果。
一些字段限制(直说)
只支持基于文本的 PDF。 提取使用 pypdf;扫描件或纯图片 PDF 会得到空文本,并且没有 OCR。
提取效果取决于 PDF 的生成方式。 多栏、大表格等复杂布局可能得到顺序不佳的文本,这是当前服务器继承自 pypdf 的特性。
不支持 .docx / .xlsx。 反向支持
.pdf、.txt、.md、.csv、.json。服务器本身不做提取推理。 它不会替你找出发票总额;它做的是保证真正去推理的那个模型,基于的是真实文本,且输出符合你的 schema。
这是一个可运行的工具,其构建是为了我目前正建设的 AI 自动化工作流,并收支作为我作品集的一部分公开——它很新,还没有生产环境里程。它有测试和路径限制防护,但还没有在此基础上做更多加固——在指向敏感目录之前,请先审查。
开发
uv venv
uv pip install -e '.[dev]'
uv run pytest测试套件在内存中构建了一个很小的两页 PDF 夹具(手工构造、无额外依赖),覆盖所有六种工具、路径遍历防护、glob 模式限制(包括符号链接逃逸)、页码范围错误、多错误 schema 校验、CSV 往返,以及通过 MCP 服务器对象进行的工具注册与错误传播。
许可证
MIT © 2026 Koray Nar
Available Tools
6 toolschunk_documentA
Split a document's text into ordered, overlapping chunks.
Useful for long documents that do not fit one context read. For PDFs the text keeps its '--- page N ---' markers and each chunk carries a 'page_hint' (the page active at the start of the chunk); for other types 'page_hint' is null.
Args: path: File path inside the allowed root. max_chars: Maximum characters per chunk (default 4000). overlap: Characters repeated between consecutive chunks (default 200, must be smaller than max_chars).
Returns a list of {index, start_char, page_hint, text} in document order.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| overlap | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses PDF-specific page markers and page_hint behavior, the overlap constraint (must be smaller than max_chars), and the return structure. It could note that it is read-only, but that is implied. Overall it is transparent about key behaviors without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose sentence, a usage note, a behavior note, an Args section, and a Returns statement. It is lean with no redundant wording and front-loads the core purpose, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, parameters, behavior, and return format. It even describes the output structure (list of {index, start_char, page_hint, text}) despite an output schema being available. There are no obvious gaps for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the parameters. It does: 'path' is the file path inside the allowed root, 'max_chars' is the maximum chunk size, and 'overlap' repeats characters between chunks, with the constraint that overlap must be smaller than max_chars. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (split) and resource (document's text), producing ordered, overlapping chunks. It also notes the tool is for long documents that don't fit one context read, implicitly distinguishing it from read_document and other siblings. This is more than adequate for purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful for long documents that do not fit one context read,' giving a clear when-to-use scenario. However, it does not name alternative tools or state when not to use it, so it misses the full 5-level guidance of explicit exclusions and named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
document_infoA
Return metadata for a document without reading its full content.
Includes file type, size, and modification time; page count and PDF metadata for PDFs; line count for text-based files.
Args: path: File path inside the allowed root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states what metadata is returned (file type, size, modification time) and notes variations (PDF metadata, line counts for text files), which is helpful. However, it does not mention error conditions (e.g., missing file, insufficient permissions), time-out behavior, or any side effects, leaving some behavioral uncertainty for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the core purpose, the second lists the main outputs, and the Args section cleanly describes the parameter. Every sentence contributes value with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param) and an output schema exists, so return values are covered externally. The description logically describes the metadata returned and file-type-specific additions. It lacks guidance on edge cases like unsupported file types or empty results, but completeness is adequate for a metadata retrieval tool. A minor gap is not explicitly stating what happens for non-PDF binary files, but the description's inclusive language ('Includes file type...') gives sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must add meaning to the single 'path' parameter. It does add the constraint 'File path inside the allowed root', which is valuable. However, it does not specify path format (absolute vs relative), whether directories are valid, or any path syntax details. This is a partial compensation but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'metadata for a document', distinguishing it from sibling tools like read_document (which reads full content) and list_documents (which lists documents). The explicit 'without reading its full content' clarifies the scope and separates it from content-reading tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—when you need metadata rather than content—by explicitly stating it returns metadata and not content. It does not name specific alternatives or exclusions, but the context of the sibling tools and the phrasing 'without reading its full content' gives clear contextual guidance without explicitly saying 'use read_document instead'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsA
List files in a directory inside the allowed root.
Args: directory: Directory path, relative to the allowed root (use '.' for the root itself) or absolute but inside it. glob_pattern: Filename filter, e.g. '.pdf' or '**/.csv' for recursive matching. Defaults to '*'. Must be relative and must not contain '..'; matching never leaves the allowed root.
Returns a list of {path, name, size_bytes, modified} entries; 'path' is relative to the allowed root and is what other tools accept.
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | ||
| glob_pattern | No | * |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only nature (listing), the security constraint (never leaving root), and the return format. It doesn't mention permissions or rate limits, but for a listing operation the disclosed traits are adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-sentence summary, parameter explanations, and return details. It's slightly verbose but every sentence provides value, and the critical scoping constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the operation, parameters, and return contract clearly. It lacks only minor details like sorting order or error behavior, which are not critical for a listing tool. The presence of an output schema (indicated by context) further reduces the need to document return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It explains directory (relative or absolute, with '.' for root) and glob_pattern (format, defaults, recursive matching, and security constraints), giving complete meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (list files) and resource (directory), with clear scoping to the allowed root. It distinguishes from siblings like read_document (reading content) and document_info (metadata) by focusing on listing directory entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies usage for listing directory contents and even notes that returned paths are accepted by other tools, guiding workflow. It doesn't explicitly contrast with alternatives or state when not to use, but the context is sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_documentA
Read a document and return its text content.
Supports .pdf (extracted per page with '--- page N ---' markers), .txt / .md / .json (read directly), and .csv (rendered as an aligned text table). Other types return a clear error.
Args: path: File path inside the allowed root. pages: Optional 1-indexed page selection for PDFs, e.g. '3', '1-5', or '1-3,7'. Empty string means all pages.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden, and it excels: PDFs are extracted per page with '--- page N ---' markers, CSV is rendered as an aligned table, and unsupported types error. It also explains the pages argument's 1-indexed syntax and examples, offering far more context than the bare schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a one-sentence summary, a compact list of supported formats, and an Args block that maps directly to the schema. Every sentence adds value, with format details and page syntax front-loaded before parameter specifics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no annotations, the description covers all operational essentials: accepted types, per-format rendering rules, page selection syntax, and error behavior. An output schema exists, so return-value documentation is unnecessary, and nothing an agent needs for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, making the description the sole source of parameter meaning. It defines 'path' as a file path inside the allowed root and explains 'pages' with concrete examples like '3', '1-5', and '1-3,7', plus the default of empty string meaning all pages.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Read a document and return its text content'), immediately clarifying the tool's function. It further specifies supported formats and states that other types return an error, which distinguishes it from sibling tools like list_documents or document_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by enumerating supported file types and noting that unsupported types return a clear error, giving an implicit when-not-to-use. However, it does not explicitly name alternative tools for metadata or chunking tasks, such as document_info or chunk_document, so the guidance relies on inference rather than direct exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_structuredA
Write extracted data to a file inside the allowed root.
Args: path: Output file path inside the allowed root; parent directories are created as needed. data: The data to write, as a JSON string. For 'csv' it must be a JSON array of flat objects (no nested arrays/objects). format: 'json' (pretty-printed) or 'csv'.
Returns {path, format, rows, bytes}; 'rows' is the row count for csv or the element count when the JSON payload is an array, otherwise null.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| path | Yes | ||
| format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does well by disclosing that parent directories are created, CSV data must be flat objects, JSON is pretty-printed, and it specifies the return shape. However, it does not mention overwrite behavior or what happens when a path falls outside the allowed root, which are relevant for a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose statement followed by Args and Returns blocks. Every sentence carries useful information, and there is no filler or repetition of schema fields without added context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and only a sparse schema, the description covers the essential usage: all parameters are explained, constraints are provided, and the return value is documented, including the rows edge case. The only notable gap is overwrite behavior and error handling for invalid or out-of-root paths, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It fully does: it explains that path is relative to the allowed root, that data is a JSON string with format-specific shape requirements, and that format controls pretty-printing. This adds meaning far beyond the schema's bare names, types, and enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear action: 'Write extracted data to a file inside the allowed root.' It names the resource (file), the action (write), and a key constraint. The sibling tools are all read/list/validation operations, so this write tool is clearly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'Write extracted data' and by the surrounding sibling tools, but the description never explicitly states when to prefer this tool over alternatives or when not to use it. There is no exclusions or alternative routing, so it relies on the agent inferring that this is the write/save operation among read-only siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_jsonA
Validate a JSON string against a JSON Schema (Draft 2020-12).
Reports EVERY validation error with a JSON Pointer path, not just the first, so extraction mistakes can be fixed in one pass.
Args: data: The JSON document to validate, as a string. json_schema: The JSON Schema to validate against, as a string.
Returns {valid, error_count, errors:[{pointer, message, validator}]}; 'pointer' is a JSON Pointer into the data ('' means the document root).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| json_schema | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the tool returns every validation error with JSON Pointer paths, not just the first, and details the exact return structure including the meaning of 'pointer'. It also specifies the schema draft version, providing comprehensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear purpose line, a behavioral note, then parameter and return documentation. Every sentence adds value, and the core action is front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and an output schema, the description is complete. It covers the input formats, the validation behavior, and the output structure, including the meaning of 'pointer'. No critical information is missing, so an agent can call it correctly without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description's explanation of 'data' as the JSON document and 'json_schema' as the schema string provides essential semantic meaning beyond the bare parameter names. It fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('validate') and resource ('a JSON string against a JSON Schema'), and specifies the schema draft (2020-12). This clearly distinguishes it from the document management siblings, as it describes a validation operation rather than document handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case by noting it reports every error 'so extraction mistakes can be fixed in one pass', which guides when to use it. It does not explicitly name alternatives, but the sibling tools are all document-oriented, so the context is sufficient. A slight gap is the absence of explicit 'when not to use' guidance.
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.
6 tool updates
v0.1.0- First observed
chunk_document - First observed
document_info - First observed
list_documents - First observed
read_document - First observed
save_structured - First observed
validate_json
TDQS
Scored across 6 tools
Each tool serves a distinct purpose: listing, reading, metadata, chunking, validation, and saving. No overlap; even read_document and chunk_document are clearly differentiated (full content vs. splitting for context). The separation is clean and unambiguous.
Most tools follow a consistent verb_noun pattern (list_documents, read_document, chunk_document, validate_json, save_structured). The exception is document_info, which uses a noun_noun form instead of get_document_info, creating a minor deviation from the otherwise predictable scheme.
Six tools is an appropriate, well-scoped count for a document extraction server. Each tool covers a necessary step in the extraction workflow without redundancy or bloat.
The tool set provides a complete lifecycle for document extraction: discovering files (list), retrieving content (read), obtaining metadata (info), handling long documents (chunk), validating structured output (validate), and persisting results (save). No obvious gaps; the scope is tightly defined and fully covered.
Maintenance
Related MCP Connectors
Turn messy text into strict JSON schemas agents can trust (invoice, receipt, contact, resume).
High-fidelity PDF to structured Markdown conversion and document field extraction.
PDF tools for AI agents: validate, extract, merge, split, compress, OCR, sign and redact.
Agent-native document parsing: PDF, scans and FR/EU invoices to structured JSON or Markdown.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables reading entire PDF documents into validated structured JSON, including tables, key-values, and markdown, with read-only extraction tools and layout reconstruction.-
- FlicenseAqualityCmaintenanceEnables read-only analysis of local unstructured documents by scanning a folder, extracting text and structural metadata, and passing content with truncation and error-awareness to an LLM for summarization.91-
- FlicenseNot gradedqualityBmaintenanceEnables agents to deterministically extract structured entities from input payloads and validate or coerce them against JSON schemas, returning a standardized response dossier with execution telemetry. It runs as a zero-dependency MCP server that plugs into Claude Desktop, Cursor, and other MCP clients.8-
- FlicenseNot gradedqualityBmaintenanceEnables deterministic extraction and validation of structured JSON data from inputs using a defined schema. It plugs into MCP-compatible clients like Claude Desktop, Cursor, and Windsurf to return standardized, schema-validated results.7-