Odel
techtenstein pdf mcp

techtenstein pdf mcp

Local
@sathvic-kolluPythonUpdated 1mo ago

PDF text and table extraction plus metadata. Supports OCR for scanned documents.

Techtenstein PDF MCP

MCP server that gives your Claude, Cline, or Cursor session the ability to extract text, tables, and metadata from any PDF URL — including scanned PDFs via OCR. Powered by the Techtenstein PDF Extract API.

Tools exposed

  • pdf_extract_text(pdf_url, ocr=False) — Extract all text from a PDF as clean plain text
  • pdf_extract_tables(pdf_url) — Extract all tables as structured row arrays
  • pdf_metadata(pdf_url) — Get title, author, page count, creation date, encryption status

Install (Claude Desktop)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "techtenstein-pdf": {
      "command": "uvx",
      "args": ["techtenstein-pdf-mcp"],
      "env": {
        "TECHTENSTEIN_API_KEY": "your_key_from_techtenstein.com"
      }
    }
  }
}

Restart Claude Desktop. pdf_extract_text, pdf_extract_tables, and pdf_metadata will appear as available tools.

Install (Cline / VS Code)

Cline auto-detects MCP servers from your Claude Desktop config. Same setup as above works.

Install (Cursor)

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "techtenstein-pdf": {
      "command": "uvx",
      "args": ["techtenstein-pdf-mcp"],
      "env": {"TECHTENSTEIN_API_KEY": "your_key"}
    }
  }
}

Get an API key

Free tier (50 extractions/day, no card): https://apis.techtenstein.com

Paid tiers start at $5/month for 2,000 extractions.

Example usage

Once installed, ask Claude:

"Extract the tables from this earnings report PDF: https://example.com/q4.pdf"

Claude will call pdf_extract_tables and return a clean structured view of every table on the page.

Or for scanned documents:

"This PDF is a scanned invoice. Extract the text: https://example.com/invoice.pdf"

Claude will call pdf_extract_text(pdf_url, ocr=True) and read the image-based text via OCR.

Response schema (text mode)

{
  "text": "Full extracted body text...",
  "page_count": 12,
  "word_count": 3450,
  "ms": 240
}

Response schema (tables mode)

{
  "tables": [
    {
      "page": 3,
      "rows": [
        ["Product", "Q1", "Q2", "Q3", "Q4"],
        ["Widget A", "1200", "1350", "1420", "1600"]
      ]
    }
  ]
}

Support

License

MIT