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 "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., "@Canva MCP Servercreate 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: Google Slides MCP Server
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.
This server cannot be installed
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/moisesbritez92/canvas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server