Inclusio Mcp

io.github.sebastienrousseauv0.0.8更新於 Oct 4, 2026

Inclusio MCP server for accessibility-first LaTeX publishing (PDF/UA-2, WTPDF, PDF/A-4f).

概覽

AI 產生的概覽

讓助理列出、渲染並稽核 LaTeX 文件,產出符合無障礙規範的 PDF 與其他格式。

功能
提供四個工具:list_docs 與 doc_count 列舉內容樹中的文件,render 從 LaTeX 原始檔建置帶標籤的 PDF(以及 HTML5、JATS XML 或 EPUB3),audit_pdf 執行 veraPDF 無障礙稽核。另有三個唯讀資源,分別提供專案清單、最新稽核報告與引擎版本。它是 Inclusio 無障礙優先出版引擎的 MCP 介面。
適用情境
適合讓助理驅動 LaTeX 出版流程:產出符合 PDF/UA-2、WTPDF 與 PDF/A-4f 的輸出、檢查無障礙合規性,或從同一份原始檔匯出 HTML、JATS 與 EPUB。適用於需要帶標籤、可稽核 PDF 的文件、履歷與論文工作流程。
執行需求
以 pip 安裝本機 Python 套件並啟用 mcp 額外元件;需要 Python 3.11 以上版本,以及 PATH 中的 LuaLaTeX 工具鏈。支援 Linux、macOS 與 WSL。選用外部工具可擴充功能:veraPDF 用於嚴格稽核關卡,pandoc 3.0 以上版本用於多格式匯出,c2patool 用於 C2PA 憑證,pyhanko 用於 PAdES 簽章。內容目錄透過 INCLUSIO_CONTENT_DIR 或 --content-dir 指定。
安裝前請注意
render 工具會將建置產物寫入設定的內容目錄,audit_pdf 會從中讀取 PDF。來源與簽章功能需要憑證與金鑰檔案路徑,雲端 LLM 評審需要僅透過環境變數提供的服務商 API 金鑰。選用外部二進位檔會以子程序方式呼叫,請從可信任來源安裝。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Inclusio Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Inclusio logo]

Inclusio

Publishing that includes everyone.

Accessibility-first publishing engine for LaTeX, packaged as a Python CLI. PDF/UA-2 + WTPDF + PDF/A-4f triple-conformance, C2PA + PAdES + SLSA provenance, multi-format emission (HTML5 / JATS / EPUB3), LLM-augmented judges, and an MCP server for agent integration.

[Engine Validation] [veraPDF Audit] [Glama MCP server score] [Python >= 3.11] [PDF/UA-2 · WTPDF · PDF/A-4f] [Apache-2.0 OR MIT licence]

[Inclusio Demo]


Contents


Install

bash
pip install inclusio                       # engine + CLIpip install 'inclusio[mcp]'                # + FastMCP serverpip install 'inclusio[provenance]'         # + pyhanko (PAdES)pip install 'inclusio[dev]'                # + pytest, ruff, sphinx, interrogate

Requires Python ≥ 3.11 and a LuaLaTeX toolchain on PATH. Linux, macOS, and WSL are supported (native Windows works for the Python surface; the LaTeX gate needs WSL or a TeX Live install).

Optional toolAddsInstall
verapdfThe strict EAA / accessibility audit gateverapdf.org/install
pandoc (≥ 3.0)HTML5 / JATS XML / EPUB3 multi-format emissionbrew install pandoc · apt install pandoc
c2patoolC2PA Content Credentialscontentauth/c2patool releases
pyhanko (via [provenance])PAdES B-T / B-LT / B-LTA signingPulled by the extra

Build from source

bash
git clone https://github.com/sebastienrousseau/inclusio.gitcd inclusio./bin/setup        # check toolchain + install dev extrasmake test          # smoke suitemake coverage      # full suite (gate: 97 %)

Quick Start

A complete worked example you can paste into a fresh directory:

bash
pip install inclusio
# Grab the minimal example, build + audit + emit + judge:git clone --depth=1 https://github.com/sebastienrousseau/inclusiocd inclusio/examples/01-hello-world && make

That single make produces build/hello.pdf (PDF/UA-2 + WTPDF + PDF/A-4f triple-conformance), runs veraPDF over it, and exits non-zero if any flavour fails.

Drive the same surface from Python:

