mcp-genoffice
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SERVER_SRC | No | Unset this to exercise the auto-clone path | |
| FIXTURE_SRC | No | Override the fixture source for e2e tests | /tmp/genoffice |
| GENOFFICE_PIN | No | The SHA pin for the genoffice checkout in src/engine.ts | |
| GENOFFICE_SRC | No | Optional: point at your own genoffice clone; otherwise the server auto-clones the pinned revision into ~/.cache/mcp-genoffice/src |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| genoffice_extract_textA | Extract readable text from an Office or PDF file using GenOffice engines (docx/xlsx/pptx/pdf). Returns the document content as markdown-ish text with slide/table structure. Use this to read the content of a document before editing it. |
| genoffice_docx_blocksA | Parse a .docx with the GenOffice engine and list its top-level blocks (paragraphs/headings/tables) with their index, type, style and text. Use this BEFORE genoffice_docx_patch to pick the block indexes you want to rewrite. |
| genoffice_docx_patchA | Rewrite one or more paragraphs of a .docx using the GenOffice byte-preserving roundtrip: only the edited blocks are regenerated as OOXML fragments; every untouched block keeps its original bytes, so layout, styles, headers, comments and other parts survive. Paragraph formatting (styleId/rawPPr) is carried over. Input: file path + edits [{index, text}] where index comes from genoffice_docx_blocks (0-based visible order). Output: a new patched file (never modifies the original). |
| genoffice_docx_watermarkA | Set a text watermark on a .docx using the GenOffice engine: the header part is regenerated with the watermark paragraph while the document body keeps its original bytes (byte-preserving roundtrip). Pass an empty string to remove the watermark. Writes a NEW file, never modifies the original. |
| genoffice_docx_createA | Create a NEW .docx from scratch using the GenOffice engine (buildBlankDocx). Optionally pass paragraphs (each string becomes one paragraph; use \n inside a string for line breaks within the same paragraph). Writes the file to outPath. |
| genoffice_docx_deleteA | Delete one or more top-level blocks (paragraphs/headings) from a .docx using the GenOffice byte-preserving roundtrip: the deleted blocks are spliced out, all remaining blocks keep their original bytes. Indexes come from genoffice_docx_blocks (0-based visible order). Writes a NEW file. |
| genoffice_pptx_slidesA | Open a .pptx with the GenOffice engine and list every slide with its text elements (id, name, type, text preview). Use this BEFORE genoffice_pptx_patch to identify which slide and element to edit. |
| genoffice_pptx_patchA | Replace the text of one or more text elements on a slide of a .pptx, using GenOffice element-level byte-preserving patching: only the edited elements are regenerated; every untouched element and zip part keeps its original bytes. The first run/paragraph of each element is used as the formatting template (font, size, color, alignment, bullets survive). Multi-line text with \n creates one paragraph per line. Writes a NEW file, never modifies the original. |
| genoffice_pptx_createA | Create a NEW .pptx from scratch using the GenOffice engine (createBlankPptx): a deck with one blank slide. Use genoffice_pptx_patch afterwards to fill in titles and content. Writes the file to outPath. |
| genoffice_pptx_deleteA | Delete one or more text/shape elements from a slide of a .pptx using the GenOffice engine (element-level byte-preserving: the edited slide is rebuilt, every other slide and zip part keeps its original bytes). Elements are matched by name or id from genoffice_pptx_slides. Writes a NEW file. |
| genoffice_app_statusA | Check whether the GenOffice desktop app is installed and whether its CDP debug port is up. Returns the app bundle version, the running process version (when the debugger is live) and the current page title/url. Read-only; does not launch anything. |
| genoffice_app_launchA | Launch the installed GenOffice app with the CDP debug port open so the agent can drive it (screenshots, DOM evaluation). If the app is already running WITHOUT the debug port, it is terminated first (single-instance lock would otherwise swallow the relaunch) — set killExisting=false to abort instead. Handles the auto-updater relaunch by retrying until the port answers. macOS uses |
| genoffice_app_open_fileA | Open an Office/PDF file in the GenOffice desktop app via the macOS |
| genoffice_app_screenshotA | Capture a PNG screenshot of the GenOffice app window over CDP and save it to outPath. Requires the app running with the debug port (genoffice_app_launch). Use together with vision to inspect the current UI state. |
| genoffice_app_evalA | Evaluate a JavaScript expression in the GenOffice app page context over CDP (DOM reads/writes). Read-only by default (mutate=true required to change the page). Use for inspecting UI state that the read tools do not cover. Requires the app running with the debug port. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/criptogus/mcp-genoffice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server