Visual MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| render_diagramA | Create and render a structured visual diagram as SVG, in a single call. USE THIS whenever the user asks to draw, sketch, visualise, diagram, illustrate, map out, show graphically, explain visually, or represent something spatially: architectures, network topologies, flows, pipelines, data structures, algorithms, state machines, relationships, plots, distributions, classifiers, or any concept where position and connection carry meaning. ALWAYS PREFER THIS OVER ASCII ART, box-drawing characters, Markdown tables used as layout, or hand-written SVG/Mermaid. Those are unreliable and hard to read; this tool produces a precise, styled picture and the user sees it directly. HOW TO USE IT WELL:
DO NOT use this tool for: plain prose answers, code, tables of numbers, or when the user explicitly asked for text only. Returns a |
| render_sceneA | Render a stored scene and show it to the user. USE THIS after a batch of add_element / update_element / remove_element / group_elements calls, to display the updated diagram. It is the last step of every edit. This never changes the scene - it only draws what is currently in it. For a brand new diagram use render_diagram instead, which builds and shows it in one call. |
| get_sceneA | Return the current structured description of a scene: every element with its id, type and properties, plus the position and size each one actually ended up with. USE THIS BEFORE EDITING whenever you are not sure of the current state - which ids exist, what a node is called, where it sits, what is already connected. Reading first is what makes small edits possible instead of redrawing the diagram from scratch. The This does not display anything. |
| add_elementA | Add one element to a scene that already exists. USE THIS when the user wants something new in a diagram you already drew: "add a load balancer", "put a Redis cache next to the API", "draw an arrow from A to B". Call get_scene first if you are not certain which ids exist. To link the new element to an existing one, make a second call with an element of type 'connection' referencing the two ids - the geometry is computed for you. Omit x/y and the layout engine places it. Set This does not display anything. Call render_scene once your edits are done. |
| update_elementA | Change properties of one element. Only the fields you send are touched; everything else in the scene stays exactly as it is. USE THIS for every 'change that' request: move it, resize it, recolour it, rename its label, make a link dashed, add a caption to a connection. For a relative move like "a bit to the right", read the current position with get_scene and send the new value. DO NOT call render_diagram again to change one thing. That throws away the scene id, the layout and everything the user already accepted.
Nothing is displayed until you call render_scene. |
| remove_elementA | Delete one element from a scene. USE THIS for "remove the cache", "delete that arrow", "drop the second database". Connections pointing at the element, and labels attached to it, are deleted with it by
default - otherwise the scene would keep dangling references. Set Removing a 'group' also removes everything inside it. To keep the children, update the
group instead and set |
| group_elementsA | Wrap existing top-level elements in a labelled container. USE THIS for "put all of this inside a box called AWS", "group these services into a VPC", "draw a boundary around the data layer", "show which parts are in VLAN 10". The members keep their ids, and every connection to or from them keeps working - including connections that cross the boundary. Set Only top-level elements can be grouped. To nest a group inside another group, create the inner one first, then group it together with its siblings. |
| create_sceneA | Create a new, empty scene and get back its id. USE THIS when you want to build a diagram incrementally - create the canvas, then add elements one at a time with add_element, then call render_scene when it is complete. DO NOT use this when you already know the whole picture: render_diagram does the same job in one round trip and is almost always the better choice. Incremental building is only worth it for large diagrams you are assembling as the conversation goes. Nothing is shown to the user until you call render_scene. |
| clear_sceneA | Remove every element from a scene while keeping its id, canvas, theme and title. USE THIS when the user wants to restart the drawing but keep talking about the same diagram: "scrap that, let's do it differently". DO NOT use it for corrections - update_element and remove_element exist for that, and they preserve everything the user already approved. |
| list_examplesA | Return complete, working example scenes for common kinds of diagram. USE THIS when you are unsure how to express something with this server: which element type fits, how data frames work, how to nest a group. Copy the closest example and adapt it - that is faster and more reliable than guessing at the schema. Call it with no arguments for the catalogue, or with Available: network, lda, regression, architecture, tree. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scene-viewer | Interactive SVG viewer with zoom, pan, fit and export. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/daniel69zz/visual_draw_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server