Skip to main content
Glama

Vellum

Ein MCP-Server, der generierte Dokumente (.docx, .pdf) prüft, bevor sie den Benutzer erreichen – und dabei harte, messbare Fakten über Struktur, Typografie, Abstände und Sprachkorrektheit extrahiert, damit ein KI-Assistent seine eigenen Formatierungsfehler erkennen kann, statt sie auszuliefern.

Entwickelt gegen die 2026-07-28 MCP-Spezifikation. Siehe docs/architecture.md für die vollständige Begründung des Designs.

Warum

Fähigkeiten zur Dokumentgenerierung erzeugen .docx/.pptx/.pdf-Ausgaben, aber nichts überprüft automatisch, ob das Ergebnis wohlgeformt ist: Überschriftenebenen können übersprungen werden, Schriftarten können inkonsistent sein, Abstände können abweichen, Grammatikfehler gehen stillschweigend durch. Vellum ist eine Verifikationsschicht, kein Generator.

Related MCP server: Visual Document Forensics MCP Server

Kernprinzip

Der Server extrahiert Fakten. Das Modell trifft Urteile.

Vellum sagt nie „Das ist falsch.“ Es sagt: „Hier ist, was tatsächlich wahr ist, und hier ist, was im Vergleich zum Rest des Dokuments statistisch auffällig ist.“ Zu entscheiden, ob ein bestimmter Wert für die Rolle einer Zeile im Dokument angemessen ist (Titel vs. Bildunterschrift vs. Fließtext), ist ein semantisches Urteil, das beim aufrufenden Modell verbleibt, das den vollständigen Kontext des Dokuments besitzt – der Server hat ihn nicht und sollte es auch nicht versuchen.

Werkzeuge

Werkzeug

Zweck

check_docx_structure

Überschriftenhierarchie, Konsistenz des Inhaltsverzeichnisses, Nummerierung, Bildunterschriften

check_docx_typography

Pro Absatz aufgelöste Schriftart/-größe/-stärke/-abstände (vollständige Stilvererbungskette aufgelöst) + Ausreißer-Flags

check_pdf_layout

Koordinaten pro Zeichen, Grundlinienabstände, Konsistenz von Rändern/Einzügen, Schriftarteninventar, Substitutionserkennung, Kollisions-Flags innerhalb von Zeilen

check_language

LanguageTool-Befunde mit Absatz-/Offset-Ankern

check_filename_consistency

Kennzeichnet Dateinamen-Tokens (Firma/Rolle/Version/Datum), die im Dokumenttext fehlen

full_report

Führt alle anwendbaren Prüfungen aus und gibt eine report://{file_id}-Ressource zurück

Jedes Werkzeug liefert strukturierte Fakten plus Anomalie-Flags – niemals ein Urteil.

Jedes Werkzeug akzeptiert das Dokument entweder als Dateisystem-path oder als Inline-content_base64 (wobei filename zwingend mit angegeben werden muss) – nützlich, wenn ein Dokument nur im Gespräch existiert (z. B. direkt in einer Chat-Oberfläche hochgeladen) und nicht zuerst auf der Festplatte gespeichert wurde. Es muss genau eine der beiden Eingabeformen angegeben werden.

Status

Alle sechs Werkzeuge (check_docx_structure, check_docx_typography, check_pdf_layout, check_language, check_filename_consistency, full_report) sind vollständig implementiert, unit-getestet und gegen einen goldenen Satz von Testdateien mit bekannten absichtlich eingebauten Fehlern validiert. Die vollständige MCP-Oberfläche – Ressourcen, Prompts, Elicitation, Cache-Hinweise, OAuth-2.1-Ressourcenserver-Authentifizierung für den HTTP-Transport und korrekte Fehlersemantik – ist gebaut und getestet (163+ Tests bestehen). Siehe docs/architecture.md und PROGRESS.md für die detaillierte Build-Historie und aktuelle offene Punkte. Paketierung/Veröffentlichung (Phase 7) ist in Arbeit – noch nicht auf PyPI veröffentlicht.