python
# quickstart.pyimport subprocessfrom pathlib import Path
# 1. Render + build the bundled "hello" fixture — the CLI is the#    canonical entry point for the LaTeX step.subprocess.run(    ["python", "-m", "inclusio.cli.build", "build", "--doc", "hello"],    cwd="examples/01-hello-world",    check=True,)
# 2. Audit the produced PDF in-process — pure-Python, no subprocess.from inclusio.cli import audit
pdfs = audit.collect_pdfs(    target=Path("examples/01-hello-world/build"),    build_dir=Path("examples/01-hello-world/build"),    registry_stems={"hello"},)report = audit.audit(pdfs)assert report["summary"]["fail"] == 0, "veraPDF reported a failure"print(f'  PASS  {report["summary"]["pdfs"]} PDF(s), '      f'{report["summary"]["pass"]}/{report["summary"]["total"]} checks')# →   PASS  1 PDF(s), 3/3 checks

Features

  • Tagged PDF, by default. Every build emits a PDF/UA-2 + WTPDF + PDF/A-4f triple-conforming artefact via the LaTeX kernel's tagpdf integration. The veraPDF audit gate is wired into CI and exits non-zero on any FAIL.
  • Multi-format emission. The same LaTeX source produces HTML5 (WCAG-clean), JATS XML (1.3, JATS4R-ready), and EPUB3 via Pandoc.
  • LLM-augmented judges. ATS (Workday / Greenhouse / Lever heuristic), citation grounding, and JD-to-CV fit — local llama.cpp or BYO-key cloud (Anthropic / OpenAI), with heuristic-only fallback when the LLM is unreachable.
  • Content provenance. C2PA Content Credentials (via c2patool), PAdES B-T / B-LT / B-LTA signatures (via pyhanko), and SLSA L3 build attestation (via actions/attest-build-provenance).
  • MCP server. inclusio-mcp exposes list_docs, audit_pdf, render, and doc_count so Claude Code, Cursor, Continue, or any other MCP client can drive the engine.
  • JSON Resume importer. inclusio import-resume converts a jsonresume.org v1 document into the engine's CV YAML schema.
  • Brief-driven CV tailoring. ATS-clean variants tailored against a job description with British-English cleanup and consistency lint.

Usage

Build, audit, judge a registered document

bash
inclusio build --doc cv --mode draft        # → build/cv.pdfinclusio audit --strict                     # → veraPDF, non-zero on FAILinclusio judge --doc cv --judge ats         # → grade + findings

Score a CV against a job description

python
# score_cv.py — fully runnable: drop into a directory with brief.txt + cv.txtfrom pathlib import Pathfrom inclusio.judge import jd_fit
jd_text = Path("brief.txt").read_text(encoding="utf-8")cv_text = Path("cv.txt").read_text(encoding="utf-8")
report = jd_fit.score_jd_fit(jd_text, cv_text)print(f"score:   {report.score}/100   grade: {report.grade}")print(f"missing: {sorted(report.metrics['missing_required'])[:5]}")# → score:   78/100   grade: B# → missing: ['opentelemetry', 'rust']

Drive the engine over MCP

bash
inclusio-mcp                          # stdio (Claude Code default)inclusio-mcp --http --port 8765       # Streamable HTTP

Wire into Claude Code via ~/.claude/claude_desktop_config.json:

json
{  "mcpServers": {    "inclusio": {      "command": "inclusio-mcp",      "env": { "INCLUSIO_CONTENT_DIR": "/absolute/path/to/content" }    }  }}

Embed C2PA Content Credentials

bash
inclusio provenance --doc cv \  --cert /path/to/cert.pem \  --key  /path/to/key.pem \  --output build/cv.c2pa.pdf

Tools

The inclusio-mcp server exposes four MCP tools:

  • list_docs — Enumerate documents registered in the content tree
  • doc_count — Quick count of available documents
  • render — Build a tagged, conformant PDF (and other formats) for a document
  • audit_pdf — Accessibility audit of a PDF (veraPDF)

Plus three read-only resources:

  • inclusio://meta — Project manifest (meta.yaml)
  • inclusio://audit/latest — Latest audit report
  • inclusio://version — Engine version card

Architecture

