Getting Started

Connect an MCP client to Excalidraw+

Prerequisites

  1. An Excalidraw Plus workspace
  2. A public API key from workspace settings
  3. An MCP client that supports Streamable HTTP

Excalidraw+ MCP is currently alpha and built on top of the public API. Contracts, tool names, schemas, and behavior may still change. Access is request-only for now, so ask in our Discord or email support@excalidraw.com to get access.

If you want the open source MCP server instead, see excalidraw/excalidraw-mcp. We may merge the open source and Excalidraw+ MCP efforts more closely later.

1. Create an API key

Create a key in Excalidraw Plus with only the permissions you need. MCP tools are filtered by the same route permissions as the public API.

If you do not have access yet, ask in our Discord or email support@excalidraw.com. MCP access is request-only during alpha.

Learn more in API Authentication.

2. Configure your MCP client

Set the MCP server URL:

https://api.excalidraw.com/api/v1/mcp

And send your key in the Authorization header:

Authorization: Bearer <API_KEY>

The endpoint and auth are the same across clients, but each client uses its own config shape. Pick your client and paste the matching config into its MCP settings/config UI.

Use this in Cursor MCP settings:

{
  "mcpServers": {
    "excalidraw": {
      "url": "https://api.excalidraw.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}

Use this in .vscode/mcp.json or your VS Code user mcp.json:

{
  "servers": {
    "excalidraw": {
      "type": "http",
      "url": "https://api.excalidraw.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}

Use this in your OpenCode config under mcp:

{
  "mcp": {
    "excalidraw": {
      "type": "remote",
      "url": "https://api.excalidraw.com/api/v1/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}

Use this in project-scoped .mcp.json for Claude Code:

{
  "mcpServers": {
    "excalidraw": {
      "type": "http",
      "url": "https://api.excalidraw.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}

Codex uses config.toml, not JSON. Add this to ~/.codex/config.toml or a project-scoped .codex/config.toml:

[mcp_servers.excalidraw]
url = "https://api.excalidraw.com/api/v1/mcp"
env_http_headers = { Authorization = "EXCALIDRAW_API_KEY" }

Then set:

export EXCALIDRAW_API_KEY="Bearer <API_KEY>"

If your client expects the more common mcpServers JSON shape, use this:

{
  "mcpServers": {
    "excalidraw": {
      "url": "https://api.excalidraw.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}

3. Verify tool access

After connecting, ask your client to list available tools. The list depends on the permissions assigned to your API key.

If a tool is missing, update key permissions first, then reconnect.

Troubleshooting

  • 401 Unauthorized: missing or invalid Authorization header
  • Tool not visible: API key lacks permission for the underlying route
  • 405 Method Not Allowed: use POST /mcp only (stateless mode)

Last updated on

On this page