Canva MCP Server
Enables creation and management of Canva presentations through natural language, leveraging LLM for narrative planning and integrating with Canva's API for design operations.
README
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
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 install
Ejecucion
npm start
Smoke test
npm run smoke
Ejecuta 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 Secret- scopes
- 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:url
Ese 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.