inclusio/                  # Python package  cli/                     # build · audit · render · tailor · judge · emit · provenance · …  judge/                   # ats · citations · jd_fit · local_llm · cloud_llm  emit/                    # pandoc (HTML5 / JATS XML / EPUB3)  provenance/              # c2pa (c2patool) · pades (pyhanko)  mcp/                     # FastMCP server  tools/                   # fix_semantic · stamp_pdfs · overlaycore/                      # LaTeX classes (.cls) and styles (.sty)templates/                 # Jinja2 templates for the template-driven docsbenches/                   # pytest-benchmark micro-benchmarksexamples/                  # Six self-contained runnable scenariosdocs/                      # Sphinx documentation

External consumers supply their own content tree (LaTeX sources, YAML metadata, brand assets) and point the engine at it through INCLUSIO_CONTENT_DIR or --content-dir. The repo's own src/ and data/ directories double as the public-engine self-test fixtures.

Examples

#FolderWhat it teaches
101-hello-world/Tagged-PDF build with the audit gate
202-cv-from-jsonresume/JSON Resume → CV → ATS + JD-fit scoring
303-paper-with-citations/Paper → PDF + HTML + JATS + EPUB + citation judge
404-mcp-agent/inclusio-mcp + Claude Code skill
505-c2pa-sign/C2PA Content Credentials
606-pades-sign/PAdES B-T eIDAS signature

Each folder has its own Makefile (make help lists targets) and a README.md with the why + the how.

Documentation

  • Quickstart — five-minute walkthrough.
  • Tutorials — four end-to-end walkthroughs paired 1 : 1 with the examples.
  • Architecture — public-engine vs content-repo boundary, sprint history, decision log.
  • Tagged PDF — the conformance stack.
  • Multi-format — HTML / JATS / EPUB.
  • Judges — ATS, citations, JD-fit, LLM rerank contract.
  • Provenance — C2PA, PAdES, SLSA.
  • MCP server — tool + resource surface.

Publishing against an external content tree

bash
make publish CONTENT_DIR=/absolute/path/to/your-content-repo

The content repo supplies its own data/meta.yaml (document registry) and src/**.tex (LaTeX sources). The engine reads no state from outside INCLUSIO_CONTENT_DIR once it's set.

Development

bash
make test          # smoke (≤ 20 s)make coverage      # full suite + 97 % gate (~3 min)make docstrings    # 100 % interrogate gatemake benchmark     # pytest-benchmark micro-budgetsmake audit-strict  # veraPDF, exits non-zero on any FAILmake docs          # Sphinx

All commits to main are squash-merged via PR. Branch protection requires Lint (ruff) + Public Engine Checks (py3.11 / 3.12 / 3.13) + the Signed-commit gate to pass. See CONTRIBUTING.md.

Security

  • SSH-signed commits. Every commit on main is GitHub-verified.
  • Signed tags. Release tags are ED25519-signed.
  • SLSA L3 build provenance (gated on the repo being public or on a paid GitHub plan).
  • PyPI Trusted Publishing wiring (pypa/gh-action-pypi-publish) in release.yml; flip vars.PYPI_TRUSTED_PUBLISHING=true once the PyPI publisher is configured.
  • Cloud LLM keys are env-var only — inclusio never auto- discovers credentials from disk.

Report vulnerabilities per SECURITY.md.

Related MCP Servers

Sibling MCP servers by the same author — each targets a different agent workflow:

ServerPurpose
noyalib-mcpLossless YAML 1.2 parsing, formatting & validation (Rust)
rlg-mcpRustLogs log streams for on-call / SRE agent workflows
pain001-mcpGenerate & validate ISO 20022 pain.001 payment initiation files
bankstatementparser-mcpParse bank statements (BAI2, MT940/MT942, CAMT.053, OFX, CSV)
camt053-mcpParse & reconcile ISO 20022 camt.053 bank-to-customer statements
acmt001-mcpGenerate & validate ISO 20022 acmt.001 account management messages

MCP Registry

mcp-name: io.github.sebastienrousseau/inclusio-mcp

Install the MCP server with pip install 'inclusio[mcp]' (the mcp extra pulls in mcp[cli]>=1.27.0). Run with inclusio-mcp — stdio transport, exposes accessibility-publishing tools to Claude Desktop, Cursor, and other MCP clients.


License

Licensed under either of:

at your option. © 2026 Sebastien Rousseau.

來源:README.md,提交 59e0d40

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.0.8最新Oct 4, 2026