Skip to main content
Glama

Fullbleed MCP

First-party, local MCP tools for Fullbleed PDF Engine. The server lets agents discover the installed engine and create, preview, inspect, verify, and compile deterministic print documents through a small structured tool surface.

Install and run

python -m pip install fullbleed-mcp
fullbleed-mcp --root .

Fullbleed MCP 0.1.1 requires Fullbleed 2.5.1 or newer. This includes the tool schema correction needed by strict MCP clients. To update an existing install, upgrade both the engine and the adapter:

python -m pip install --upgrade fullbleed fullbleed-mcp

Naming both packages matters: upgrading only fullbleed-mcp can leave an older compatible engine installed.

The initial transport is newline-delimited JSON-RPC over stdio. User-supplied document paths are confined to --root. The server does not require credentials, network access, a browser, system fonts, or a system PDF runtime.

The adapter delegates rendering and discovery to the installed fullbleed distribution. It does not maintain a second renderer or capability database. Start with fullbleed_capabilities or fullbleed_agent_contract and trust their runtime-reported values.

Use this server for structured reports, invoices, statements, letters, forms, certificates, accessible/print-ready documents, template overlays, and VDP. Use a browser tool when the requested artifact is a screenshot or interactive state of an arbitrary live website.

Related MCP server: inclusio-mcp

Direct core entrypoint

Fullbleed also exposes the same dependency-free adapter directly. Use version 2.5.1 or newer for compatibility with strict MCP clients:

fullbleed mcp --root .

The separate fullbleed-mcp distribution exists for package and MCP Registry discovery and keeps optional agent-integration installation separate from pip install fullbleed.

Run with Docker

The optional repository-root Dockerfile packages the stdio server for container users and MCP directories. It builds the adapter from this repository and installs the released engine pinned in container-requirements.txt from hash-checked Linux wheels. It does not add Docker or other dependencies to the Python package.

From the repository root:

docker build -t fullbleed-mcp:local .
docker run --rm -i --network none --mount "type=bind,source=/absolute/path/to/documents,target=/workspace" fullbleed-mcp:local

Replace the source path with an existing directory. The image runs as UID/GID 10001:10001, and document paths are relative to /workspace. On Linux, add --user "$(id -u):$(id -g)" before the image name to write a directory owned by your current user. Keep -i and omit -t when connecting an MCP client over stdio.

The MCP container workflow builds the image and exercises initialization, tool discovery, previews, inspection, verification, and three-record VDP output. Its smoke run disables networking, makes the image read-only, and checks that a tool cannot read outside its document workspace. It retains the generated PDFs and preview, independently checks their text and page counts, and rejects a blank preview. A second check uses the official TypeScript MCP SDK to validate tool discovery and structured results against the running container. To run these checks locally:

python -m pip install -r requirements-test.txt
python tools/smoke_mcp_stdio.py --container-image fullbleed-mcp:local --output-dir output/mcp-smoke --json
python tools/verify_mcp_artifacts.py output/mcp-smoke
npm ci --ignore-scripts --no-audit --no-fund --prefix tools/mcp-client-smoke
node tools/mcp-client-smoke/smoke.mjs --container-image fullbleed-mcp:local

Choose a new --output-dir for each run. The smoke check refuses to overwrite an existing directory. Omitting the option uses a temporary workspace.

container-requirements.txt pins the released engine used by this distribution. Update its version and wheel hashes when intentionally moving the container to a new engine release. glama.json identifies the maintainer for the Glama directory; it does not imply that a directory has approved or scored the server.

Registry metadata

server.json is generated from this package's [tool.fullbleed-mcp.registry] metadata:

python tools/generate_mcp_server_json.py --check --json

Publish the PyPI distribution before submitting server.json; the official registry verifies the matching mcp-name marker above from the PyPI long description. Registry publication is prepared in .github/workflows/publish-mcp.yml and uses the io.github.fullbleed-engine/fullbleed-mcp namespace.

Available Tools

11 tools
fullbleed_agent_contractFullbleed agent contractA
Read-onlyIdempotent

Read the canonical installed contract: version, commands, schemas, capabilities, profiles, examples, limitations, and recommendation boundary.

Inputs: no named parameters. Returns: object

fullbleed_assetsManage Fullbleed assetsA
DestructiveIdempotent

Manage font, CSS, and icon packages with list, info, install, verify, or lock. Returns package details or operation results. Install writes workspace assets and may download supported remote packages. Use fullbleed_inspect for PDFs and fullbleed_verify for document validation.

Inputs: action (required), add, strict, package, +3 more. Returns: object

fullbleed_capabilitiesFullbleed capabilitiesA
Read-onlyIdempotent

Read the installed runtime's compact feature map and PDF profile requirements before choosing features. Use fullbleed_agent_contract for command schemas, workflow examples, and detailed limitations.

Inputs: no named parameters. Returns: object

fullbleed_compileCompile a document familyA
Destructive

