Rayzia MCP
Enables AI agents to drive a live SVG/vector editor, allowing a full observe-and-act loop on a canvas with real tools, state reading, and PNG rendering.
README
Rayzia MCP — an MCP server that drives a real SVG editor
Rayzia is a free online SVG/vector editor. This MCP server lets an AI agent (Claude Code, Claude Desktop, or any MCP client) drive the running editor: draw with real tools, edit the artwork already on the canvas, read scene state back, and render PNGs so the model can see its own work.
Unlike generate-only servers that write an SVG file and hand it over, this one gives the agent a full observe-and-act loop on a live canvas — and the human watches every operation land, with each step one undo away.
Docs: rayzia.com/mcp · Editor: rayzia.com/vector
MCP client ──stdio JSON-RPC──▶ server.mjs ──SSE /events──▶ browser bridge
▲ │
└──────── POST /reply ───────┘
browser bridge ──▶ editor host facade ──▶ engine (runs in a worker)
Zero npm dependencies — Node ≥16 built-ins only. The HTTP bridge binds to
127.0.0.1 and every operation carries a per-browser capability token.
Quickstart — the in-app way (recommended)
The editor has the browser side built in:
-
Open the editor at rayzia.com/vector.
-
Open the AI Assistant panel → settings (gear) → Claude Code (local).
-
Copy the SKILL.md the pane generates — it embeds this server's code, your browser's capability token and the bridge port. Give it to Claude Code; it saves the server file and registers it as an MCP server:
claude mcp add rayzia \ --env AI_MCP_PORT=<port> --env AI_MCP_TOKEN=<token> \ -- node /absolute/path/to/rayzia-mcp-server.mjs -
Click Connect. The status dot turns green. Type in Claude Code directly, or chat from the panel by telling Claude Code to "listen for Rayzia panel prompts".
Quickstart — any MCP client
-
Run the editor in a browser and connect the bridge (in-app Connect as above, or paste
bridge.jsinto the editor's DevTools console). -
Point your MCP client at the server over stdio:
{ "mcpServers": { "rayzia": { "command": "node", "args": ["/absolute/path/to/server.mjs"], "env": { "AI_MCP_PORT": "8765", "AI_MCP_TOKEN": "<token>" } } } }
Diagnostics go to stderr (stdout is the JSON-RPC channel). Default bridge
port is 8765, override with AI_MCP_PORT.
Tools
| Tool | Purpose |
|---|---|
get_catalog |
Discover everything the editor exposes: semantic verbs with param schemas, 533 raw commands, 69 effects, 57 tools. Call it first. |
get_state |
Read the scene: selection, all objects (recursed into groups) with ids, bounding boxes and paints, plus active tool, document size and view. |
run_verb |
High-level verbs: shapes, text (area / on-path / vertical / per-character), gradients, blends, warps, ~200 live path effects, filters, lock/hide, asset library, batch. One undo step each. |
draw |
Draw with a real tool via synthetic input: Pen paths or freehand strokes, with modifier keys for shape-builder punches and mesh edits. |
run_command |
Escape hatch: any raw engine command by name. File/document ops are deny-listed at the engine boundary. |
get_svg |
Export the current document as a round-trip-safe SVG string. |
get_render |
Render the canvas to a PNG (MCP image block) so the model can see its work. |
wait_for_prompt |
Long-poll for the next prompt the user types in the editor's AI Assistant panel. |
reply_to_user |
Post a short assistant reply back into that panel. |
Security
- The server binds to
127.0.0.1only, and rejects requests whoseHostheader is not loopback (closes the DNS-rebinding drive path). - Every operation carries a capability token (
AI_MCP_TOKEN) generated once per browser; the editor bridge rejects ops with a mismatched token, so a rogue local process squatting the port cannot drive the canvas. - File and document operations (save / open / new / import) are deny-listed at the engine boundary.
- Connecting is opt-in from the editor's side. The panel
/promptinbox is token-authenticated too, so a local web page cannot inject prompts.
Do not expose the bridge port beyond localhost.
Self-test
_selftest.mjs spawns the server, waits for a browser bridge, then drives the
full round-trip (initialize → tools/list → get_catalog → createShape →
addGradient → get_state → get_svg):
AI_MCP_PORT=8791 node _selftest.mjs
Expect SELFTEST PASS.
License
MIT © 2026 Rayzia
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.