Skip to main content
Glama
launchapp-dev

animus-document-engine

animus-document-engine

An MCP (stdio) service that renders, parses, converts, and edits Office documents — Excel (.xlsx), PowerPoint (.pptx), Word (.docx) — from a structured JSON spec. It is identity-free and stateless: it never touches subjects, S3, or users. The animus-launchapp portal orchestrates it (storage + scoping + subjects); this engine is the reusable rendering core.

Part of REQUIREMENT-053 — Documents as subjects.

Why a spec

The spec is the source of truth. An AI authors a spec (not raw OOXML); a deterministic renderer turns it into a real file. Editing = mutate the spec and re-render — lossless, reviewable, and diffable. Binary payloads cross the MCP boundary as base64.

Related MCP server: mcp-office-parser

Tools

Tool

In

Out

render_document

format, spec

base64 OOXML bytes

parse_document

format, bytes_base64

spec (xlsx only in v1)

apply_edits

format, spec, ops[]

edited, re-validated spec

convert_document

bytes_base64, to

base64 converted bytes (e.g. pdf)

preview_document

bytes_base64, kind (pdf|png), page

base64 PDF or PNG thumbnail

convert_document / preview_document use LibreOffice compiled to WebAssembly (@matbee/libreoffice-converter) — no native soffice needed. The ~112 MB WASM lives in this service, never in the portal image.

Spec shapes (v1)

// xlsx
{ "sheets": [ { "name": "Revenue",
                "columns": [ { "header": "Month" }, { "header": "USD" } ],
                "rows": [ ["Jul", 1200], ["Aug", 1500] ] } ] }

// pptx
{ "title": "Kickoff",
  "slides": [ { "title": "Agenda", "bullets": ["Scope", "Timeline"] },
              { "title": "Next", "body": "…", "notes": "speaker note" } ] }

// docx
{ "title": "Spec",
  "blocks": [ { "type": "heading", "level": 1, "text": "Overview" },
              { "type": "paragraph", "text": "…" },
              { "type": "bullets", "items": ["a", "b"] },
              { "type": "table", "rows": [["a","b"],["c","d"]] } ] }

apply_edits ops: {op:"set",path,value}, {op:"append",target,value}, {op:"remove",target,index}, {op:"replace",value} (target = sheets|slides|blocks).

Run

npm install
npm run build
node dist/index.js        # MCP stdio server

Wire it into an Animus workflow phase (or any MCP client) as a stdio server:

{ "mcpServers": { "document-engine": { "command": "node", "args": ["dist/index.js"] } } }

Dev

npm run dev        # tsx watch (stdio server)
npm run typecheck  # tsc --noEmit
npm run smoke      # render all 3 formats + xlsx parse/edit round-trip
tsx scripts/mcp-smoke.ts   # spawn the built server, call tools over MCP

Scope (v1) & roadmap

  • Generate all three formats — solid (pptxgenjs / docx / exceljs).

  • Parse — xlsx (data + headers). pptx/docx in-place parsing is DEFERRED to a future Python worker (python-pptx / python-docx are the only libraries that faithfully round-trip arbitrary decks/docs); the engine errors loudly rather than silently dropping content.

  • Convert/preview — via LibreOffice-WASM.

Install Server
F
license - not found
A
quality
-
maintenance - not tested

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/launchapp-dev/animus-document-engine'

If you have feedback or need assistance with the MCP directory API, please join our Discord server