Assembly MCP

Assembly MCP

Converts PDF to Markdown and Markdown to PDF using PyMuPDF and WeasyPrint engines.

Category
Visit Server

README

Assembly MCP

A small Model Context Protocol server that gives any MCP client (Claude Code, Claude Desktop, …) two document-conversion tools:

Tool Direction Engine
convert_pdftomd PDF → Markdown PyMuPDF
convert_mdtopdf Markdown → PDF WeasyPrint

Both are the conversion engines Assembly already standardises on: PyMuPDF-first extraction (font-size heading detection, running header/footer removal, table extraction, watermark stripping) and WeasyPrint for Markdown/HTML → PDF (pure-Python, no TeX toolchain).


Requirements

  • Python ≥ 3.11
  • uv (recommended) or pip
  • WeasyPrint native libraries — only needed for convert_mdtopdf (convert_pdftomd works without them):
    • Linux (Debian/Ubuntu): apt install libpango-1.0-0 libpangoft2-1.0-0 libgdk-pixbuf-2.0-0 libffi-dev
    • macOS: brew install pango gdk-pixbuf libffi
    • Windows: install the GTK3 runtime. Without it, convert_pdftomd still works and convert_mdtopdf returns a clear "install GTK" error.

Install

git clone https://github.com/AssemblyJustin/assembly-mcp.git
cd assembly-mcp
uv sync            # creates .venv and installs everything

Run the server directly to confirm it starts (it speaks MCP over stdio and will wait for a client — Ctrl-C to exit):

uv run assembly-mcp

Add to Claude Code

From anywhere, register the server (adjust the path to your clone):

claude mcp add assembly -- uv --directory /ABSOLUTE/PATH/TO/assembly-mcp run assembly-mcp

Then the tools convert_pdftomd and convert_mdtopdf are available in your session. This repo also ships matching slash commands — run Claude Code from inside the repo (or copy .claude/commands/* into your project) to use:

/convert-pdftomd  report.pdf  report.md
/convert-mdtopdf  notes.md     notes.pdf

Add to Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) and add:

{
  "mcpServers": {
    "assembly": {
      "command": "uv",
      "args": ["--directory", "C:\\ABSOLUTE\\PATH\\TO\\assembly-mcp", "run", "assembly-mcp"]
    }
  }
}

Restart Claude Desktop. The two tools appear under the 🔌 tools menu.


Tools

convert_pdftomd

Convert a PDF file to Markdown.

Argument Type Default Description
pdf_path string Path to the source .pdf.
output_path string null Optional path to also write the .md.
strip_watermarks bool true Remove Standards-NZ / IHS style watermark lines and light-grey overlay text.
front_matter bool true Prepend YAML front-matter linking back to the source PDF.

Returns the Markdown text. Extraction features: font-size heading map (largest sizes → #..####), running header/footer removal, find_tables() → pipe tables, watermark/licence-line stripping.

This is a code-only extraction (Tiers 1–2 of Assembly's pipeline). It does not run the vision-based Tier 3–4 verification, so treat the output as a high-quality first pass, not a certified copy.

convert_mdtopdf

Convert Markdown to a PDF file. Provide either md_path or markdown_text.

Argument Type Default Description
output_path string Where to write the .pdf (required).
md_path string null Path to a source .md.
markdown_text string null Raw Markdown (alternative to md_path).
title string null Document title (falls back to front-matter title).
css string null CSS to replace the built-in print stylesheet.

Renders Markdown → HTML → PDF with a clean A4 print stylesheet (tables, code blocks, page numbers) and verifies the PDF magic bytes before writing.


Develop

uv run pytest            # smoke tests (MD→PDF test auto-skips without GTK)

Project layout:

src/assembly_mcp/
  server.py       FastMCP server — registers both tools (stdio)
  pdf_to_md.py    PyMuPDF extraction pipeline
  md_to_pdf.py    python-markdown → WeasyPrint rendering
.claude/commands/ /convert-pdftomd and /convert-mdtopdf slash commands
tests/            round-trip smoke test

License

MIT — see LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured