PDF Reader logo

PDF Reader

Organization
SylphxAI

Give your AI agent eyes for PDFs — structured text, tables, OCR, visual evidence, and page-level citations via MCP. Native Rust, local-first.

PublisherSylphxAI
Repositorycitra
LanguageTypeScript
Forks
82
Stars
935
Available tools
1
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    PDF Reader exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 1 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    935 stars and 82 forks from the linked repository.

Citra

Give your AI agent eyes for PDFs — with proof.

Local-first PDF evidence for agents. Structured text, tables, OCR, visual crops, and page-level citations your agent can defend — not invent.

Canonical package @sylphx/citra · bin citra · MCP io.github.SylphxAI/citra · live 5.0.0

npm version License: MIT stars

Zero-config in one line

bash
npx -y @sylphx/citra

No Docker. No API key. No global install. Spawns a stdio MCP server agents can use immediately.

ClientSetup
Any agent / CLInpx -y @sylphx/citra
Claude Codeclaude mcp add citra -- npx -y @sylphx/citra
Claude Desktop / Cursor / VS Code / Codex"command": "npx", "args": ["-y", "@sylphx/citra"]
Global CLInpm i -g @sylphx/citra → citra

Why Citra feels unfairly good

Plain-text PDF tools make agents guess. Citra returns an Agent Document Twin they can cite.

Pain todayWith Citra
Page numbers invented or missingPage + geometry + provenance
Tables flattened into soupRows · columns · cells · bounding boxes
Scanned PDFs become noiseOCR path linked to evidence
Install / config / “hope it works”npx -y — done
Silent engine fallbacksFail closed if the native binary is missing

Five reasons teams pick Citra

  1. Zero-config — real npx MCP, not a 20-step bootstrap.
  2. Evidence, not vibes — citations agents can show a human.
  3. Local-first — PDFs stay on the machine; no required cloud vision API.
  4. Brand-sole — one package, one bin, one story (@sylphx/citra / citra).
  5. Instrument family — compose with Iris (image), Cue (video), Spine, Lookout, Locus.

See the difference

Plain text vs evidence

Without evidenceWith Citra
“Revenue was about $12M”“Page 14, Table 3, cell (row 4, col 2) = $12.4M”
Lost table structureRows, columns, cells, bounding boxes
Scanned PDF = garbage textOCR with page-linked evidence
Hidden / adversarial text ignoredTrust signals when requested

What you get

Three tools. One product surface.

ToolWhat agents use it for
read_pdfSmart default: markdown, tables, structure, OCR, citations
search_pdfFind page + snippet matches before deep reading
pdf_evidenceCrops, renders, inspect, focused evidence ops

Minimal call:

json
{
  "sources": [{ "path": "/absolute/path/to/report.pdf" }]
}

Flagship use cases

  1. Financial reports — extract table cells agents can cite by page and geometry
  2. Research papers — headings, reading order, page-level quotes
  3. Scanned documents — OCR path with evidence, not a text soup

Platforms

One optional native package is selected for your host only:

PlatformNative package
macOS arm64@sylphx/citra-darwin-arm64
macOS x64@sylphx/citra-darwin-x64
Linux x64@sylphx/citra-linux-x64-gnu
Linux arm64@sylphx/citra-linux-arm64-gnu
Windows x64@sylphx/citra-win32-x64-msvc

Missing native → fail closed (no silent TypeScript PDF engine).

Product docs

DocPurpose
docs/POSITIONING.mdStrategic positioning
docs/COMPETITIVE.mdPeer anchors and wedge
docs/EVIDENCE_CONTRACT.mdEvidence = result contract
docs/TOOL_SURFACE.mdFew clear tools policy
docs/PRODUCT_INDEPENDENCE.mdThis repo is SSOT
docs/IPPB.mdIndependent public product bar
docs/PUBLISH.mdnpm / git publish status
docs/guide/installation.mdInstall & host config
skills/citra/SKILL.mdAgent skill surface

Surfaces (MCP · CLI · SDK)

MCP (default agent path)

bash
npx -y @sylphx/citra

Claude Desktop / Cursor / VS Code / Codex

json
{
  "mcpServers": {
    "citra": {
      "command": "npx",
      "args": ["-y", "@sylphx/citra"]
    }
  }
}

Dual-era hosts that send server/discover before initialize (e.g. Gemini Antigravity CLI) are supported on stdio.

CLI

bash
npx -y @sylphx/citra --help

SDK

  • @sylphx/citra/sdk → Citra (read / search / evidence)
  • @sylphx/citra/pure-rust → low-level client helpers
  • Same tools as MCP: read_pdf · search_pdf · pdf_evidence
  • Requires the platform optional native package (same as MCP)

Install footprint (honest)

Compare full clean installs, not “JS wrapper tarball vs native executable”:

Metric (measured clean install, linux-x64)Historical TS 3.0.14Sole-Rust 4.1.0 lineage
Main package on disk~403 KB~77 KB
Full node_modules~82.3 MiB~24.4 MiB (~3.4× smaller)
Installed files4,10120 (~205× fewer)
Production npm depsPDF.js + MCP TS SDK + more{} + one platform native

The native binary is multi-megabyte because it is the PDF engine. That is expected — and still a cleaner install than shipping PDF.js + a large JS tree.

Details: installed footprint comparison

Performance (method-bounded)

Controlled same-host linux-x64 dual-mode A/B vs historical @sylphx/pdf-reader-mcp@3.0.14, using registry-installed sole-Rust natives (measured on the 4.1.x lineage; method applies to current sole-Rust packages):

ModeWhat it measuresResult
persistent_warmlong-lived server, repeated identical local read_pdf after warm-up≥ ~10× median latency improvement on all 8 required fixture classes
startup_inclusivespawn + initialize + one tasklarge advantage on the same fixtures

persistent_warm includes a process-local cache for identical local path+options. First request in a process still pays full parse cost.

Not a multi-host guarantee. Details: 4.1.0 report · claims policy

Engine note

Current production is a native Rust engine on supported platforms via a thin Node launcher.

Local-first. Five platform packages. One clean install. Fail closed without the matching native.

Unusually formed or broken ToUnicode CMaps are handled without crashing; the release binary is panic-unwind so a worker-thread panic fails the request instead of aborting the process (#608).

Engineering history and recovery pins: docs/migration.md — not the product pitch.

Product proof & links


Stop PDF hallucinations. Give agents proof.

bash
npx -y @sylphx/citra

Installation

TypingMind
Prerequisites:

Node.js 18+

{
  "mcpServers": {
    "pdf-reader-mcp": {
      "command": "npx",
      "args": [
        "@sylphlab/pdf-reader-mcp"
      ]
    }
  }
}

Available Tools

  • read_pdf

    Reads content/metadata/images from one or more PDFs (local/URL). Each source can specify pages to extract.

Use PDF Reader MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once PDF Reader is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add PDF Reader as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the PDF Reader MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "@shtse8/pdf-reader-mcp"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the PDF Reader MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the PDF Reader MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use PDF Reader to help me with this task?
PDF Reader
Sure. I read it.
Here is what I found using PDF Reader.

Frequently asked questions

What is the PDF Reader MCP server used for?

PDF Reader is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use PDF Reader MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use PDF Reader with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use PDF Reader MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With PDF Reader connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect PDF Reader MCP to TypingMind?

PDF Reader runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does PDF Reader MCP provide in TypingMind?

PDF Reader exposes 1 MCP tools that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use PDF Reader MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If PDF Reader requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