Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Canva in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work in Canva: find and read designs, create new ones, export them to PDF, PNG, PowerPoint or video with download links, organise folders, upload images from a link, read brand templates and comment on designs.
Try asking
Example prompts for Canva
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Canva, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Canva + Meta Muse
Let your AI work in Canva: find and read designs, create new ones, export them to PDF, PNG, PowerPoint or video with download links, organise folders, upload images from a link, read brand templates and comment on designs.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
CANVA_CLIENT_ID, CANVA_CLIENT_SECRET
Step 1 — Get credentials
- Turn on multi-factor authentication for your Canva account with an authenticator app: Settings → Login & security. Canva only enables REST API access for developers who have it on.
- Open the Canva Developer Portal at
https://www.canva.com/developers/apps, click Create an app and choose who it is for. A private app is approved by your own team admins and needs a Canva Enterprise team. A public app works for you, its developer, straight away; other Canva users can connect to it only after Canva has reviewed it. Then open Outside Canva → Start integrating to use the REST APIs. - Under Configuration → Scopes, tick these twelve scopes:
profile:read,design:meta:read,design:content:read,design:content:write,folder:read,folder:write,asset:read,asset:write,brandtemplate:meta:read,brandtemplate:content:read,comment:read,comment:write. The connector asks for all of them, and Canva turns down a sign-in that asks for a scope you did not tick. - Under Authentication, add the redirect URL
https://cloud.anythingmcp.com/api/mcp-oauth/callback. If you host AnythingMCP yourself, it is<your AnythingMCP URL>/api/mcp-oauth/callback. Canva rejectslocalhostredirect URLs, so on a local setup use127.0.0.1instead: setSERVER_URLtohttp://127.0.0.1:<port>and registerhttp://127.0.0.1:<port>/api/mcp-oauth/callback. - Copy the Client ID into
CANVA_CLIENT_ID. Click Generate secret and paste it intoCANVA_CLIENT_SECRETright away, as Canva shows it only once. - Install the connector, click Authorize with Provider and allow access in Canva. The sign-in uses OAuth 2.0 with PKCE: AnythingMCP never sees your Canva password, and it renews the access tokens (valid for about four hours) on its own. Each refresh token works once and is replaced on every renewal.
- Start with
canva_get_me: it returns your Canva user and team id, a quick check that the authorization works.
Exports come as download links: canva_create_export starts a job and canva_get_export reports when it is done, with one link per file (multi-page images give one per page). The links stay valid for 24 hours. canva_get_design_export_formats shows which formats a design supports: PDF, JPG, PNG, SVG, PowerPoint, GIF, MP4 and more, depending on the design type. Designs with premium elements you have not licensed fail with license_required. Canva allows 75 exports per user every 5 minutes and 500 a day.
Uploads from a link: canva_upload_asset_from_url puts an image or video into your Uploads, and canva_get_asset_upload reports when it is there. Canva downloads the file itself, so the link has to answer 200 to Canva's downloader. Sites that refuse automated downloads make the job fail with fetch_failed.
Folders and designs: root stands for the top level of your Projects and uploads for the Uploads folder. A design id is the part after /design/ in a Canva link, for example DAFVztcvd9z in https://www.canva.com/design/DAFVztcvd9z/.... canva_create_design makes an empty doc, email, presentation or whiteboard, or a custom size in pixels, and returns its edit link. Thumbnail links expire after 15 minutes, edit and view links after 30 days.
Which plan: designs, folders, uploads, exports and comments work on every Canva plan, including Free. Brand templates need a plan that has them (Pro, Teams or Enterprise); canva_get_capabilities lists brand_template when yours does.
Confirm first: your collaborators see comments and replies (canva_create_comment, canva_reply_to_comment), so the AI shows you the text before it posts. canva_delete_folder and canva_delete_asset, which move items to the Trash, are switched off at install.
Read-only setup: untick the :write scopes in the Developer Portal and in the connector's OAuth settings, authorize again and switch off the tools that create, change or move things.
Preview APIs: comments and uploads from a link use Canva preview APIs, which can change without notice, and a public app that uses them cannot pass Canva's review. For a public app, switch off canva_upload_asset_from_url, canva_get_asset_upload and the four comment tools.
Common errors: invalid_access_token or revoked_access_token means you need to authorize again. missing_scope: tick the scope in the portal and in the connector's OAuth settings, then authorize again. permission_denied or design_not_found (also folder_not_found, asset_not_found): the id is wrong or your account cannot see that item. A 403 that "requires one of capabilities" is a paid feature such as brand templates. too_many_requests: most calls allow 10 to 100 a minute per user, so wait a minute.
The connector does not edit what is inside a design, fill in brand templates (autofill), resize designs, import files, generate with AI, read design analytics or set up webhooks.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Muse
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Muse adds remote MCP servers as custom connectors and signs in to them with OAuth.
- In Muse, open Settings → Connectors and choose Add custom connector.
- Paste the MCP server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. - Muse opens the AnythingMCP sign-in page: sign in and approve access.
- In a chat, ask Muse for something that needs the
Canvatools.
You can also set it up from a chat, on the web, in the iOS and Android apps or in WhatsApp. Send Muse this message:
Create a Custom Connector for a new remote MCP server, then connect to it:
Name: AnythingMCP
Transport: remote streamable HTTP
URL: https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID
Auth: OAuth
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Muse connects from Meta's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
canva_get_me | Read who authorized the connector: the Canva user_id and team_id |
canva_get_profile | Read the display name of the signed-in Canva user (scope profile:read) |
canva_get_capabilities | List the paid features the signed-in user can use through the API, e.g. brand_template, autofill, resize, export_png_transparency |
canva_list_designs | List or search the user's designs, with id, title, owner, page_count, a thumbnail (its URL expires after 15 minutes), edit_url and view_url… |
canva_get_design | Read one design by id: title, owner, page_count, thumbnail, edit_url, view_url and timestamps (scope design:meta:read) |
canva_create_design | Create a new, empty design and return it with id, edit_url and view_url (scope design:content:write). design_type is either a preset… |
canva_get_design_export_formats | List the file formats a design can be exported to (pdf, jpg, png, svg, pptx, gif, mp4, html_bundle, html_standalone, csv), depending on its… |
canva_create_export | Start exporting a design to a file. format is an object with type and options, e.g. {"type": "pdf", "size": "a4"}, {"type": "png", "width"… |
canva_get_export | Read an export job: status (in_progress, success or failed), and on success urls[], one download link per file (multi-page images give one… |
canva_list_folder_items | List what a folder contains, with each item's type (design, folder, image, brand_template) and details |
canva_get_folder | Read a folder by id: name, thumbnail and timestamps (scope folder:read). root and uploads are aliases, not folders, and cannot be read here |
canva_create_folder | Create a folder in the user's Projects (parent_folder_id root), in Uploads (uploads) or inside another folder |
canva_rename_folder | Rename a folder; the name is the only thing that can be changed (scope folder:write) |
canva_move_folder_item | Move a design, folder or image into another folder (to_folder_id root for the top level of Projects) |
canva_delete_folder | Delete a folder |
canva_get_asset | Read an uploaded asset (image or video): name, tags, owner, thumbnail and timestamps (scope asset:read) |
canva_update_asset | Rename an asset or replace its tags. tags replaces the whole list (up to 50 tags) (scope asset:write) |
canva_delete_asset | Move an asset to the Trash |
canva_upload_asset_from_url | Start uploading an image or video from a public URL into the user's Uploads |
canva_get_asset_upload | Read an upload job started with canva_upload_asset_from_url: status in_progress, success (with asset and its id) or failed (error.code… |
canva_list_brand_templates | List the brand templates the user can use, with id, title, view_url, create_url and thumbnail |
canva_get_brand_template | Read one brand template by id: title, view_url, create_url (opens a new design from it), thumbnail and timestamps (scope… |
canva_get_brand_template_dataset | Read the autofill fields of a brand template: each field name with its type (text, image or chart) |
canva_create_comment | Start a comment thread on a design, optionally assigned to a collaborator |
canva_get_comment_thread | Read a comment thread on a design: the comment, its author, assignee, resolution state and timestamps |
canva_list_comment_replies | List the replies in a comment thread, oldest first, with author and text |
canva_reply_to_comment | Reply to a comment thread on a design (up to 100 replies per thread) |
Example prompts
- "Find my designs with 'pitch deck' in the title and give me the edit link of the newest one."
- "Export the 'Q4 sales review' presentation as a PDF and give me the download link."
- "Upload the product photo at this link to my Canva and start a new 1080 × 1080 post with it."
- "Create a folder called 'Autumn campaign' and move all the designs from last week's campaign into it."
FAQ
Where is Muse available? Meta currently offers Muse in the US and Canada, on the web, in the iOS and Android apps and in WhatsApp.
Does Meta review this connector? No. Meta doesn't review custom connectors. Muse sees only the tools you switched on for this MCP server in AnythingMCP, and you can disconnect it anytime under Settings → Connectors.
Next steps
Was this guide helpful?