Integrations

Visme MCP server

Create an editable Visme presentation from Claude. Connect once, then ask Claude for a presentation: Claude writes the slides, the connector imports them into your Visme workspace, and you get a link that opens the project in the Visme editor.

Quick reference
Server URL
https://mcp.visme.co/mcp
Auth
OAuth 2.0 with PKCE (S256). The client discovers the Visme authorization server from /.well-known/oauth-protected-resource/mcp and registers with a Client ID Metadata Document. Dynamic client registration is not supported. You sign in to Visme and pick one workspace. Required scope: project:write. Tokens are issued for this server only.
Transport
Streamable HTTP, JSON responses, stateless sessions. Not the legacy SSE transport.
Plans
All Visme plans, including the free Basic plan. On Basic, only the first 25 slides of a presentation are kept.
Clients
Claude (web, Desktop, Cowork, Claude Code) at the URL above. ChatGPT coming soon.
Disconnect
In Claude, open Customize → Connectors and click Remove (or the ⋯ menu) next to Visme.

What it does #

You ask Claude for a presentation. Claude writes it as an HTML document, following the layout rules the connector gives it (1280×720 slides, real text, flat colours). The connector converts that HTML into a Visme project with separately editable text and image objects, saves it in the workspace you picked when connecting, and hands back a link that opens it in the editor.

  • Three tools. create_presentation starts the import and answers at once. Claude then checks get_task_status until the project is ready and gives you the editor link. cancel_task stops an import that is still running.
  • The project is a normal Visme project afterwards. Edit it, share it, apply your brand kit, export it.
  • Nothing is generated by Visme on this path. What you import is what Claude made.

Setup in Claude #

From the connectors directory

Available once Visme is listed in Claude's directory. Until then, use the custom connector steps below.

  1. In Claude, open Customize → Connectors, find Visme, and click Connect.
  2. Sign in to Visme if you aren't signed in already.
  3. The Visme consent screen says Claude wants to access to your Visme Account and lists one permission, Write Project, which is the project:write scope. Under Workspace to connect, pick the workspace Claude should create projects in, then click Allow.
Visme consent screen: Claude wants to access to your Visme Account, the Write Project permission, the Workspace to connect picker, and the Deny and Allow buttons

As a custom connector

Use this until Visme is listed in the directory. On Claude's Free plan you can add one custom connector.

  1. In Claude, open Customize → Connectors, click + Add, then Add custom connector.
  2. Name it Visme and paste the server URL:
    https://mcp.visme.co/mcp
    Then click Continue.
  3. Keep the authentication settings Claude detects. Under OAuth client, keep Use Claude's published identity (Recommended). Don't pick Register automatically: Visme doesn't support it. Click Add.
  4. Click Connect, sign in to Visme, pick a workspace on the consent screen, and click Allow.

Claude finds the Visme sign-in by itself: an unauthenticated request gets 401 with WWW-Authenticate: Bearer pointing at https://mcp.visme.co/.well-known/oauth-protected-resource/mcp. Tools are not listed before you sign in. A token that lacks project:write gets 403 with insufficient_scope.

In Claude Code

  1. Add the server:
    claude mcp add \
      --transport http \
      visme https://mcp.visme.co/mcp
  2. In Claude Code, run /mcp, choose visme, and sign in to Visme in the browser window that opens. Pick a workspace and click Allow.

Admin setup for Claude Team and Enterprise

On Claude Team and Enterprise plans, an Owner adds the connector for the organization once (on Enterprise, also anyone whose custom role includes Manage access to Libraries).

  1. The Owner opens Organization settings → Connectors, clicks Add, hovers over Custom, and selects Web.
  2. Name it Visme, enter https://mcp.visme.co/mcp, and click Continue. Under OAuth client, keep Use Claude's published identity (Recommended). Click Add.
  3. Members then open Customize → Connectors, find Visme, and click Connect. Each member signs in with their own Visme account; there is no shared workspace token.

Nothing needs to be enabled on the Visme side. Any Visme account can be connected once the Owner has added the connector in Claude.

ChatGPT and other clients

ChatGPT is coming soon; setup steps will be added here when it is available. Other MCP clients can use the same URL if they support Streamable HTTP and OAuth 2.0 with PKCE, and register with a Client ID Metadata Document. Dynamic client registration is not supported.

Example prompts #

Ask Claude in plain language once you're connected. Claude can write a new deck for Visme, or import one it made earlier in the conversation.

  • Make a 5-slide Visme presentation about our Q3 results.
  • Import this deck into Visme.
  • Send the presentation above to Visme and give me the editor link.
  • Turn the slides you just made into a Visme project called "Q3 board update".

Projects always go to the workspace you picked when connecting. To use another workspace, disconnect and connect again.

Tools #

Three tools. create_presentation and cancel_task write to your workspace; get_task_status only reads.

create_presentation

Write
Description the model sees (first paragraph)Start creating a Visme presentation from HTML you author, in the user's workspace. Returns a task_id right away; the work continues in the background. idempotency_key must be unique per user request and reused only when retrying that same request.

Parameters

ParameterRequiredLimit
titleYesProject name, 1–200 characters.
htmlYesThe presentation as one standalone HTML document. At most 2,000,000 bytes.
idempotency_keyYesUnique per request, at most 128 characters. Sending the same key again returns the same task instead of creating a second project.

Returns right away:

