An MCP server that exposes PDF files as resources, page by page, over Streamable HTTP.
Create and activate a virtual environment, then install dependencies:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtfastmcp run server.py --transport httpThe MCP endpoint will be available at http://localhost:8000/mcp.
| Flag | Default | Description |
|---|---|---|
--host |
127.0.0.1 |
Bind address |
--port |
8000 |
Port |
--reload |
off | Restart on file changes (dev mode) |
Example with custom port:
fastmcp run server.py --transport http --port 9000Place PDF files in the same directory as server.py. Three resource URIs are exposed:
| URI | Returns |
|---|---|
pdf://list |
List of all PDF filenames in the server directory |
pdf://{filename}/info |
Page count and metadata for the given PDF |
pdf://{filename}/page/{page} |
Extracted text of page {page} (1-indexed) |
pdf://list
pdf://my_document.pdf/info
pdf://my_document.pdf/page/1
Use fastmcp (on cli) to run the server (and select the transport form)
fastmcp run server.py --transport httpInspecting can be done with
npx @modelcontextprotocol/inspectorand connect after giving the URL returned by fastmcp command (usually http://127.0.0.1:8000/mcp) with a Streamable http transport type.