mcp_poc
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp_pocconvert sample.pdf to markdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp_poc
A PDF-to-Markdown converter built with the Model-View-Controller (MVC) pattern using the Model Context Protocol (MCP).
Architecture
The project follows a clean separation of concerns across three layers, connected via MCP's stdio transport.
flowchart TB
subgraph Client["Client Layer"]
C[mcp_client.py<br/>Stdio Client Connector]
end
subgraph Server["Server Layer (Controller)"]
S[mcp_server.py<br/>FastMCP Server]
T[convert_pdf Tool]
P[summarize_markdown Prompt]
end
subgraph Model["Model Layer"]
M[PyMuPDF / fitz<br/>PDF Text Extraction]
end
subgraph View["View Layer"]
V[Markdown Formatter<br/>## Page N]
end
C -->|stdio JSON-RPC| S
S --> T
T --> M
M --> V
V --> T
T --> S
S -->|Tool Result| CFile Responsibilities
File | Role | Description |
| Controller | Exposes |
| Connector | Manages the stdio client session used to call the server's tools from external processes or LLMs. |
| Entry Point | Can run the server in stdio mode ( |
| Test | End-to-end integration test that launches the server via stdio and verifies tool execution. |
Related MCP server: PDF2MD MCP Server
Quick Start
1. Install Dependencies
python -m venv venv
# Windows
.\venv\Scripts\pip install -r requirements.txt
# macOS / Linux
source venv/bin/activate && pip install -r requirements.txt2. Run a Direct Conversion (Local Test)
.\venv\Scripts\python main.py data/sample.pdf3. Run the MCP Server (for Claude / IDE integration)
.\venv\Scripts\python main.py --server4. Run Integration Test (Client → Server)
.\venv\Scripts\python test_integration.pyProject Structure
mcp_poc/
├── .env # Environment configuration
├── .gitignore # Git ignore rules
├── README.md # This file
├── main.py # Application entry point
├── mcp_client.py # MCP stdio client connector
├── mcp_server.py # MCP server with tools & prompts
├── requirements.txt # Python dependencies
├── test_integration.py # Integration test
└── data/
└── sample.pdf # Test PDFHow It Works
Client (
mcp_client.py) spawns the server as a subprocess and communicates over stdio.Server (
mcp_server.py) receives aconvert_pdftool call.Model (
fitz/ PyMuPDF) opens the PDF and extracts raw text page by page.View formats the extracted text as Markdown with
## Page Nheaders.The formatted Markdown is returned to the client via the MCP protocol.
Extending
OCR Support: Swap the Model layer to use
marker-pdfor an external OCR API for scanned documents.Additional Tools: Add more
@mcp.tool()definitions inmcp_server.pyfor image extraction, metadata parsing, etc.Alternative Transports: Replace
stdiowithsseorhttpinmcp.run(...)for remote deployments.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Markdown to PDF: headings, bold, code, lists, rules. A4/Letter/Legal. Free 30/hr. MCP + REST.
Generate PDF, Word (.docx) and PowerPoint (.pptx) documents from Markdown over MCP.
High-fidelity PDF to structured Markdown conversion and document field extraction.
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP server that exports PDF documents to markdown format optimized for LLM processing.11BSD 3-Clause
- AlicenseAqualityDmaintenanceAn MCP server that converts PDF files to Markdown format using AI sampling capabilities, supporting both local files and URLs with incremental conversion features.11MIT
- FlicenseAqualityDmaintenanceAn MCP server that enables bidirectional conversion between Markdown and PDF formats, including text extraction from specific pages and metadata retrieval. It supports customizable PDF output sizes and document processing through standard MCP tools.51-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that downloads PDF files from URLs and converts them to Markdown format. Supports custom file names and directories, with security measures like SSRF protection.-