printbridge
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., "@printbridgeprint this page on my printer"
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.
printbridge
Let an AI assistant print on your own printer. You paste one link into Claude, ChatGPT or any other MCP client, then type "print this on my printer" — and the page comes out at home. No print cloud, no third party ever sees the document, no ports opened on your home router.
New here and not a developer? Start with docs/SETUP.md — a seven-station guide, from a printer without a fixed address to a printed test page. Everything below is the technical layer underneath it.
MIT licensed · self-hosted · Python + FastMCP + CUPS.
What it is
printbridge is an MCP server. Assistants call its tools (print_text, print_url, print_file,
list_printers, get_job, cancel_job, printer_status, recent_jobs); the server renders the
document to PDF and hands it to a CUPS queue that reaches your printer over a private route —
Tailscale by default, but any route works.
┌───────────────────────── Internet ─────────────────────────┐
│ Claude.ai ChatGPT Grok Claude Desktop Claude Code │
│ └──────────┴────────┴──────────┴──────────────┘ │
│ remote MCP (Streamable HTTP on a per-person key) │
└───────────────────────────────┬────────────────────────────┘
▼ HTTPS (Caddy, Funnel or Cloudflare Tunnel)
┌──────────────────── Server (tailnet node) ──────────────────┐
│ printbridge 127.0.0.1:8000 — never public │
│ ├─ MCP server (FastMCP) ← local agents: bearer │
│ ├─ Renderer markdown/html/text → PDF (WeasyPrint) │
│ ├─ Auth per-person connector keys → Principal │
│ ├─ Job log SQLite: metadata only, never content │
│ └─ Spooler CUPS (driverless IPP Everywhere queue) │
│ │ ipp://PRINTER_IP:631 │
└─────────────────────┼───────────────────────────────────────┘
│ private route (Tailscale subnet router, WireGuard, or same LAN)
┌─────────────────────▼──── Home network ─────────────────────┐
│ Subnet router: UDM Pro | Raspberry Pi | any Linux box │
│ │ │
│ Printer (any IPP Everywhere / AirPrint printer) │
└─────────────────────────────────────────────────────────────┘The server is the only thing with a public surface, and that surface is one authenticated MCP endpoint. The printer only ever sees traffic from your own private network.
Related MCP server: bizprint-mcp-server
Quickstart (10 minutes, for people who know a terminal)
git clone https://github.com/starkshtlm/printbridge && cd printbridge
cp .env.example .env && $EDITOR .env # PRINTERS, PUBLIC_URL, EXPOSE
docker compose up -d
docker compose exec printbridge printbridge init # wizard: printer → exposure → first key
docker compose exec printbridge printbridge doctor # green table + your connector URLOr let the installer do all of it:
curl -fsSL https://raw.githubusercontent.com/starkshtlm/printbridge/main/install.sh | bashThen paste the connector URL from doctor into your assistant
(see docs/clients.md) and say "print a test page on my printer".
One key per person, not per assistant
printbridge keys add daniel --role admin
printbridge keys add fanny --printers home --max-pages 20
printbridge keys listEach person gets one link, https://print.example.com/mcp/<key>, and pastes the same link into
every assistant they use. Which assistant they used is detected automatically from the MCP
handshake, so printbridge status can say "fanny via chatgpt, 2 jobs today" without anybody
configuring anything. Revoking one person leaves everyone else alone.
What it will not do
It will not print more than
MAX_PAGES(default 100), and aboveCONFIRM_ABOVE_PAGES(default 10) it refuses until the assistant passesconfirmed=true. An injected "print 500 pages" fails safely.print_urlwill not fetch from your LAN, your tailnet or localhost unless you setALLOW_PRIVATE_URLS=true. Every redirect hop is re-checked.It never stores what you printed — only that you printed: title, pages, printer, person, assistant, status. The spool file is deleted when the job leaves the queue.
It never binds a public interface.
127.0.0.1:8000for MCP,127.0.0.1:8001for admin and metrics; a reverse proxy is the only public face.
Documentation
Document | For |
Non-technical, start to finish, seven stations | |
Claude.ai, ChatGPT, Grok, Claude Desktop/Code, agents, stdio | |
Threat model; what a connector key does and does not protect | |
update, backup, watchdog, alerts, | |
VPS+Tailscale, home box, WireGuard/Headscale, local only | |
One entry per | |
UDM Pro, Raspberry Pi, generic Linux | |
Optional: print PDFs sent to a mailbox |
Status
v1.0.0 — verified end to end on 2026-09-07: a page out of a real printer from Claude.ai, from ChatGPT in developer mode, from Claude Code over a bearer token, and from an agent on the server itself. Grok is untested and this README will not claim it until somebody runs it.
Licence
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Give your AI hands. One URL. Type a job. Get a receipt.
Gives AI agents a public IPv6 identity, hostname, port forwarding, web fetch, team mesh. Free tier.
Make PDF invoices from your AI chat: clients, numbering, VAT, overdue reports. All data is local.
Give your AI hands. Identity, credential vault, and API gateway for autonomous agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to print documents, manage print queues, and control printers on macOS/Linux systems via the CUPS printing system. Supports printing PDFs, text files, and other formats with options like duplex printing, landscape orientation, and multiple copies.68 npm12MIT
- AlicenseAqualityFmaintenanceConnect AI agents to physical printers. Print receipts, shipping labels, and packing slips to your existing BizPrint-connected printers from Claude and other MCP clients.71MIT
- FlicenseNot gradedqualityDmaintenanceA cross-platform MCP server that enables AI assistants to manage printers, query printer status, and print files on Windows, macOS, and Linux.14-
- AlicenseAqualityFmaintenanceEnables AI assistants to manage 3D printing inventory, filament spools, printers, projects, and print trackers through a self-hosted Print Vault instance.40AGPL 3.0