Skip to main content
Glama
Canva API MCP Server

Canva API MCP Server

README.md
# Canva API MCP Server

A comprehensive Model Context Protocol (MCP) server for interacting with Canva's API. This server provides tools and resources for managing designs, brands, assets, and users in Canva.

## Features

- Complete coverage of Canva API endpoints
- Tools for all major API operations
- Resources for documentation and entity details
- Mock data support for testing without API credentials

## Getting Started

1. Clone this repository
2. Install dependencies:
   ```
   npm install
   ```
3. Copy `.env.example` to `.env` and add your Canva API credentials:
   ```
   CANVA_APP_ID=your_app_id
   CANVA_API_KEY=your_api_key
   ```
4. Start the server:
   ```
   npm run dev
   ```

## Testing with MCP Inspector

To test the server with the MCP Inspector:

```
npm run inspect
```

This will open a web interface where you can:
- Browse and test all available tools
- Access resources
- View server logs

## Available Tools

### Design Management
- `get_design` - Get information about a specific design
- `list_designs` - List designs with optional pagination

### Brand Management
- `get_brand` - Get information about a specific brand
- `list_brands` - List brands with optional pagination

### Asset Management
- `get_asset` - Get information about a specific asset
- `list_assets` - List assets with optional filtering and pagination
- `upload_image` - Upload an image to Canva from a URL

### User Management
- `get_user` - Get information about a specific user
- `list_users` - List users with optional pagination

## Available Resources

### Documentation
- `canva://overview` - General API overview
- `canva://getting-started` - Getting started guide
- `canva://authentication` - Authentication information
- `canva://designs` - Designs API documentation
- `canva://brands` - Brands API documentation
- `canva://assets` - Assets API documentation
- `canva://users` - Users API documentation

### Entity Resources
- `canva://design/{designId}` - Information about a specific design
- `canva://brand/{brandId}` - Information about a specific brand
- `canva://asset/{assetId}` - Information about a specific asset

## Mock Data

If no API credentials are provided, the server will use mock data for all responses. This is useful for testing and development.

## License

MIT

TDQS

D1.8/5.0

Scored across 9 tools

Disambiguation4/5

The get/list pairs for each resource are distinct and easy to differentiate. The only potential confusion is 'upload_image' versus 'get_asset'/'list_assets', but the verb 'upload' clearly indicates a different action. Without descriptions, the boundaries between asset, design, user, and brand are clear from the names.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern with 'get_' for singular resources and 'list_' for plural collections (e.g., get_user, list_users). The exception is 'upload_image', which uses a different verb and breaks the otherwise predictable pattern. The mix is minor but noticeable.

Tool Count4/5

With 9 tools, the count is within the typical well-scoped range. Each resource has a get and list tool, which is reasonable for a read-focused server. The count feels appropriate for the apparent scope, though the lack of mutating tools may make the set feel slightly thin for a full API server.

Completeness2/5

The tool surface is severely incomplete for a Canva API. Only get and list operations are present for assets, users, designs, and brands, with no create, update, or delete functionality. 'upload_image' provides some creation capability for assets, but the rest of the resources have no way to create or modify them, leaving significant gaps for agents.

Maintenance

ActivityInactive
ResponsivenessNo recent community issues