Installation

git clone https://github.com/Nasser9892/vellum-mcp.git
cd vellum-mcp
pip install -e ".[dev]"

Erfordert eine lokale LanguageTool-Instanz für check_language – siehe docs/architecture.md für die Einrichtung.

Verwendung (Claude Desktop / beliebiger MCP-stdio-Client)

Fügen Sie Ihrer MCP-Client-Konfiguration Folgendes hinzu (siehe examples/claude_desktop_config.json):

{
  "mcpServers": {
    "vellum": {
      "command": "vellum-mcp"
    }
  }
}

Entwicklung

pip install -e ".[dev]"
pytest                          # unit + integration tests
mcp dev src/vellum_mcp/server.py  # run under MCP Inspector

Golden-Set-Testdateien (Beispiel-.docx/.pdf-Dateien mit absichtlich eingebauten Fehlern) befinden sich in golden_set/. Alle Prüfungen werden gegen diese validiert, bevor sie als vertrauenswürdig gelten – siehe docs/architecture.md für die Vorgehensweise.

Gegen MCP Inspector validiert (mcp dev src/vellum_mcp/server.py) und gegen zwei echte MCP-Clients getestet: Claude Desktop (examples/claude_desktop_config.json) und Cursor (~/.cursor/mcp.json, gleiche {"mcpServers": {"vellum": {"command": "vellum-mcp"}}}-Struktur).

Spezifikationskonformität

  • Alle Primitive: Werkzeuge, Ressourcen, Prompts (nicht nur Werkzeuge)

  • Zustandsloser Kern – keine Abhängigkeit von Mcp-Session-Id

  • Elicitation über MRTR (InputRequiredResult / inputRequests / inputResponses)

  • OAuth-2.1-Ressourcenserver-Ausrichtung für den HTTP-Transport (RFC 9728, RFC 8707, RFC 9207; CIMD über veraltetes DCR)

  • Tasks-Erweiterung (io.modelcontextprotocol/tasks) für langlaufende Analysen

  • Korrekte Fehlercodes (-32602 für nicht gefunden, -32020 für Header-bezogene Verstöße)

  • Keine Verwendung der veralteten roots/sampling/logging-Primitive

Lizenz

MIT – siehe LICENSE.

Available Tools

6 tools
check_docx_structureA

Extract structural facts from a .docx file: heading hierarchy, TOC consistency, header/footer consistency, page-numbering-field presence, orphaned/empty styles, list-numbering restarts, and image/table caption presence + sequencing. Returns facts and anomaly flags only — never a verdict on correctness (see the server's global instructions).

Accepts the document either as a filesystem path OR as inline content_base64 (with filename required alongside it) — useful when the .docx only exists in the conversation (e.g. a file uploaded directly in chat) rather than saved to disk. Exactly one of the two input forms must be given.

Inputs: path, filename, content_base64. Returns: Output schema for check_docx_structure (brief §4.1).

check_docx_typographyA

Per-paragraph resolved font/size/weight (full style-chain resolved, with provenance per property) plus flags for paragraphs whose resolved combination is statistically unique in the document, and for paragraphs whose runs don't all resolve to the same combination. Facts and anomaly flags only — never a verdict on what formatting should be (see the server's global instructions).

Accepts the document either as a filesystem path OR as inline content_base64 (with filename required alongside it) — for a .docx that only exists in the conversation rather than saved to disk. Exactly one of the two input forms must be given.

Inputs: path, filename, content_base64. Returns: Output schema for check_docx_typography (brief §4.3).

check_filename_consistencyA

