From f4a966992f4de00e159109872a68394b316ec373 Mon Sep 17 00:00:00 2001 From: Minu Palaniappan Date: Thu, 10 Sep 2026 13:14:48 -0700 Subject: [PATCH] feat(third_party): add Excalidraw plugin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../excalidraw/.cursor-plugin/plugin.json | 35 +++++++++++ third_party/excalidraw/CHANGELOG.md | 9 +++ third_party/excalidraw/LICENSE | 21 +++++++ third_party/excalidraw/README.md | 58 ++++++++++++++++++ third_party/excalidraw/assets/logo.png | Bin 0 -> 8049 bytes third_party/excalidraw/mcp.json | 8 +++ 8 files changed, 137 insertions(+) create mode 100644 third_party/excalidraw/.cursor-plugin/plugin.json create mode 100644 third_party/excalidraw/CHANGELOG.md create mode 100644 third_party/excalidraw/LICENSE create mode 100644 third_party/excalidraw/README.md create mode 100644 third_party/excalidraw/assets/logo.png create mode 100644 third_party/excalidraw/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 6d723b166..5ff10ceb1 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -392,6 +392,11 @@ "name": "daloopa", "source": "third_party/daloopa", "description": "Pull source-linked fundamentals, KPIs, filings, and prices." + }, + { + "name": "excalidraw", + "source": "third_party/excalidraw", + "description": "Draw and export hand-drawn diagrams from chat." } ] } diff --git a/README.md b/README.md index e9fceb3e8..6cff83a32 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `interactive-brokers` | [Interactive Brokers](third_party/interactive-brokers/) | Cursor | Integrations | Review positions, balances, P&L, and draft trade instructions. | | `meltwater` | [Meltwater](third_party/meltwater/) | Cursor | Integrations | Search media and social mentions and pull analytics. | | `daloopa` | [Daloopa](third_party/daloopa/) | Cursor | Integrations | Pull source-linked fundamentals, KPIs, filings, and prices. | +| `excalidraw` | [Excalidraw](third_party/excalidraw/) | Cursor | Integrations | Draw and export hand-drawn diagrams from chat. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/excalidraw/.cursor-plugin/plugin.json b/third_party/excalidraw/.cursor-plugin/plugin.json new file mode 100644 index 000000000..d9699ad1b --- /dev/null +++ b/third_party/excalidraw/.cursor-plugin/plugin.json @@ -0,0 +1,35 @@ +{ + "name": "excalidraw", + "displayName": "Excalidraw", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Draw and export hand-drawn diagrams from chat.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://github.com/excalidraw/excalidraw-mcp", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "excalidraw", + "diagrams", + "whiteboard", + "sketch", + "flowchart", + "architecture", + "mcp apps", + "mcp" + ], + "category": "integrations", + "tags": [ + "excalidraw", + "diagrams", + "productivity", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/excalidraw/CHANGELOG.md b/third_party/excalidraw/CHANGELOG.md new file mode 100644 index 000000000..88ed37b98 --- /dev/null +++ b/third_party/excalidraw/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `excalidraw` MCP server pointing at Excalidraw's hosted Streamable HTTP endpoint (`https://mcp.excalidraw.com/mcp`). +- No auth — the public server needs no credentials. +- Logo: Excalidraw's official mark, from the `excalidraw` GitHub organization. diff --git a/third_party/excalidraw/LICENSE b/third_party/excalidraw/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/excalidraw/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/excalidraw/README.md b/third_party/excalidraw/README.md new file mode 100644 index 000000000..6b5e04455 --- /dev/null +++ b/third_party/excalidraw/README.md @@ -0,0 +1,58 @@ +# Excalidraw + +Cursor plugin that connects agents to [Excalidraw](https://github.com/excalidraw/excalidraw-mcp) through Excalidraw's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Draw and export hand-drawn diagrams from chat. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Excalidraw**. +3. Click **Install**. + +Or run `/add-plugin excalidraw` in chat. + +## MCP + +```json +{ + "mcpServers": { + "excalidraw": { + "type": "http", + "url": "https://mcp.excalidraw.com/mcp" + } + } +} +``` + +No authentication is required; the server covers public repositories only. + +## Before you connect + +No account is needed. The hosted server renders diagrams as interactive MCP App views in clients that support them, and can export `.excalidraw` files anywhere. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Draw | Create a diagram view from elements the agent describes | +| Export | Export the current drawing to an `.excalidraw` file | +| Checkpoints | Save and restore drawing checkpoints within a session | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- This is the open-source Excalidraw MCP server. Excalidraw+ workspaces use a separate authenticated endpoint (`https://api.excalidraw.com/api/v1/mcp`) that this plugin does not configure. +- The bare origin `https://mcp.excalidraw.com` redirects to `/mcp`; the plugin uses the final URL. + +## Docs + +- excalidraw-mcp on GitHub: https://github.com/excalidraw/excalidraw-mcp +- Server URL: https://mcp.excalidraw.com/mcp + +Logo is Excalidraw's official mark, from the `excalidraw` GitHub organization. + +## License + +MIT diff --git a/third_party/excalidraw/assets/logo.png b/third_party/excalidraw/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..608b31bd912c3f17f5d90fbd41b47c18f7931f39 GIT binary patch literal 8049 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 MT0#L_D`ph*KNo{}-~a#s literal 0 HcmV?d00001 diff --git a/third_party/excalidraw/mcp.json b/third_party/excalidraw/mcp.json new file mode 100644 index 000000000..55f551ef8 --- /dev/null +++ b/third_party/excalidraw/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "excalidraw": { + "type": "http", + "url": "https://mcp.excalidraw.com/mcp" + } + } +}