Compile inline HTML/CSS and return compile_id plus template statistics for repeated calls to fullbleed_render_compiled. Handles belong to this server process; restart or eviction after 64 retained handles requires recompiling. Use fullbleed_compile_vdp for a single variable-data job without retaining a handle.

Inputs: html (required), css, font_paths, pdf_vt_job, +8 more. Returns: object

fullbleed_compile_vdpCompile and render a VDP jobA
DestructiveIdempotent

Compile inline HTML/CSS and render columnar variable records into one PDF, returning its path, counts, SHA-256, and compile/render metrics. Releases the temporary handle after rendering. Use fullbleed_compile plus fullbleed_render_compiled when reusing a template across calls.

Inputs: html (required), mode (required), bindings (required), output_path (required), +12 more. Returns: object

fullbleed_create_projectCreate a Fullbleed projectA

Create an agent-ready project or document scaffold in an absent or empty workspace directory; returns generated artifacts and next actions. Use this when starting a project, then render its source with fullbleed_render or fullbleed_render_preview.

Inputs: template, target_path. Returns: object

fullbleed_inspectInspect a PDFA
Read-onlyIdempotent

Read an existing PDF's version, page count, profile claims, warnings, and template-composition compatibility without changing it. Use fullbleed_verify to render and check HTML/CSS source, or fullbleed_assets with action='verify' to check asset package integrity.

Inputs: path (required). Returns: object

fullbleed_renderRender a print documentA
DestructiveIdempotent

Render static HTML/CSS to a PDF and return output paths and render diagnostics. Supply exactly one of html or html_path. Use fullbleed_render_preview for visual iteration, fullbleed_verify for delivery checks, or fullbleed_compile_vdp for variable records. Does not capture live websites.

Inputs: output_path (required), css, html, profile, +15 more. Returns: object

fullbleed_render_compiledRender a compiled documentA
DestructiveIdempotent

Write a PDF from compile_id returned by fullbleed_compile in this server session. Choose static copies, fixed geometry, or content reflow; returns the output path, page/record counts, and SHA-256. Use fullbleed_compile_vdp to compile and render a variable-data job in one call.

Inputs: mode (required), compile_id (required), output_path (required), copies, +2 more. Returns: object

fullbleed_render_previewRender a PDF and page previewsA
DestructiveIdempotent

Render a PDF plus PNG page previews for visual inspection after document changes; returns their artifact paths. Supply exactly one of html or html_path. Use fullbleed_render for PDF-only output and fullbleed_verify for explicit failure checks.

Inputs: output_dir (required), css, html, pdf_name, +14 more. Returns: object

fullbleed_verifyVerify a print documentA
DestructiveIdempotent

Render HTML/CSS through Fullbleed's validation path and return structured diagnostics and failures before delivery. Supply exactly one of html or html_path and select fail_on checks explicitly. Use fullbleed_inspect for an existing PDF. Internal checks do not establish independent standards conformance.

Inputs: css, html, fail_on, css_paths, +13 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 11 tools

    Disambiguation4/5

    Most tools have distinct purposes, but several rendering-related tools (fullbleed_render, fullbleed_render_preview, fullbleed_verify) all accept HTML/CSS and produce PDFs or diagnostics, requiring careful reading to choose correctly. Similarly, fullbleed_capabilities and fullbleed_agent_contract both provide reference metadata, though one is compact and the other detailed. Overall, descriptions mitigate confusion but some overlap remains.

    Naming Consistency4/5

    All tools use the fullbleed_ prefix and snake_case, with a mostly consistent verb_noun or noun phrase pattern. Minor deviations exist: some names are noun-only (fullbleed_capabilities, fullbleed_assets, fullbleed_agent_contract) while others are verb-led. Still predictable and readable.

    Tool Count5/5

    11 tools is well within the ideal range for a PDF engine, covering scaffolding, rendering, compilation, verification, asset management, and introspection without obvious redundancy. Each tool has a clear role, and the count feels appropriately scoped.

    Completeness4/5

    Core PDF rendering workflows are well-covered: project creation, static and preview rendering, verification, compiled rendering, variable data, and asset management. Minor gaps include asset removal/uninstall operations and broader PDF manipulation (e.g., merge/split/extract), but these may be outside the stated scope. Agents can complete primary tasks without dead ends.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Rust-powered PDF toolkit over MCP: create, read, and analyze PDFs; extract text and entities for RAG; convert to Markdown; split/merge/rotate/reorder pages; manage form fields and annotations; encrypt documents. Runs locally via uvx oxidize-mcp.
      12
      1,289 PyPI
      6
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Accessibility-first LaTeX publishing engine with an embedded MCP server. Tools to list registered documents, render template-driven documents, and audit built PDFs for PDF/UA-2 / WTPDF / PDF/A-4f conformance with veraPDF. MIT-licensed.
      4
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      A local MCP server that drives PDFium and pypdf to perform comprehensive PDF operations including inspection, assembly, page editing, watermarking, rendering, extraction, form filling, encryption, compression, attachments, bookmarks, and metadata management.
      MIT