Bluebeam MCP
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., "@Bluebeam MCPgive me the takeoff totals on the site plan grouped by subject"
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.
Bluebeam MCP
Give Claude (or any MCP client) a working knowledge of Bluebeam Revu PDFs: read takeoff quantities, see drawings, search sheets, and add Bluebeam-style markups - without a Bluebeam Max subscription.
Bluebeam stores a lot inside the PDF: measurement markups carry their scale and quantity, Cloud+ markups are grouped callouts, replies and review statuses hang off their parent, layers are optional content groups. This server reads and writes that structure directly with PyMuPDF, so it works on any Bluebeam-marked PDF on disk - open in Revu or not, one file or a whole folder of sets.
What you can ask
"Give me the takeoff totals on the site plan, grouped by subject." "Export every markup in this set to Excel like Revu's Markups List." "Show me sheet C-101 and cloud the headwall at station 12+50 with a note to verify grade." "Which sheets mention 'riprap'? Build me a sheet index." "Compare the markups in rev 2 and rev 3 - what was added or closed out?" "Flatten the redlines into a copy and extract sheets 7-9."
Related MCP server: PDF Tools
Example
bb_takeoff_summary on a plan with area, length and count takeoffs (trimmed):
{
"rows": [
{"group": {"subject": "Riprap Area"}, "kind": "area", "markups": 2, "total": 10121.53, "unit": "sf"},
{"group": {"subject": "Riprap Area"}, "kind": "volume", "markups": 1, "total": 96.45, "unit": "cu yd"},
{"group": {"subject": "Concrete Slab"}, "kind": "area", "markups": 1, "total": 3333.33, "unit": "sf"},
{"group": {"subject": "Inlet Count"}, "kind": "count", "markups": 1, "total": 3, "unit": "count"}
],
"scales": [{"page": 2, "scale": "1 in = 30 ft' in\"", "units_per_point": 0.4166667}],
"warnings": []
}Quantities come from the value Bluebeam itself displays; the geometry is recomputed as a cross-check, and any markup where the two disagree (cutouts, arcs, edited captions) is flagged.
Features
Takeoff | Areas, lengths, perimeters, counts and volumes from Bluebeam measurement markups, grouped by subject, layer, page, author, outline or fill color, depth, or custom column, with per-page scales and mismatch warnings |
Markups List export | CSV, Excel (with a Takeoff sheet) or JSON with Revu's columns: subject, page label, author, date, status, layer, comments, measurement, depth, color, custom columns |
See the drawing | Render a sheet, a region or a single markup to an image the model can look at; pixel-to-point mapping included, rotated sheets handled |
Find things | Sheet index from page labels, bookmarks and title blocks; text search with page labels and locations; page text by block or word |
Mark up | Text boxes, callouts, notes, Cloud+ (grouped like Revu's), rectangles, ellipses, polygons, polylines, arrows, highlights, area/length/count measurements, built-in, image or PDF stamps |
Review | Edit or delete markups (groups and replies follow), reply, set review status (Accepted / Rejected / Completed ...), manage layers, diff the markups of two revisions |
Pages | Document info, rotate, delete, extract, merge, split, insert, flatten (all or some pages) |
Revu | Open a file in the running Revu; report Revu's version and which scripting features the local license allows |
Quick start
Requirements: Windows, Python 3.11+. Bluebeam Revu is only needed for bb_open_in_revu.
git clone https://github.com/walkerladams01-rgb/Bluebeam-MCP-.git bluebeam-mcp
cd bluebeam-mcp
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txtClaude Code
claude mcp add --scope user bluebeam -- "$PWD\.venv\Scripts\python.exe" "$PWD\server.py"Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json)
{
"mcpServers": {
"bluebeam": {
"command": "C:\\path\\to\\bluebeam-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\bluebeam-mcp\\server.py"]
}
}
}Restart the client, then ask for bb_revu_status to check the connection.
Tools
Area | Tool | What it does |
Revu |
| Revu version, running state, active tab, what the license allows |
| Open a PDF in the running Revu (edit or view) | |
Read |
| Quantities grouped and totalled, with scales and warnings |
| Markups with Bluebeam fields; filters by page, type, subject, author, layer | |
| CSV / XLSX / JSON Markups List | |
| Added / removed / changed markups between two files | |
| Layers with visibility and markup counts | |
Sheets |
| Per page: label, bookmark, size, scale, title-block text |
| Find text with locations; page text as text, blocks or words | |
| PNG of a sheet, a region or one markup | |
Write |
| Text box, callout or sticky note |
| Cloud+, rectangle, ellipse, polygon, polyline, line, arrow | |
| Highlight every hit of a phrase, or a rectangle | |
| Area, perimeter, length or count at the sheet's scale (experimental) | |
| Built-in stamp, image or a Revu PDF stamp | |
| Change or remove markups by id | |
| Reply and/or review status | |
| Layers | |
Pages |
| Metadata, page sizes, labels, markup counts |
| Page edits | |
| New files from pages | |
| Burn markups into the page (to a new file by default) |
Conventions: pages are 1-based and ranges look like "1,3-5"; coordinates are PDF points
(1/72 in) from the top-left corner; markup ids are Bluebeam's own /NM GUIDs.
Safety
Nothing is overwritten silently. Every write takes
output_path(a new file; the source is untouched). Without it the file is edited in place after the original is copied to.bb_backups\<name>.<timestamp>.pdfbeside it. A call that changes nothing writes nothing.Revu does not lock the PDFs it has open and would overwrite outside edits when it saves. The server refuses to edit the file in Revu's active tab (or one another program holds open) and adds a warning to in-place writes whenever Revu is running.
bb_flattenwrites<name> (flattened).pdfunless told to flatten in place.Read tools never write. Logs go to stderr; stdout is reserved for the MCP protocol.
Bluebeam's official MCP server
Revu 21.9+ ships its own MCP server, which drives Revu directly. It requires a Bluebeam Max
subscription and an admin setting (Preferences > Admin > MCP). This project needs neither and is
complementary: it works on files rather than the live Revu session, handles many files at once, and
focuses on quantities. bb_revu_status tells you whether the official server is available.
Limitations
Bluebeam's annotation format is undocumented; the parser follows what Revu writes into real takeoff sets. Volumes (depth units), custom columns and how Revu displays markups written here (especially measurements) should be spot-checked in Revu. Volume rows are marked
volume_unverifieduntil then.Revu itself can only be asked to open a file (
Revu.LauncherCOM); it cannot be told to close, save or refresh one. Reopen a file in Revu to see changes made on disk.Windows only (COM and file locking); the PDF tools themselves are pure Python.
Development
.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
.venv\Scripts\python.exe -m pytest -q # no Revu needed
.venv\Scripts\python.exe -m pytest -m integration # talks to the local RevuTests build synthetic PDFs with tests/bb_synth.py, which reproduces the structures Revu writes
(indirect /Measure dictionaries, Cloud+ groups, count groups, replies, review states, layers,
UTF-16 page labels, viewport scales), so no drawings are needed or committed.
server.py FastMCP entry point (stdio)
bluebeam/core.py errors, paths, page ranges, markup ids, safe writes
bluebeam/markups_read.py Bluebeam markup parser -> tools_read.py
bluebeam/takeoff.py quantity math and grouping
bluebeam/render.py page and markup rendering
bluebeam/markups_write.py markup writers -> tools_write.py
bluebeam/pages.py page operations, document info -> tools_pages.py
bluebeam/revu_native.py Revu.Launcher COM and status -> tools_native.pyCredits
Started from mblakebaugh-hub/bluebeam-mcp and rebuilt with Claude Code. Not affiliated with or endorsed by Bluebeam, Inc.; Bluebeam and Revu are trademarks of Bluebeam, Inc.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
- docs2mcpOAuthcom.docs2mcp
Query your own PDFs and documents from any MCP client. Every answer cites the page it came from.
Generate PDFs from templates via AI chat. Works with Claude, ChatGPT, Cursor, and any MCP client.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
High-fidelity PDF to structured Markdown conversion and document field extraction.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Claude to read and analyze PDF documents with automatic OCR processing for scanned files. Features intelligent text extraction, caching for performance, and secure file access with search capabilities.1-
- AlicenseNot gradedqualityAmaintenanceThe local PDF workflow for Claude Desktop and MCP hosts: fill, sign, merge, split, extract, and analyze PDFs without sending files to a web app.0158MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that exposes Bluebeam Revu 21 to Claude for PDF markup, document management, and layer control via Windows COM automation.-
- AlicenseNot gradedqualityCmaintenanceMCP 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.22 PyPIMIT