Encelade
Encelade is a hosted MCP presentation server.
What it can do
- List Projects: List presentation decks. Returns paginated results. Use the returned cursor to fetch the next page.
- Get Project: Get a single presentation deck by its pid (public ID).
- Update Project: Update an existing deck. Pass the project pid and the fields to update.
What data it sees
Do you need an account
No: the server works without sign-in
Encelade is a hosted MCP presentation server. Connect it to Claude Desktop,
Claude Code, Cursor, or any MCP client, and a single generate_project call turns a
topic and outline into a complete, designed, interactive web deck — narrative,
structure, and visuals included.
Why it's different from PowerPoint MCP servers
Most "presentation" MCP servers wrap python-pptx, so the model has to script every
shape, textbox, and bullet call by call. Encelade works at the deck level: you
describe the deck, you don't assemble it. You get a shareable interactive web deck
(a URL), not a hand-built .pptx.
How it works
Generation is asynchronous. generate_project returns a session ID; poll
get_generation_session until the deck is ready, then share the link. Typical
10–15 slide decks build in a couple of minutes.
Tools
| Tool | Purpose |
|---|---|
generate_project |
Topic + outline → full interactive deck (async; returns a session) |
plan_project |
Generate an outline/plan only |
get_generation_session |
Poll generation status + get the deck link |
list_projects |
List your decks (paginated) |
get_project |
Get a single deck by public ID |
update_project |
Update a deck's name/theme |
delete_project |
Permanently delete a deck |
Auth
Bearer API key, or OAuth 2.0 with discovery (RFC 9728 / 8414, PKCE). No manual config — your client auto-discovers the auth flow on connect.
Homepage: https://www.encelade.ai · Docs: https://www.encelade.ai/docs/mcp
How to connect
How to connect Encelade to Claude
The server address to paste into Claude settings:
https://encelade.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Encelade to ChatGPT
The server address to paste into ChatGPT settings:
https://encelade.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Encelade to Cursor
The server address to paste into Cursor settings:
https://encelade.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (7)
Raw names from tools/list. Only developers need these.
| list_projects | List presentation decks. Returns paginated results. Use the returned cursor to fetch the next page. |
| get_project | Get a single presentation deck by its pid (public ID). |
| update_project | Update an existing deck. Pass the project pid and the fields to update. |
| delete_project | Permanently delete a deck by its pid. This action cannot be undone. |
| generate_project | Generate a full presentation from a topic and outline hints. Returns a session ID immediately — poll get_generation_session to track progress. Required fields: outlineHints (array of slide topic strings). Planning typically takes 30–90 seconds; generating takes 60–180 seconds depending on slide count. Do not flag a session as potentially stuck until 5 minutes have elapsed since startedAt. Optional model param selects the LLM — one of: gpt-5.5, gpt-5.4, gpt-5-mini, claude-sonnet-4-5-20250929 (default), claude-opus-4-5-20251101, claude-haiku-4-5-20251001, gemini-2.5-pro, gemini-2.5-flash. |
| plan_project | Generate an outline/plan for a presentation without creating the full content. Returns a plan that can be reviewed before generation. Planning typically takes 30–90 seconds. Do not flag a session as potentially stuck until 5 minutes have elapsed since startedAt. Optional model param selects the LLM — one of: gpt-5.5, gpt-5.4, gpt-5-mini, claude-sonnet-4-5-20250929 (default), claude-opus-4-5-20251101, claude-haiku-4-5-20251001, gemini-2.5-pro, gemini-2.5-flash. |
| get_generation_session | Poll the status of a presentation generation session. Returns a short human-readable status line — planning / generating / done / failed — plus a link to the deck once it is available. The structured payload also exposes the current phase, events, plan, and link for programmatic clients. Planning typically takes 30–90 seconds; generating takes 60–180 seconds depending on slide count. Re-poll with the same sessionId until the readable status starts with `Done.` |