document-creation-mcp
This server is an AI-driven PowerPoint deck creation tool that generates .pptx files from structured slide plans, applies design themes, and auto-generates images via ComfyUI.
Create presentations (
create_presentation): Build a complete.pptxdeck from a JSON slide plan, automatically generating images for slides with prompts, embedding existing images from local paths or URLs, and applying a chosen design theme.List and inspect design themes (
list_themes,get_theme): Retrieve available themes (e.g.,dark_tech,corporate,minimal,academic) and their full definitions — color palettes, fonts, and image style descriptors.Generate individual images (
generate_image): Produce AI-generated images via a ComfyUI backend using a text prompt, with optional theme scoping, output size, negative prompt, and role (contentorbackground). Returns the local file path.Inspect ComfyUI models (
list_comfy_models): Query the ComfyUI HTTP API to discover available checkpoints, samplers, and schedulers.Highly configurable: Supports multiple image generation backends (remote ComfyUI MCP server or direct ComfyUI API) and server transports (stdio, SSE, streamable-http) via environment variables.
Docker support: Can be run in a Docker container or with Docker Compose.
Integrates with AI orchestrators: Designed to be called by tools like Open WebUI to execute document creation tasks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@document-creation-mcpCreate a 5-slide deck on quantum computing using the 'corporate' theme."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
document-creation-mcp
MCP server for AI-driven document creation, starting with PowerPoint decks.
The server is the execution layer: it builds .pptx files from a structured
slide plan, applies consistent design themes, and auto-generates images via your
existing ComfyUI MCP server. The orchestrating model (e.g. in Open WebUI) does
any web research and composes the slide plan, then calls these tools.
Tools
Tool | Purpose |
| List available design theme names. |
| Return a theme's colors/fonts/image-style. |
| Generate one image via ComfyUI MCP; returns local path. |
| Build a deck from a |
| List checkpoints/samplers/schedulers available on the ComfyUI HTTP API. |
create_presentation will auto-generate any image that has an image.prompt
(using ComfyUI), and embed existing files/URLs when image.source is set.
Related MCP server: office-mcp-server
Install
python -m venv .venv && source .venv/bin/activate
pip install -e .Configure (environment variables)
Variable | Default | Meaning |
|
| Where |
|
| Where generated images are cached. |
|
| Transport for the server itself: |
|
| Bind address when serving over HTTP/SSE. Defaults to localhost for security; set |
|
| Port the server listens on for |
|
| Endpoint path for |
| (bundled) | Directory of |
|
| Image source: |
MCP backend ( | ||
| (none) | Address of your running ComfyUI MCP server, e.g. |
| (none) | Bearer token sent as |
|
|
|
|
| Name of the image tool in that server. |
| (fallback) | Only used if |
Direct API backend ( | ||
| (none) | Base URL of the ComfyUI instance, e.g. |
| (none) | Optional bearer token for the ComfyUI endpoint. |
| (built-in) | Path to a JSON workflow template using |
|
| Checkpoint loaded by the default workflow. |
|
| KSampler steps / CFG scale. |
|
| KSampler sampler / scheduler. |
|
| Seed ( |
|
| When enabled, the |
|
| Seconds to wait for image generation (both backends). |
|
| Skip all image generation. |
Run
document-creation-mcp # stdio transport (recommended for Open WebUI)
# or: python -m document_creation_mcp.serverDocker
Build and run the server inside a container.
# Build the image
docker build -t document-creation-mcp .
# Run with streamable-http transport (default in the Dockerfile)
docker run -p 8000:8000 \
-e COMFY_MCP_COMMAND='["python","-m","comfy_mcp_server"]' \
-v "$(pwd)/output:/app/output" \
document-creation-mcpOr use the provided Compose file:
docker compose up --buildThe container serves on port 8000 using streamable-http by default. Generated
.pptx files are written to /app/output (mount ./output to retrieve them).
Override DOC_MCP_TRANSPORT=stdio if you instead want the container spawned as a
stdio MCP server by its parent.
Open WebUI setup
Start your ComfyUI MCP server separately (the command above must reach it).
In Open WebUI → Admin → Tools → Add MCP server, point at this server (stdio command:
document-creation-mcp, or an SSE URL if you wrap it).The model can now call
create_presentation(after doing web search and drafting the plan) andgenerate_imagefor bespoke visuals.
When running this server in Docker, register it as an HTTP/SSE MCP server
pointing at http://<host>:8000/mcp (streamable-http) or /sse instead of the
stdio command.
Connecting over HTTP (Open WebUI / MetaMCP)
The server only listens for
sse/streamable-httpwhenDOC_MCP_TRANSPORTis set to one of those (the Docker image defaults tostreamable-http).It must be reachable from the client: set
DOC_MCP_HOST=0.0.0.0and publish the port (e.g.ports: ["3335:3335"]in Compose withDOC_MCP_PORT=3335). AConnection refusedmeans the container isn't up, isn't on that port, or is bound to127.0.0.1.The client URL must include the endpoint path:
default →
http://<host>:<port>/mcpif your client POSTs to the server root (some MetaMCP setups do), set
DOC_MCP_STREAMABLE_HTTP_PATH=/and usehttp://<host>:<port>/.A
404 Not Foundon a POST means the path didn't match — adjustDOC_MCP_STREAMABLE_HTTP_PATHor add/mcpto the URL.
Themes
Factory themes ship inside the package at src/document_creation_mcp/themes/*.yaml
(dark_tech, corporate, minimal, academic), so they are always available
after install, including in Docker.
name: dark_tech
colors:
background: "#0B0E14"
primary: "#4F8CFF"
accent: "#00E0C6"
text: "#E6EAF2"
muted: "#8A93A6"
fonts:
heading: "Montserrat"
body: "Inter"
image_style: "cinematic, neon accents, dark moody background, 8k, highly detailed"
layout_default: title_and_content
logo: nullimage_style is appended to every generated image prompt for visual consistency.
Add or override themes: set DOC_MCP_THEME_DIR to a directory of *.yaml
files (e.g. a mounted volume in Docker). Its themes are merged on top of the
bundled ones, so a file with the same name overrides a factory theme.
Note:
style_reference_image/controlnet.reference_imagepaths are resolved at runtime — in Docker, mount those assets and use absolute paths (or paths relative to the container working directory). The optional advanced workflowCOMFY_API_WORKFLOWsimilarly needs to be mounted into the container.
To refresh after editing theme files, the server reloads them on startup; there
is also a list_themes() tool to confirm what is loaded.
Recommended ComfyUI model stack for consistent decks
To get cohesive, on-brand imagery across an entire deck (not just one-off
pictures), run an SDXL base with IP-Adapter for style/subject consistency
and ControlNet for composition control, then upscale for projector-grade
output. The pipeline below is what IMAGE_BACKEND=comfy_api is designed to drive
(see comfy_workflows/presentation_sdxl.json for a ready-to-adapt template).
What to install
Purpose | Suggested model(s) | Notes |
Base checkpoint |
| Pick one per deck; set it as |
VAE |
| Usually bundled with the checkpoint. |
CLIP Vision (IP-Adapter dependency) |
| Required by IP-Adapter. |
IP-Adapter |
| Drives consistency from a single style reference image. |
ControlNet |
| One file covers every composition mode. |
Upscaler |
| ESRGAN; sharpens the final 16:9 output. |
(Optional) Style LoRA | any brand/style LoRA | Extra brand lock on top of IP-Adapter. |
Custom nodes |
| Provide the |
The exact node class names/inputs vary slightly between custom-node versions. Treat
comfy_workflows/presentation_sdxl.jsonas a reference to adapt to your installed node pack, then pointCOMFY_API_WORKFLOWat it.
How consistency is enforced (the strategy)
One style reference image per theme. Store a reference image in the theme (e.g.
style_reference_image) and feed it to IP-Adapter at a moderate weight (~0.6–0.8). Every slide image in that deck inherits the same look/colour mood — this is the single biggest lever for cohesion.Shared negative prompt + colour palette. Bake a deck-wide negative (
watermark, text, blurry, low quality, jpeg artifacts) and append the theme'simage_styleto every prompt (already done bygenerate_image).Composition control with ControlNet. Use a "subject-off-centre" control image (or Union
type: depth/canny) so subjects sit left/right, leaving negative space for titles and bullet text — especially forimage_fullbackgrounds.Fixed resolutions per role. Backgrounds: 16:9 → 1344×768 (or 1536×864). Content/side images: 1:1 → 1024×1024 or 4:3 → 1152×896. All divisible by 8 for SDXL.
Upscale once at the end for crisp projection.
(Optional) per-deck seed base. Generate with a fixed base seed + per-slide offset for reproducible backgrounds while keeping variety.
Planned integration (not yet wired)
Once the models above are installed locally, the call path will be extended to use them automatically via theme options, e.g.:
name: dark_tech
# ...existing colors/fonts...
image_style: "cinematic, neon accents, dark moody background, 8k, highly detailed"
style_reference_image: "themes/refs/dark_tech_style.png" # fed to IP-Adapter
ip_adapter_weight: 0.7
controlnet:
enabled: true
type: depth # depth | canny | openpose | tile
strength: 0.6
reference_image: "themes/refs/dark_tech_comp.png"
upscale_model: "4x-UltraSharp.pth"
negative_prompt: "watermark, text, blurry, low quality, jpeg artifacts"
background_post: "dim" # light blur + dark overlay so text stays readableThe comfy_api backend will then load COMFY_API_WORKFLOW (the IP-Adapter +
ControlNet + upscale graph) and substitute {{style_image}}, {{ip_weight}},
{{control_image}}, {{control_strength}}, {{upscale_model}} from the theme,
alongside the existing {{prompt}} / {{width}} / {{height}} / {{seed}}
placeholders. Background images will also get a subtle dim/blur post-process so
titles read clearly. See comfy_workflows/presentation_sdxl.json.
Slide plan schema
{
"title": "Deck title",
"theme": "dark_tech",
"output_filename": "my_deck",
"slides": [
{"title": "Intro", "layout": "title", "subtitle": "An AI deck"},
{"title": "Topic", "bullets": ["Point 1"], "image": {"prompt": "futuristic city"}},
{"title": "Deep dive", "layout": "image_full", "image": {"prompt": "data flow"}}
]
}Layouts: title, title_and_content, two_column, image_full, section.
Maintenance
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
- 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/TheRealChickenlegs/document-creation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server