Canva MCP Server
Provides tools for creating, exporting, listing presentations, managing brand templates, autofilling presentations, importing .pptx files, and generating presentations from briefs via the Canva API.
Allows generating styled .pptx presentations from markdown files and importing them into Canva as editable presentations.
Used for narrative planning and content generation from briefs to create presentation outlines and slide content.
Click on "Deploy 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., "@Canva MCP Server create a presentation about our new product launch"
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.
Canva MCP Server
Servidor MCP base para orquestar la creacion de presentaciones en Canva con un enfoque hibrido:
planeacion narrativa con LLM
composicion estructurada por slides
integracion con Canva por API oficial donde exista soporte
capa opcional de automatizacion web para cerrar huecos operativos
Objetivo
Este proyecto no intenta "hacer clics al azar" en Canva. La meta es traducir instrucciones de alto nivel a operaciones controladas como:
crear un deck desde un brief
aplicar branding
rellenar placeholders
insertar imagenes y graficos
reordenar slides
exportar el resultado
Related MCP server: mulmocast-vision
Estructura
docs/architecture.md: arquitectura propuesta
docs/tools.md: catalogo exacto de tools MCP
src/index.js: servidor MCP con tools reales y fallback controlado
src/planner.js: planner determinista para briefs
src/smoke-tests.js: prueba real de create/export
src/markdown-deck.js: generacion de decks
.pptxdesde markdown
Variables de entorno
Duplica .env.example en tu .env real y completa al menos:
CANVA_CLIENT_IDCANVA_CLIENT_SECRETCANVA_REDIRECT_URIOPENAI_API_KEYCANVA_ACCESS_TOKENCANVA_TEAM_IDCANVA_BRAND_TEMPLATE_ID
Para la integracion real ya implementada en el scaffold, el token debe tener scopes compatibles con:
design:content:writepara crear disenosdesign:content:readpara exportarlosdesign:meta:readpara consultar jobs de autofillfolder:readpara listar presentacionesbrandtemplate:meta:readybrandtemplate:content:readpara brand templates y autofill
El import de .pptx a Canva usa tambien design:content:write.
Instalacion
npm installEjecucion
npm startSmoke test
npm run smokeEjecuta una prueba real de create_presentation y export_presentation con el token configurado.
Siguiente integracion real
Implementar
DeckPlannerpara generar outline y contenido por slide.Añadir
AssetPipelinepara imagenes, iconos y graficos.Completar mutaciones de slides cuando la API o el fallback de navegador lo requieran.
Añadir
BrowserAutomationAdaptersolo para acciones no cubiertas por API.
Estado actual
Ya hay integracion real para:
create_presentationexport_presentationlist_presentationslist_brand_templatesget_brand_template_datasetcreate_autofilled_presentationgenerate_presentation_from_briefcreate_presentation_outlinecreate_markdown_presentationget_import_job
La exportacion puede devolver el job inmediatamente o esperar a que termine haciendo polling del estado del export job.
Si quieres usar las tools nuevas de carpetas y brand templates, actualiza CANVA_SCOPES y vuelve a autorizar la integracion para obtener un token con esos scopes.
Si quieres generar un deck completo y bonito sin depender de brand templates, usa create_markdown_presentation: genera un .pptx estilizado y lo importa a Canva como una presentacion editable.
Como obtener el access token de Canva
Canva Connect usa OAuth 2.0 con Authorization Code + PKCE. Eso significa que en el Developer Portal normalmente no veras un access_token listo para copiar. Lo que si ves es:
Client IDClient Secretscopes
redirect URL
Con eso debes generar el token.
Paso 1
Completa en tu .env:
CANVA_CLIENT_IDCANVA_CLIENT_SECRETCANVA_REDIRECT_URICANVA_SCOPES
Paso 2
Genera una URL de autorizacion:
npm run oauth:urlEse comando imprime:
authorizationUrlstate
Ademas guarda localmente el codeVerifier y el state en un archivo temporal para que no tengas que copiarlos a mano.
Abre la authorizationUrl en tu navegador, autoriza la app y copia el valor code que Canva devolvera al redirect_uri.
Paso 3
Intercambia el code por el token:
node src/oauth-helper.js exchange <authorization_code>O pega directamente la URL completa de redireccionamiento:
node src/oauth-helper.js exchange-url "http://127.0.0.1:3001/oauth/redirect?code=...&state=..."La respuesta devolvera:
access_tokenrefresh_tokenexpires_inscope
Paso 4
Copia el access_token a tu .env como CANVA_ACCESS_TOKEN y el refresh_token como CANVA_REFRESH_TOKEN.
Si quieres, luego puedo dejar automatizado tambien el refresco del token con refresh_token.
Available Tools
28 toolsadd_slideAdd SlideA
Not implementable: Canva Connect API has no endpoint to add a slide to an existing design.
Inputs: position (required), layoutType (required), presentationId (required), body, +1 more.
apply_brand_kitApply Brand KitA
Not implementable: Canva Connect API has no endpoint to restyle colors/fonts on an existing design.
Inputs: presentationId (required), brandKitId, fontFamily, logoAssetId, +2 more.
batch_upsert_slidesBatch Upsert SlidesA
Not implementable: Canva Connect API has no endpoint to create or update slides in an existing design.
Inputs: slides (required), presentationId (required).
browser_run_canva_actionBrowser Run Canva ActionD
Not implemented: no browser-automation dependency (e.g. Playwright) is installed in this project.
Inputs: action (required), reason (required), target (required).
create_autofilled_presentationCreate Autofilled PresentationB
Creates a Canva design from a brand template using Autofill data.
Inputs: data (required), brandTemplateId (required), title, waitForCompletion.
create_flyerCreate FlyerA
Builds a styled single-page flyer (PPTX) and optionally imports it into Canva as a design. If you already have a flyer-shaped Brand Template in Canva, generate_presentation_from_brief + get_brand_template_dataset (autofill) can target it directly instead.
Inputs: headline (required), body, size, title, +10 more.
create_markdown_presentationCreate Markdown PresentationB
Builds a styled PPTX from a markdown file and optionally imports it into Canva.
Inputs: markdownPath (required), title, fontStyle, outputPath, +2 more.
create_presentationCreate PresentationC
Creates a new Canva presentation from template or outline.
Inputs: title (required), assetId, language, outlineId, +1 more.
create_presentation_outlineCreate Presentation OutlineC
Generates a presentation plan from a brief.
Inputs: topic (required), audience (required), objective (required), tone, +3 more.
export_presentationExport PresentationC
Exports the presentation to a supported format.
Inputs: presentationId (required), size, pages, format, +2 more.
generate_presentation_from_briefGenerate Presentation From BriefA
Builds an outline and creates a Canva presentation using Autofill when a brand template is available.
Inputs: topic (required), audience (required), objective (required), tone, +7 more.
generate_speaker_notesGenerate Speaker NotesA
Not implemented: Canva Connect API has no endpoint to write speaker notes into an existing design.
Inputs: presentationId (required), tone, slideId.
get_brand_template_datasetGet Brand Template DatasetB
Returns the autofillable dataset fields for a Canva brand template.
Inputs: brandTemplateId (required).
get_export_jobGet Export JobB
Retrieves the current status of a Canva export job.
Inputs: jobId (required).
get_import_jobGet Import JobB
Retrieves the current status of a Canva import job.
Inputs: jobId (required).
insert_chartInsert ChartA
Not implementable: Canva Connect API has no endpoint to insert a chart into an existing design's slide.
Inputs: data (required), slideId (required), chartType (required), presentationId (required), +1 more.
insert_imageInsert ImageA
Not implementable: Canva Connect API has no endpoint to insert an image into an existing design's slide.
Inputs: assetId (required), slideId (required), presentationId (required), placementHint.
list_brand_templatesList Brand TemplatesC
Lists Canva brand templates available to the authorized user.
Inputs: limit, query, sortBy, dataset, +2 more.
list_presentationsList PresentationsC
Lists Canva presentations in a folder, defaulting to root.
Inputs: limit, query, sortBy, folderId, +1 more.
reorder_slidesReorder SlidesA
Not implementable: Canva Connect API has no endpoint to reorder slides in an existing design.
Inputs: presentationId (required), orderedSlideIds (required).
replace_text_placeholdersReplace Text PlaceholdersC
Not implementable: Canva Connect API has no endpoint to edit text nodes in an existing design.
Inputs: replacements (required), presentationId (required).
search_assetsSearch AssetsC
Not implemented: no Canva-hosted asset search/library endpoint is wired up here.
Inputs: query (required), limit, assetType.
select_templateSelect TemplateC
Selects the most appropriate Canva template for the brief.
Inputs: style (required), audience (required), query, brandKitId, +1 more.
server_healthServer HealthA
Returns runtime readiness for the Canva MCP server.
Inputs: no named parameters.
update_slide_contentUpdate Slide ContentC
Not implementable: Canva Connect API has no endpoint to edit text/structure of a slide in an existing design.
Inputs: slideId (required), presentationId (required), body, merge, +2 more.
upload_image_assetUpload Image AssetA
Uploads a local image file to Canva as a reusable asset (for use in autofill image fields).
Inputs: name (required), filePath (required), mimeType, waitForCompletion.
validate_presentationValidate PresentationC
Not implemented: Canva Connect API exposes no design-content introspection endpoint to validate an existing design against.
Inputs: presentationId (required), checks.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Multiple tools target the same action of creating presentations (create_presentation, create_markdown_presentation, generate_presentation_from_brief, create_autofilled_presentation, create_flyer), with descriptions that only partially differentiate them. Many tools are stubs marked 'Not implementable' or 'Not implemented,' which creates ambiguity about which tools are actually usable and what they do.
All tool names follow a consistent snake_case verb_noun pattern (e.g., list_presentations, create_presentation, export_presentation, get_export_job). There are no mixed conventions or unpredictable verb styles, making the naming highly predictable.
The server exposes 28 tools, but a large portion are non-functional stubs or redundant creation variants. This overinflates the count relative to the actual working surface, making it heavier than needed for the core functionality and adding noise for agents.
The tool set covers creation, autofill, export, and import workflows, but lacks any meaningful editing or management capabilities—slide manipulation, text replacement, and sharing are all stubs. This leaves obvious gaps in the lifecycle of a presentation (e.g., no update/delete), causing dead ends for agents.
Related MCP Connectors
Create, search, edit, and export designs and assets from Canva.
AI presentation maker. Plan, design, and generate a slide deck.
Create, edit, preview and export designed, editable presentations from a brief or outline.
Create and edit presentations with your AI, preview slides, open them in the Decktype editor.
Related MCP Servers
- AlicenseAqualityDmaintenanceCreates and manipulates PowerPoint presentations with capabilities for adding various slide types, generating images, and incorporating tables and charts through natural language commands.11145MIT

mulmocast-visionofficial
AlicenseCqualityCmaintenanceEnables LLMs to automatically generate presentation slides from natural language instructions using 80+ business-oriented templates, with auto-save and PDF export.834,050 npm1AGPL 3.0- FlicenseCqualityCmaintenanceEnables conversational, deterministic inspection, editing, rendering, and validation of PowerPoint (.pptx) presentations, allowing agentic creation and modification of slides with style preservation and visual verification.34-
- AlicenseNot gradedqualityBmaintenanceEnables agents to create and reconstruct editable PowerPoint presentations from source material, managing project resources and slide construction through natural language.MIT