← PDF Reader MCP Server

PDF Reader MCP Server 5.0.0

npm · @sylphx/citra · current release

3
Tools
0
Resources
0
Templates
0
Prompts

Observation

Observed 2026-08-14T17:30:36.846Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {}
}

Tools 3

ToolCategoryAnnotationsRisk
pdf_evidenceFocused PDF evidence operations. Pure-Rust supports inspect, bounded page rendering/crops, opt-in bounded command-provider OCR, and region analysis via command, HTTP URL, or ollama/openai-compatible/lmstudio/llamacpp presets.
Input schema
{
  "$defs": {
    "PageNumber": {
      "format": "uint32",
      "minimum": 1,
      "type": "integer"
    },
    "PageSpecifier": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/PageNumber"
          },
          "type": "array"
        },
        {
          "minLength": 1,
          "type": "string"
        }
      ]
    },
    "PdfEvidenceOperation": {
      "enum": [
        "inspect",
        "render_page",
        "extract_regions",
        "ocr_pages",
        "analyze_regions"
      ],
      "type": "string"
    },
    "PdfEvidenceRegion": {
      "properties": {
        "bounding_box": {
          "$ref": "#/$defs/RegionBoundingBox"
        },
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "padding": {
          "format": "double",
          "maximum": 200,
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "page": {
          "format": "uint32",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "bounding_box"
      ],
      "type": "object"
    },
    "PdfEvidenceSource": {
      "properties": {
        "pages": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageSpecifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "path": {
          "description": "Path to the local PDF file. Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        },
        "regions": {
          "items": {
            "$ref": "#/$defs/PdfEvidenceRegion"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "url": {
          "description": "URL of the PDF file. Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "RegionBoundingBox": {
      "properties": {
        "bottom": {
          "format": "double",
          "minimum": 0,
          "type": "number"
        },
        "left": {
          "format": "double",
          "minimum": 0,
          "type": "number"
        },
        "right": {
          "format": "double",
          "minimum": 0,
          "type": "number"
        },
        "top": {
          "format": "double",
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "left",
        "bottom",
        "right",
        "top"
      ],
      "type": "object"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "include_image": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_metadata": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "languages": {
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "max_output_chars": {
      "format": "uint32",
      "maximum": 1000000,
      "minimum": 1000,
      "type": [
        "integer",
        "null"
      ]
    },
    "max_pages": {
      "format": "uint32",
      "maximum": 20,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "max_pixels_per_page": {
      "format": "uint64",
      "maximum": 64000000,
      "minimum": 10000,
      "type": [
        "integer",
        "null"
      ]
    },
    "max_regions": {
      "format": "uint32",
      "maximum": 100,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "operation": {
      "$ref": "#/$defs/PdfEvidenceOperation"
    },
    "sample_pages": {
      "format": "uint32",
      "maximum": 20,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "scale": {
      "format": "double",
      "maximum": 4,
      "minimum": 0.25,
      "type": [
        "number",
        "null"
      ]
    },
    "sources": {
      "items": {
        "$ref": "#/$defs/PdfEvidenceSource"
      },
      "type": "array"
    },
    "timeout_ms": {
      "format": "uint32",
      "maximum": 300000,
      "minimum": 1000,
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "operation",
    "sources"
  ],
  "type": "object"
}
— · —
read_pdfPrimary PDF reader. Pure-Rust default: selectable text, markdown, chunks, tables, search, and evidence-oriented twin fields under capability-first semantic compatibility (ADR-0005).
Input schema
{
  "$defs": {
    "PageNumber": {
      "format": "uint32",
      "minimum": 1,
      "type": "integer"
    },
    "PageSpecifier": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/PageNumber"
          },
          "type": "array"
        },
        {
          "minLength": 1,
          "type": "string"
        }
      ]
    },
    "PdfSource": {
      "properties": {
        "pages": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageSpecifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "path": {
          "description": "Path to the local PDF file (absolute or relative to cwd). Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "description": "URL of the PDF file. Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "ReadPdfAutoDetail": {
      "enum": [
        "fast",
        "balanced",
        "full"
      ],
      "type": "string"
    },
    "TrustReportRedaction": {
      "enum": [
        "standard",
        "strict",
        "off"
      ],
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "auto": {
      "description": "Automatically choose high-value extraction options. Defaults to true only when no explicit include_* options are supplied.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "auto_detail": {
      "anyOf": [
        {
          "$ref": "#/$defs/ReadPdfAutoDetail"
        },
        {
          "type": "null"
        }
      ],
      "description": "Automatic extraction depth: fast | balanced | full."
    },
    "include_accessibility_report": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_annotations": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_attachments": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_chunks": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_document_ast": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_document_map": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_elements": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_form_fields": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_full_text": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_html": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_images": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_layout_diagnostics": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_markdown": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_metadata": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_ocr_text_layer": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_outline": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_page_count": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_page_geometry": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_page_labels": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_permissions": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_safety_findings": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_semantic_hints": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_structure_tree": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_tables": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_text_layer": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_trust_report": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "include_visual_enrichments": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "max_visual_enrichments": {
      "format": "uint32",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "sample_pages": {
      "format": "uint32",
      "maximum": 20,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "sources": {
      "items": {
        "$ref": "#/$defs/PdfSource"
      },
      "type": "array"
    },
    "trust_report_redaction": {
      "anyOf": [
        {
          "$ref": "#/$defs/TrustReportRedaction"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "sources"
  ],
  "type": "object"
}
— · —
search_pdfSearches extracted PDF text with page, snippet, geometry, and provenance. Optional OCR uses the bounded command provider.
Input schema
{
  "$defs": {
    "PageNumber": {
      "format": "uint32",
      "minimum": 1,
      "type": "integer"
    },
    "PageSpecifier": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/PageNumber"
          },
          "type": "array"
        },
        {
          "minLength": 1,
          "type": "string"
        }
      ]
    },
    "PdfSource": {
      "properties": {
        "pages": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageSpecifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "path": {
          "description": "Path to the local PDF file (absolute or relative to cwd). Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "description": "URL of the PDF file. Provide exactly one of path or url (not both).",
          "minLength": 1,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "case_sensitive": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "context_chars": {
      "format": "uint32",
      "maximum": 1000,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ]
    },
    "include_ocr_text_layer": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "max_matches_per_source": {
      "format": "uint32",
      "maximum": 500,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "max_pages": {
      "format": "uint32",
      "maximum": 1000,
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "prefer_speed": {
      "description": "Prefer faster text-index search (omit match geometry; ignored when OCR is enabled).",
      "type": [
        "boolean",
        "null"
      ]
    },
    "query": {
      "description": "Literal text query to search for in extracted PDF text.",
      "minLength": 1,
      "type": "string"
    },
    "sources": {
      "items": {
        "$ref": "#/$defs/PdfSource"
      },
      "type": "array"
    },
    "whole_word": {
      "type": [
        "boolean",
        "null"
      ]
    }
  },
  "required": [
    "sources",
    "query",
    "prefer_speed"
  ],
  "type": "object"
}
— · —

Resources 0

Resource templates 0

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.