Canva Server
FreeNot checkedA Model Context Protocol (MCP) server for Canva integration. Connect Claude Code or any MCP-compatible AI client to your Canva account to search designs, genera
About
A Model Context Protocol (MCP) server for Canva integration. Connect Claude Code or any MCP-compatible AI client to your Canva account to search designs, generate AI designs, edit content, manage folders, and collaborate through comments.
README
A Model Context Protocol (MCP) server for Canva integration. Connect Claude Code or any MCP-compatible AI client to your Canva account — search designs, generate AI designs, edit content, manage folders, and collaborate through comments.
Quick Start
git clone https://github.com/your-username/canva-mcp-server.git
cd canva-mcp-server
npm install
cp .env.example .env
# Edit .env with your Canva credentials (see below)
./start.sh
Get Canva Credentials
- Visit https://www.canva.com/developers/
- Create a new app
- Under Authentication, copy your Client ID and Client Secret
- Add
http://127.0.0.1:8001/auth/callbackas a redirect URI - Enable these OAuth scopes:
asset:read,asset:write,comment:read,comment:write,design:content:read,design:content:write,design:meta:read,folder:read,folder:write,profile:read
Set your credentials in .env:
CANVA_CLIENT_ID=your_client_id_here
CANVA_CLIENT_SECRET=your_client_secret_here
CANVA_REDIRECT_URI=http://127.0.0.1:8001/auth/callback
Claude Code Setup
claude mcp add --transport sse --scope user canva http://127.0.0.1:8001/mcp
Then start the server (./start.sh) before opening Claude Code. On first tool call, the server returns an OAuth URL — visit it in your browser to authenticate.
Available Tools
| Tool | Description |
|---|---|
search-designs |
Search designs by title, sort order, and ownership |
get-design |
Get metadata for a specific design |
get-design-pages |
List all pages in a design with thumbnails |
get-design-content |
Extract all text content from a design |
generate-design |
Generate AI design candidates from a text description |
create-design-from-candidate |
Convert an AI candidate into an editable design |
start-editing-transaction |
Begin an editing session, returns a transaction ID |
perform-editing-operations |
Update title, replace text, or replace media |
commit-editing-transaction |
Save all changes in a transaction |
cancel-editing-transaction |
Discard all changes in a transaction |
get-design-thumbnail |
Get a page thumbnail during editing |
create-folder |
Create a folder (root or nested) |
move-item-to-folder |
Move a design or folder into another folder |
list-folder-items |
Browse folder contents with filtering |
comment-on-design |
Add a comment to a design |
list-comments |
List all comments on a design |
reply-to-comment |
Reply to a comment thread |
list-replies |
List all replies to a comment |
upload-asset-from-url |
Import an image or video from a URL |
get-assets |
Retrieve metadata for multiple assets |
Security
This fork hardens the original with:
- 127.0.0.1 binding — server listens on loopback only, not exposed to the network
- Auth middleware — optional Bearer token (
MCP_AUTH_TOKENin.env) secures the MCP endpoint - XSS protection — all UI widget templates use DOM API construction instead of
innerHTMLwith API data - CORS allowlist — configurable via
CORS_ORIGINSenv var, no wildcard in production paths - Input validation — Zod schemas on all tool inputs, size limits enforced
- Error sanitization — Canva API errors logged server-side, not reflected to clients
The src/server/worker.ts file is a development/demo stub for Cloudflare Workers deployment. For production, use the Node.js server (src/server/server.ts).
Project Structure
canva-mcp-server/
├── src/
│ └── server/
│ ├── server.ts # Main Node.js server
│ └── worker.ts # Cloudflare Worker demo stub
├── src/components/ # React widget components (compiled to assets/)
├── ui-components/ # Standalone HTML widget templates
├── assets/ # Compiled widget output (generated by npm run build)
├── .env.example # Environment variable template
├── start.sh # Start script
├── quick-start.sh # First-run setup script
└── README.md
Review Pipeline
This fork was security-hardened through a multi-agent parallel review pipeline built by The Funkatorium:
| Agent | Role | What they caught |
|---|---|---|
| Michael | Senior Security Specialist | Zero-auth MCP endpoints, 0.0.0.0 binding, reflected XSS in OAuth callbacks, CORS misconfiguration, leaked infrastructure IDs |
| Reeve | Code Craft Reviewer | Mock import overriding production code, dead if/else branches, AI-generated docs committed to repo, unused hook subscriptions |
| Fischer | Static Analysis Specialist | 20+ as any type assertions, z.any() bypassing validation, null-unsafe window.openai access |
| Nikita | Dependency Safety Specialist | Exposed Client ID in .env.example, dependency bloat analysis, license compatibility audit |
Three audit rounds. 12-point final gate check. All agents run in parallel — independent concerns, no bottleneck.
This is how MUSE Studio builds software.
Credit
Based on EmilyThaHuman/canva-mcp-server. Security-hardened by The Funkatorium.
License
MIT — see LICENSE
Installing Canva Server
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/falcoschaefer99-eng/canva-mcp-serverFAQ
Is Canva Server MCP free?
Yes, Canva Server MCP is free — one-click install via Unyly at no cost.
Does Canva Server need an API key?
No, Canva Server runs without API keys or environment variables.
Is Canva Server hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Canva Server in Claude Desktop, Claude Code or Cursor?
Open Canva Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Canva Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
