visio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VISIO_MCP_FAKE | No | Set to '1' to use an in-memory sample drawing instead of a real Visio instance. Equivalent to the --fake command line flag. | |
| VISIO_MCP_READ_ONLY | No | Set to '1' to enable read-only mode, which publishes only inspection tools. Equivalent to the --read-only command line flag. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| visio_statusA | Check which running Visio instance is attached and what it has open. Call this first, and again if another tool reports a lost connection. |
| visio_list_documentsA | List the drawings open in Visio right now. Args: include_stencils: Also list open stencil and template documents, which are normally hidden because they are not the user's drawing. |
| visio_list_pagesA | List the pages of a document, with their size in inches and shape counts. Args: document: File name or 1-based index. Omit for the active document. |
| visio_list_shapesA | List the shapes on a page with their id, text, master and geometry. This is the way to find the shape ids every editing tool needs. x and y are the centre of the shape in inches from the bottom-left of the page. Args: page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. include_connectors: Set false to hide connector lines and see only the boxes. |
| visio_get_shapeA | Read everything about one shape: text, geometry, Shape Data, layers, links.
Args: shape_id: Id from visio_list_shapes. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_list_connectionsA | Read the page as a graph: which shape each connector runs from and to. Connectors that are glued at only one end, or at neither, come back with null on the loose side, which is how you spot a broken diagram. Args: page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_search_textA | Find shapes whose text contains a substring, across every page. Args: query: Substring to look for. document: File name or 1-based index. Omit for the active document. match_case: Match case exactly instead of ignoring it. |
| visio_list_mastersA | List the shape masters available to drop with visio_add_shape. With no arguments this covers the masters already used in the drawing plus every open stencil, which is usually what matches the drawing's existing style. Args: stencil: Look inside this stencil instead, by file name Visio knows (for example "BASIC_U.VSSX") or a full path to a .vssx file. document: File name or 1-based index. Omit for the active document. |
| visio_render_pageA | Render a page to a PNG and return it, so you can look at the drawing. Use this whenever layout, overlap or visual style matters; shape coordinates alone rarely tell you whether a diagram reads well. Args: page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. max_pixels: Longest edge of the image. Keep it modest unless you need to read small print. |
| visio_export_pageA | Write a page to an image file on disk. The extension picks the format; Visio handles .png, .jpg, .gif, .bmp, .tif, .svg and .emf. Args: path: Destination file path. Relative paths resolve against the server's working directory. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. max_pixels: Longest edge for raster formats. |
| visio_export_pdfA | Export a document to PDF. Args: path: Destination .pdf path. document: File name or 1-based index. Omit for the active document. page: Page to export when all_pages is false. all_pages: Export every page rather than a single one. |
| visio_set_shape_textB | Replace the text of one shape. Args: shape_id: Id from visio_list_shapes. text: New text. Use \n for a line break. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_add_shapeA | Add a shape to a page and return its new id. Prefer a master that the drawing already uses, so the new shape inherits the drawing's style; visio_list_masters shows what is available. Without a master you get a plain drawn shape. Args: x: Centre of the shape, inches from the left edge. y: Centre of the shape, inches from the bottom edge. text: Text to put in the shape. master: Master name to drop, for example "Process". stencil: Stencil to look in if the master is not already available. width: Width in inches. Defaults to the master's own size, or 2. height: Height in inches. Defaults to the master's own size, or 1. primitive: Shape to draw when no master is given: rectangle, ellipse or line. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_connect_shapesA | Draw a dynamic connector from one shape to another. The connector is glued to both shapes, so it reroutes itself when either one moves. Args: from_shape_id: Shape the arrow leaves. to_shape_id: Shape the arrow points at. label: Optional text to put on the connector. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_move_shapeA | Move, resize or rotate a shape. Only the values you pass are changed. Args: shape_id: Id from visio_list_shapes. x: New centre x in inches from the left edge. y: New centre y in inches from the bottom edge. width: New width in inches. height: New height in inches. angle: New rotation in degrees, counter-clockwise. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_delete_shapeA | Delete a shape from the page. Deleting a box leaves its connectors behind as dangling lines, so delete those too, or check visio_list_connections afterwards. Args: shape_id: Id from visio_list_shapes. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_add_pageA | Add a page to a document. Args: name: Name for the new page. Visio picks one if you omit it. document: File name or 1-based index. Omit for the active document. |
| visio_set_shape_dataA | Set a Shape Data field on a shape, creating the row if it is missing. Args: shape_id: Id from visio_list_shapes. name: Row name, as shown in visio_get_shape's shape_data keys. Letters, digits and underscores only. value: Value to store. label: Display label shown in Visio's Shape Data window. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_replace_textA | Replace a substring in the text of every shape that contains it. Args: find: Substring to look for. replace: Replacement text. page: Restrict to one page. Omit to cover every page. document: File name or 1-based index. Omit for the active document. match_case: Match case exactly instead of ignoring it. |
| visio_select_shapesA | Select shapes in the Visio window, to show the user what you mean. This changes the selection and the page on screen but not the drawing. Args: shape_ids: Ids to select. page: Page name or 1-based index. Omit for the page on screen. document: File name or 1-based index. Omit for the active document. |
| visio_saveB | Write the document to disk. Edits are in memory until this is called. Args: document: File name or 1-based index. Omit for the active document. path: Save to this path instead of the document's own, leaving the original file untouched. |
| visio_undoA | Undo the last actions in Visio, exactly as Ctrl+Z would. This undoes whatever is on top of Visio's undo stack, which may be the user's own last edit rather than yours. Args: steps: How many steps to undo. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/isiec9ai/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server