Skip to main content
Glama
Canva MCP Server

Canva MCP Server

by elisbanpaco

🎨 Canva MCP Server

CI License: MIT Node.js Version NPM Version MCP Standard TypeScript Tested with Vitest

Connect your AI assistants (Google Antigravity, Gemini CLI, Claude Desktop, Cursor) directly to your Canva account through the official API (Canva Connect API). Create, search, export, and upload designs using natural language.


⚡ Quickstart

1. Direct Setup via npx

You can run it directly with npx without needing to clone the repository:

🤖 Google Antigravity / Gemini CLI (~/.gemini/config/mcp_config.json)

{
  "mcpServers": {
    "canva": {
      "command": "npx",
      "args": ["-y", "@elisbanpaco/mcp-canva-gemini-cli"],
      "env": {
        "CANVA_CLIENT_ID": "tu_client_id",
        "CANVA_CLIENT_SECRET": "tu_client_secret"
      }
    }
  }
}

🟣 Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "canva": {
      "command": "npx",
      "args": ["-y", "@elisbanpaco/mcp-canva-gemini-cli"],
      "env": {
        "CANVA_CLIENT_ID": "tu_client_id",
        "CANVA_CLIENT_SECRET": "tu_client_secret"
      }
    }
  }
}

💻 Cursor IDE (.cursor/mcp.json)

{
  "mcpServers": {
    "canva": {
      "command": "npx",
      "args": ["-y", "@elisbanpaco/mcp-canva-gemini-cli"],
      "env": {
        "CANVA_CLIENT_ID": "tu_client_id",
        "CANVA_CLIENT_SECRET": "tu_client_secret"
      }
    }
  }
}

Related MCP server: Canva MCP Server

🧰 Available Tools

Once connected, you can ask your AI:

Tool

What does it do?

Example Prompt

canva_list_designs

Lists your recent designs with thumbnails and editing links.

"Show me my recent presentations in Canva"

canva_get_design

Gets the details, pages, and URLs of a design by its ID.

"Give me the information for the design with ID DAHKDKZXFcQ"

canva_create_design

Creates a new design (presentation, document, Instagram post, etc.).

"Create an Instagram post in Canva titled Launch 2026"

canva_export_design

Exports a design to PNG, JPG, PDF, or PPTX and gives you the download link.

"Export my presentation to PDF format"

canva_list_folders

Explores the contents of your Canva root folder.

"What items do I have in my main Canva folder?"

canva_list_folder_items

Lists the items inside a specific folder.

"Show me the files inside the folder with ID X"

canva_create_folder

Creates a new folder in your Canva.

"Create a folder called Projects 2026"

canva_upload_asset

Uploads a local image from your computer to Canva.

"Upload the image ./banner.png to my Canva account"

canva_get_auth_status

Verifies the connection status and validity of the tokens.

"Check if my Canva connection is active"


🔑 Initial Credential Setup

  1. Go to Canva Developers and click on Your integrations.

  2. Click on Create an integration $\rightarrow$ Choose Public.

    Create Canva Integration

  3. In Credentials, copy your Client ID and generate your Client Secret.

  4. In Scopes, enable the permissions (these are the only supported ones):

    • design:content:read, design:content:write, design:meta:read

    • asset:read, asset:write, folder:read, folder:write, app:read

    Scopes configuration in Canva

  5. In Authentication, add the exact redirect URL: http://127.0.0.1:3000/callback

    Add Redirect URL

Authentication (First time only)

Since Canva requires per-user credentials, open your terminal and run this to authenticate and securely store your tokens:

# En Linux/macOS
export CANVA_CLIENT_ID="tu_client_id"
export CANVA_CLIENT_SECRET="tu_client_secret"
npx -p @elisbanpaco/mcp-canva-gemini-cli mcp-canva-auth

# En Windows (PowerShell)
$env:CANVA_CLIENT_ID="tu_client_id"
$env:CANVA_CLIENT_SECRET="tu_client_secret"
npx -p @elisbanpaco/mcp-canva-gemini-cli mcp-canva-auth

Your browser will open to confirm. Done! Your tokens will be saved with 0600 permissions on your operating system.


🏗️ Architecture and Security

sequenceDiagram
    autonumber
    actor User as Usuario / Asistente IA
    participant MCP as Canva MCP Server (Stdio)
    participant Vault as Bóveda de Tokens (~/.config/canva-mcp)
    participant CanvaOAuth as Canva OAuth2 (PKCE S256)
    participant CanvaAPI as Canva Connect API (REST v1)

    Note over User,CanvaAPI: 1. Flujo de Autenticación (pnpm auth)
    MCP->>CanvaOAuth: Inicia flujo PKCE con desafío SHA-256
    CanvaOAuth-->>MCP: Redirección con Código de Autorización
    MCP->>CanvaOAuth: Intercambio de código por Tokens de acceso
    CanvaOAuth-->>MCP: Access Token + Refresh Token
    MCP->>Vault: Guarda en almacenamiento seguro (Permisos 0600)

    Note over User,CanvaAPI: 2. Ejecución de Herramientas en Tiempo Real
    User->>MCP: Llama a herramienta (ej. canva_list_designs)
    MCP->>Vault: Carga token válido (Auto-renovación con Mutex)
    MCP->>CanvaAPI: Petición HTTP Bearer con Exponential Backoff
    CanvaAPI-->>MCP: Respuesta JSON con metadatos y URLs
    MCP-->>User: Resultado estructurado

Engineering Features:

  • 🔐 Secure OS Vault: Tokens are stored in the system directory (~/.config/canva-mcp/ on Linux/Mac or %APPDATA%\canva-mcp on Windows) with POSIX 0600 permissions (readable only by your user).

  • ⚡ Anti-collision Mutex: Prevents race conditions when the model runs multiple tools in parallel during token renewal.

  • 🛡️ Exponential Backoff: Automatic retries with exponential backoff on rate limits (HTTP 429) and temporary outages (5xx).

  • 🧪 100% Test Coverage: Complete unit test suite with Vitest.


🧪 Testing and Development

# Ejecutar suite de pruebas unitarias
pnpm test

# Verificación estricta de tipos TypeScript
pnpm typecheck

# Compilar paquete de producción
pnpm build

📄 License

This project is licensed under the MIT license. See the LICENSE file for more details.

Available Tools

10 tools
canva_create_designB

Crea un nuevo diseño en Canva (por ejemplo: presentación, documento, post de Instagram, flyer, banner o dimensiones personalizadas).

Inputs: title, assetId, presetName, customWidth, +1 more.

canva_create_folderC

Crea una nueva carpeta en Canva.

Inputs: name (required), parentFolderId.

canva_export_designA

Exporta un diseño de Canva a formato PNG, JPG, PDF o PPTX y devuelve los enlaces de descarga.

Inputs: format (required), designId (required), quality, paperSize.

canva_get_auth_statusA

Verifica el estado de la conexión, validez del token y permisos activos de Canva.

Inputs: no named parameters.

canva_get_designA

Obtiene los detalles, miniaturas y enlaces de edición/visualización de un diseño por su ID.

Inputs: designId (required).

canva_get_profileA

Obtiene el perfil del usuario autenticado y el equipo actual en Canva.

Inputs: no named parameters.

canva_list_designsC

Lista los diseños de Canva del usuario (presentaciones, documentos, posts, etc.).

Inputs: sortBy, ownership, continuation.

canva_list_folder_itemsA

Lista el contenido (diseños, imágenes, subcarpetas) dentro de una carpeta específica.

Inputs: folderId (required), continuation.

canva_list_foldersC

Lista los elementos y subcarpetas dentro de la carpeta raíz de Canva.

Inputs: itemType, continuation.

canva_upload_assetB

Sube un archivo de imagen o recurso local a Canva.

Inputs: name (required), filePath (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 10 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes, but canva_list_folders and canva_list_folder_items overlap: one lists root folder contents and the other lists contents of a specific folder, which could cause selection confusion. The rest are well separated by resource and action.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with the canva_ prefix and a clear verb_noun structure (list_designs, get_design, create_folder, upload_asset). This makes the tool set predictable and easy to navigate.

    Tool Count5/5

    Ten tools is a well-scoped size for a Canva integration, covering authentication, design CRUD, folder operations, asset upload, and export. Each tool serves a meaningful purpose without the set feeling bloated or too thin.

    Completeness4/5

    The server covers the main Canva workflows: viewing profile, listing/getting/creating designs, exporting, folder navigation/creation, and uploading assets. Minor gaps include no delete or update operations for designs/folders and no asset listing, but these are not critical for typical use.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables programmatic design creation and manipulation on the Canvelete platform through AI assistants. Supports design management, canvas element manipulation, template application, asset management, and real-time synchronization with the design editor.
      26 npm
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to interact with the Canva Connect REST API, supporting design creation, brand template autofill, asset uploads, folder management, and design exports to PDF, PNG, JPG, PPTX, and MP4.
      -
    • A
      license
      C
      quality
      C
      maintenance
      Enables interaction with Canva through the official Canva Connect API via OAuth, including listing and creating designs, uploading assets, exporting, brand template autofill, resizing, catalog access, and optional desktop screen control.
      28
      MIT