doc-extract-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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. |
| 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. |
| chunk_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. |
| 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). |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.