- Pdf Reader Mcp Server
Pdf Reader Mcp Server
An MCP (Model Context Protocol) server specialized in deciphering PDF internal structures.
While typical PDF MCP servers are thin wrappers for text extraction, this project focuses on reading and analyzing the internal structure of PDF documents. Pair it with pdf-spec-mcp for specification-aware structural analysis and validation.
Overview
PDF Reader MCP Server
English | 日本語
An MCP (Model Context Protocol) server specialized in deciphering PDF internal structures.
While typical PDF MCP servers are thin wrappers for text extraction, this project focuses on reading and analyzing the internal structure of PDF documents. Pair it with pdf-spec-mcp for specification-aware structural analysis and validation.
Features
15 tools organized into three tiers:
Tier 1: Basic Operations
| Tool | Description |
|---|---|
get_page_count | Lightweight page count retrieval |
get_metadata | Full metadata extraction (title, author, PDF version...) |
read_text | Text extraction with Y-coordinate reading order |
search_text | Full-text search with surrounding context |
read_images | Image extraction as base64 with metadata |
read_url | Fetch and process remote PDFs from URLs |
summarize | Quick overview report (metadata + text + image count) |
Tier 2: Structure Inspection
| Tool | Description |
|---|---|
inspect_structure | Object tree and catalog dictionary analysis |
inspect_tags | Tagged PDF structure tree visualization |
inspect_fonts | Font inventory (embedded/subset/type detection) |
inspect_annotations | Annotation listing (categorized by subtype) |
inspect_signatures | Digital signature field structure analysis |
Tier 3: Validation & Analysis
| Tool | Description |
|---|---|
validate_tagged | PDF/UA tag structure validation (8 checks) |
validate_metadata | Metadata conformance checking (10 checks) |
compare_structure | Structural diff between two PDFs (properties + fonts) |
Installation
npx (recommended)
npx @shuji-bonji/pdf-reader-mcp
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "npx",
"args": ["-y", "@shuji-bonji/pdf-reader-mcp"]
}
}
}
Claude Code
claude mcp add pdf-reader-mcp -- npx -y @shuji-bonji/pdf-reader-mcp
From Source
git clone https://github.com/shuji-bonji/pdf-reader-mcp.git
cd pdf-reader-mcp
npm install
npm run build
Usage Examples
Get Page Count
get_page_count({ file_path: "/path/to/document.pdf" })
→ 42
Search Text
search_text({
file_path: "/path/to/spec.pdf",
query: "digital signature",
pages: "1-20",
max_results: 10
})
→ Found 5 matches (page 3, 7, 12, 15, 18)
Summarize
summarize({ file_path: "/path/to/document.pdf" })
→ | Pages | 42 |
| PDF Version | 2.0 |
| Tagged | Yes |
| Signatures | No |
| Images | 15 |
Validate Tagged Structure (PDF/UA)
validate_tagged({ file_path: "/path/to/document.pdf" })
→ ✅ [TAG-001] Document is marked as tagged
✅ [TAG-002] Structure tree root exists
⚠️ [TAG-004] Heading hierarchy has gaps: H1, H3
❌ [TAG-005] Document has 3 image(s) but no Figure tags
Validate Metadata
validate_metadata({ file_path: "/path/to/document.pdf" })
→ ✅ [META-001] Title: "Annual Report 2025"
⚠️ [META-002] Author is missing
✅ [META-006] PDF version: 2.0
Compare Structure
compare_structure({
file_path_1: "/path/to/v1.pdf",
file_path_2: "/path/to/v2.pdf"
})
→ | Page Count | 10 | 12 | ❌ |
| PDF Version | 1.7 | 2.0 | ❌ |
| Tagged | true | true | ✅ |
Tech Stack
- TypeScript + MCP TypeScript SDK
- pdfjs-dist (Mozilla) — text/image extraction, tag tree, annotations
- pdf-lib — low-level object structure analysis
- Vitest — unit + E2E testing (185 tests)
- Biome — linting + formatting
- Zod — input validation
Testing
npm test # Run all tests (unit + E2E)
npm run test:e2e # E2E tests only (146 tests)
npm run test:watch # Watch mode
Architecture
pdf-reader-mcp/
├── src/
│ ├── index.ts # MCP Server entry point
│ ├── constants.ts # Shared constants
│ ├── types.ts # Type definitions
│ ├── tools/
│ │ ├── tier1/ # Basic tools (7)
│ │ ├── tier2/ # Structure inspection (5)
│ │ ├── tier3/ # Validation & analysis (3)
│ │ └── index.ts # Tool registration
│ ├── services/
│ │ ├── pdfjs-service.ts # pdfjs-dist wrapper (parallel page processing)
│ │ ├── pdflib-service.ts # pdf-lib wrapper
│ │ ├── validation-service.ts # Validation & comparison logic
│ │ └── url-fetcher.ts # URL fetching
│ ├── schemas/ # Zod validation schemas
│ └── utils/
│ ├── pdf-helpers.ts # PDF utilities (page range parsing, file I/O)
│ ├── batch-processor.ts # Batch processing for large PDFs
│ ├── formatter.ts # Output formatting
│ └── error-handler.ts # Error handling
└── tests/
├── tier1/ # Unit tests
└── e2e/ # E2E tests (9 suites, 146 tests)
Pairing with pdf-spec-mcp
pdf-spec-mcp provides PDF specification knowledge (ISO 32000-2, etc.). With both servers enabled, an LLM can perform specification-aware workflows:
summarize— get a PDF overviewinspect_tags— examine the tag structure- pdf-spec-mcp
get_requirements— fetch PDF/UA requirements validate_tagged— check conformancecompare_structure— diff before/after fixes
License
MIT
Server Config
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "npx",
"args": [
"-y",
"@shuji-bonji/pdf-reader-mcp"
]
}
}
}Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
CursorThe AI Code Editor
Tavily Mcp
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Playwright McpPlaywright MCP server
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Amap Maps高德地图官方 MCP Server
Serper MCP ServerA Serper MCP Server
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
ChatWiseThe second fastest AI chatbot™
WindsurfThe new purpose-built IDE to harness magic
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题;
Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
DeepChatYour AI Partner on Desktop