Tokenizes the filename (stripping extension, separators, common document-type stopwords, and — heuristically — the document owner's own leading First/Last name tokens), then flags any remaining proper-noun-like token that doesn't appear anywhere in the extracted document text. Facts only: presence or absence — never a verdict on whether a mismatch is intentional (brief §3, §4.4).

Accepts the document either as a filesystem path OR as inline content_base64 (with filename required alongside it — this is exactly the name that gets tokenized, so pass the file's real name here, not a placeholder). Exactly one of the two input forms must be given.

Inputs: path, filename, content_base64. Returns: Output schema for check_filename_consistency (brief §4.4).

check_languageA

Grammar/spelling/punctuation/style findings via a local LanguageTool instance, with paragraph/offset anchors so the model can locate and fix issues precisely. If lang isn't given and the language can't be auto-detected with confidence, asks the client which language it is (MRTR elicitation) rather than guessing. Facts and LanguageTool's own suggestions only — never a rewritten "corrected" version of the text.

Accepts exactly one of: a filesystem path, raw text, or inline content_base64 (with filename required alongside it) for a .docx/.pdf that only exists in the conversation rather than saved to disk.

Inputs: lang, path, text, filename, +1 more. Returns: Output schema for check_language (brief §4.2, §5.3). `language` is a genuine th…

check_pdf_layoutA

Per-character font/size/coordinates, computed baseline spacing, margin/indent consistency, font inventory, declared-vs-embedded font substitution detection, and intra-line horizontal collision flags (tab-stop-overflow signature). Facts and anomaly flags only — never a verdict on correctness (see the server's global instructions).

Accepts the document either as a filesystem path OR as inline content_base64 (with filename required alongside it) — for a .pdf that only exists in the conversation rather than saved to disk. Exactly one of the two input forms must be given.

Inputs: path, filename, content_base64. Returns: Output schema for check_pdf_layout (brief §4.3 PDF half).

full_reportA

Runs every applicable check for the document (format auto- detected from the file extension: .docx or .pdf) and returns an aggregated report as a report://{file_id} resource URI, plus an inline summary. profile selects a subset: "full" (default, every applicable check) or "typography_only" (just the format's typography/layout check — check_docx_typography for .docx, check_pdf_layout for .pdf). The full persisted report can be re-read later via the returned URI without re-running analysis (brief §5.1/§5.2). Facts and anomaly flags only, aggregated from each check's own output — never a merged verdict (brief §3, see the server's global instructions).

Accepts the document either as a filesystem path OR as inline content_base64 (with filename required alongside it) — for a file that only exists in the conversation rather than saved to disk. Exactly one of the two input forms must be given.

Inputs: path, profile, filename, content_base64. Returns: Output schema for full_report (brief §6). This is the inline summary the tool c…

Tool Schema Changelog

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

    TDQS

    A4.5/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each check targets a clearly distinct concern: DOCX structure, DOCX typography, PDF layout, language, filename consistency, and the aggregated report. The only potentially overlapping tool, full_report, is explicitly an aggregator rather than a separate analysis, so an agent can reliably select the right tool.

    Naming Consistency4/5

    Five of the six tools follow a consistent check_<target>_<aspect> pattern, making the set highly predictable. The one deviation is full_report, which breaks the check_ prefix but is still descriptive and unlikely to confuse.

    Tool Count5/5

    Six tools is a well-scoped size for a document-inspection server. Each tool covers a distinct aspect of analysis with no redundant or extraneous additions.

    Completeness5/5

    The tool set covers the major inspection needs for DOCX and PDF documents: structure, typography/layout, language, filename consistency, and a full aggregated report. Since the server is explicitly analysis-only and returns facts rather than edits, there are no obvious missing operations within its stated purpose.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.
      1
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to generate format-stable, editable Word DOCX documents from structured content and reusable templates, with document type recognition, schema retrieval, template rendering, validation, and conservative fixes.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to read and edit Word (.docx) and PDF documents with byte-level fidelity, using minimal in-package rewrites for DOCX and text-layer detection with page rendering for PDF, including OCR-free handling of scanned files via image output.
      7
      MIT