{
  "task_id": "…",
  "status": "pending",
  "stage": "importing",
  "message": "Still working. Check again with get_task_status in a few seconds."
}

The import continues in the background. The project is created in the workspace picked when connecting.

get_task_status

Read
Description the model seesCheck a presentation task. When status is done, editor_url opens the presentation in Visme.

Parameters

ParameterRequiredLimit
task_idYesThe id returned when the presentation was created.

Returns when the project is ready:

{
  "task_id": "…",
  "status": "done",
  "stage": "done",
  "editor_url": "https://dashboard.visme.co/v2/edit/{project_id}",
  "message": "Your presentation is ready."
}

While the import runs, status is pending or running. If it fails, status is failed, with an error_class and the message Creating the presentation failed. Try again.

cancel_task

Write
Description the model seesStop creating a presentation that is still in progress.

Parameters

ParameterRequiredLimit
task_idYesThe id of a task that is still running.

Returns the task with "status": "cancelled" and the message Creation was cancelled. A task that already finished or failed is returned unchanged.

What converts and what doesn't #

The importer turns the HTML into native Visme objects wherever it can, so you can edit the result rather than just look at it. Here is what to expect.

In the HTMLIn Visme
Each <section class="slide"> (1280×720)A separate slide, in the same order.
Headings and text blocksSeparately selectable, editable text objects. Size, weight and colour are kept; a font Visme doesn't have is replaced by the closest Visme font.
Images (absolute https URL or data URI)Individual image objects you can move, resize and replace.
Solid colours and backgroundsKept as solid colours.
Gradients, shadows, transparency, blur, filtersFlattened into pictures.
Tables and chartsNot converted to native Visme tables or charts.
Embedded video, animations, JavaScriptNot imported. Each slide comes in as it looks when rendered.
Images and fonts loaded from a URLFetched when the slides are rendered. Use absolute https URLs; Google Fonts via <link> work.
Content outside the 1280×720 slideCut off.

Limits #

  • HTML document at most 2,000,000 bytes (about 2 MB).
  • At most 2 presentations being created at once per Visme user. A third request gets too_many_in_flight until one finishes or is cancelled.
  • No per-import slide cap from the connector. On the Basic plan, only the first 25 slides are kept.
  • Each request creates a new project; there is no update-in-place. Only a retry with the same idempotency_key returns the existing task instead of a second project.
  • Task status can be checked for 7 days.
  • AI credits are not charged for imports.

Troubleshooting #

Headings in code are the exact text the tool returns. Tool errors come back as code: message. A failed import is not a tool error: get_task_status returns status: failed with an error_class.

Authentication

unauthenticated: this tool needs a signed-in Visme user

CauseThe call has no usable Visme token.

FixConnect the connector again and finish the Visme sign-in.

403 insufficient_scope

CauseThe token does not include project:write.

FixReconnect and click Allow on the consent screen.

503 auth_service_unavailable

CauseThe Visme sign-in server did not answer. This is not an expired user token.

FixTry again shortly.

Visme isn't showing up in my tools

CauseThe connector is not connected, or tools/list was attempted before sign-in. The server lists tools only after you have signed in.

FixAdd https://mcp.visme.co/mcp and finish the Visme sign-in. Then ask Claude for a presentation.

Creating a presentation

invalid_title: Give the presentation a title.

CauseThe title was empty.

FixAsk again with a project name.

invalid_html: html must contain the presentation markup.

CauseThe HTML was empty.

FixAsk Claude to write the deck as HTML, then import again.

html_too_large: html must be at most 2000000 bytes.

CauseUsually images embedded as data URIs.

FixAsk Claude to link images by https URL instead of embedding them, or to use fewer images, then import again.

too_many_in_flight: You already have 2 presentations being created. Wait for one to finish, or cancel one: its slot frees once it has stopped.

CauseTwo of your imports are still running.

FixWait for one to finish, or cancel one, then try again.

task_not_found: No such task.

CauseThe task id is wrong, belongs to another user, or is older than 7 days.

FixCreate the presentation again.

tools_disabled: Creating presentations from here is temporarily switched off.

CauseThe service is switched off on Visme's side.

FixNothing to change on your end. Try later.

task_store_unavailable: The task store is not reachable right now. Try again shortly.

CauseA temporary problem on Visme's side.

FixTry again shortly.

Failed imports

Here get_task_status returns "status": "failed" and an error_class.

error_class: render_failed or error_class: render_timeout

CauseThe HTML could not be rendered into slides.

FixAsk Claude to regenerate the deck with fewer or smaller images, then import again.

Failed with any other error_class

CauseVisme could not finish the import or save the project.

FixTry once more. If it keeps failing, contact support with the time of the attempt and the task_id.

The deck came in but everything is one flat image

CauseThe HTML drew the slides as images or canvases rather than text and image elements, or used gradients, shadows or transparency, which flatten into pictures.

FixAsk Claude to regenerate the deck with real text elements and flat colours, then import again.

Data and privacy #

The connector receives your signed-in Visme user id, the workspace you chose, and the title and HTML you send. The HTML is used only to create your project. The connector deletes it once the import service has accepted it, and the import service deletes its copy when the import starts, after one hour at the latest. The task record (title, status, project id) is kept for 7 days so Claude can check the result. Your Visme sign-in token is never passed to the import service.

See also the Visme privacy policy.