npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@fabriqa.ai/pdf-reader-mcp

v1.0.7

Published

MCP server for efficient PDF text extraction, search, and metadata retrieval for Claude Code

Readme

PDF Reader MCP Server

npm version npm downloads

A Model Context Protocol (MCP) server that provides efficient PDF text extraction capabilities for Claude Code. This server allows you to read, search, and extract metadata from PDF files without loading the entire content into Claude's context window.

npm package: @fabriqa.ai/pdf-reader-mcp Author: Cengiz Han Blog Post: How I Built This Tool to Save My Context

Features

  • Read PDF Files: Extract full text content from PDF files with optional text cleaning
  • Search PDFs: Search for specific text within PDFs with context-aware results
  • Extract Metadata: Get detailed metadata including title, author, page count, dates, etc.
  • Efficient Context Usage: Process large PDFs without consuming excessive Claude Code context
  • Flexible Options: Support for page ranges, case-sensitive search, and more

Installation

Option A: Install from npm (Recommended)

npm install -g @fabriqa.ai/pdf-reader-mcp

After installation, the server will be available globally. You can configure it by running:

# The package will be installed in your global node_modules
# Typically: /usr/local/lib/node_modules/@fabriqa.ai/pdf-reader-mcp

Option B: Install from source

  1. Clone this repository:
git clone https://github.com/hancengiz/read_pdf_as_text_mcp.git
cd read_pdf_as_text_mcp
  1. Install dependencies:
npm install

Configuration

If installed via npm (Recommended):

Option 1: Using Claude Code CLI (Easiest)

# Add the MCP server
claude mcp add pdf-reader npx @fabriqa.ai/pdf-reader-mcp

# Or use the convenience script
npx @fabriqa.ai/pdf-reader-mcp/update-config.js

Option 2: Manual Configuration

Add to your ~/.claude.json:

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

This uses npx to automatically run the globally installed package without needing to specify paths.

Quick Setup Script (Optional):

After installing via npm, you can use the included configuration script to automatically update your ~/.claude.json:

npx @fabriqa.ai/pdf-reader-mcp/update-config.js

Or if installed from source:

node update-config.js

This will automatically add the MCP server using npx, making it available machine-wide across all your projects.

Manual Configuration:

For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

Usage

Once configured, restart Claude Code. The following tools will be available:

1. read-pdf

Extract text content from a PDF file.

Parameters:

  • file (required): Path to the PDF file
  • pages (optional): Page range (e.g., '1-5', '1,3,5', 'all'). Default: 'all'
  • clean_text (optional): Clean and normalize extracted text. Default: false
  • include_metadata (optional): Include PDF metadata in output. Default: true

Example:

Can you read the PDF at /path/to/document.pdf?

2. search-pdf

Search for specific text within a PDF file.

Parameters:

  • file (required): Path to the PDF file
  • query (required): Text to search for
  • case_sensitive (optional): Case sensitive search. Default: false
  • whole_word (optional): Match whole words only. Default: false

Example:

Search for "machine learning" in /path/to/document.pdf

3. pdf-metadata

Extract metadata from a PDF file.

Parameters:

  • file (required): Path to the PDF file

Example:

Get metadata from /path/to/document.pdf

Example Workflow

Here's how you might use this MCP server with Claude Code:

  1. Extract metadata first to understand the document:

    What's the metadata for ~/Documents/research-paper.pdf?
  2. Search for specific topics without reading the entire file:

    Search for "neural networks" in ~/Documents/research-paper.pdf
  3. Read specific sections when you know what you're looking for:

    Read pages 10-15 from ~/Documents/research-paper.pdf with cleaned text

Benefits

  • Context Efficiency: Process large PDF files without loading everything into Claude's context
  • Faster Analysis: Search and extract only what you need
  • Better Performance: Reduce token usage when working with multiple or large PDFs
  • Flexible Extraction: Choose what information to extract and how to format it

Technical Details

  • Built with the @modelcontextprotocol/sdk
  • Uses pdf-parse for PDF text extraction
  • Runs as a local Node.js process communicating via stdio
  • Supports all PDF versions that pdf-parse can handle

Troubleshooting

Server not appearing in Claude Code

  1. Verify the path in your configuration file is correct
  2. Ensure Node.js is installed and in your PATH
  3. Check that dependencies are installed: npm install
  4. Restart Claude Code completely
  5. Check Claude Code logs for any error messages

PDF not found errors

  • Use absolute paths to PDF files
  • Verify file permissions
  • Ensure the PDF file exists at the specified location

Text extraction issues

  • Some PDFs (scanned images) may not contain extractable text
  • Try enabling clean_text option for better formatting
  • Complex layouts may affect text extraction quality

Development

To modify or extend the server:

  1. Edit index.js to add new tools or modify existing ones
  2. Update the ListToolsRequestSchema handler to register new tools
  3. Add corresponding handlers in the CallToolRequestSchema handler
  4. Restart the server (restart Claude Code) to test changes

License

MIT

Author

Created by Cengiz Han

Contributing

Feel free to submit issues or pull requests to improve this MCP server.