ASCIIFlow MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ASCIIFlow MCP ServerDraw an ASCII wireframe for a simple login page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ASCIIFlow MCP Server
An MCP (Model Context Protocol) server that exposes ASCIIFlow's drawing primitives as tools, enabling AI assistants to generate ASCII wireframes directly from PRDs or natural language descriptions.
Installation
Requires Node.js >= 20.
Recommended: Global installation from source
# Clone the repository with submodules
git clone --recurse-submodules https://github.com/bobooooo/asciiflow-mcp.git
cd asciiflow-mcp
# Install dependencies
npm install
# Install globally
npm install -g .If you already cloned without --recurse-submodules, initialize the submodule:
git submodule update --init --recursiveAlternative: Direct use with npx (may be slower)
npx -y github:bobooooo/asciiflow-mcpNote: This package uses a git submodule for the ASCIIFlow client library. When cloning, use
--recurse-submodulesto automatically fetch the required dependencies.
Related MCP server: tl-draw-mcp
Claude Desktop Configuration
For global installation (recommended):
Add the following to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"asciiflow": {
"command": "asciiflow-mcp"
}
}
}For npx:
{
"mcpServers": {
"asciiflow": {
"command": "npx",
"args": ["-y", "github:bobooooo/asciiflow-mcp"]
}
}
}Then restart Claude Desktop.
Available Tools
Tool | Parameters | Description |
| — | 创建/重置一个空白画布 |
|
| 在画布上绘制矩形框。 |
|
| 在两点之间绘制折线(先水平后垂直) |
|
| 在两点之间绘制带箭头的连线,箭头指向终点 |
|
| 在指定坐标添加文字,支持 |
| — | 导出当前画布为 ASCII 文本 |
| — | 预览当前画布状态(与 |
|
| 批量执行绘图指令并返回最终结果。 |
All coordinates are in character-grid units (columns / rows).
Example Usage
Single Tool Calls
Prompt Claude with:
帮我根据这个 PRD 生成登录页面的 ASCII 线框图:用户需要输入邮箱和密码,点击登录按钮后跳转到主页,底部有"忘记密码"和"注册"链接。
Claude will call the MCP tools sequentially and produce output like:
┌────────────────登录────────────────┐
│ │
│ │
│ 邮箱: │
│ ┌──────────────────────────────┐ │
│ │ │ │
│ └──────────────────────────────┘ │
│ │
│ 密码: │
│ ┌──────────────────────────────┐ │
│ │ │ │
│ └──────────────────────────────┘ │
│ │
│ ┌─────登 录──────┐ │
│ │ │ │
│ └──────────────┘ │
│ │
│ 忘记密码? 注册账号 │
│ │
└──────────────────────────────────┘Batch Tool Call
For better performance, use canvas_batch to execute all drawing operations in a single call:
{
"ops": [
{ "op": "canvas_new" },
{ "op": "draw_box", "x": 0, "y": 0, "w": 36, "h": 20, "label": "登录" },
{ "op": "add_text", "x": 2, "y": 3, "text": "邮箱:" },
{ "op": "draw_box", "x": 2, "y": 4, "w": 32, "h": 3 },
{ "op": "add_text", "x": 2, "y": 8, "text": "密码:" },
{ "op": "draw_box", "x": 2, "y": 9, "w": 32, "h": 3 },
{ "op": "draw_box", "x": 10, "y": 13, "w": 16, "h": 3, "label": "登 录" },
{ "op": "add_text", "x": 3, "y": 17, "text": "忘记密码?" },
{ "op": "add_text", "x": 22, "y": 17, "text": "注册账号" }
]
}Development
For Contributors
To modify the source code and rebuild:
# Clone with submodules
git clone --recurse-submodules https://github.com/bobooooo/asciiflow-mcp.git
cd asciiflow-mcp
# Install dependencies
npm install
# Build
npm run build
# Test locally
npm linkThe build process uses the ASCIIFlow client library from the client-repo submodule.
Run tests:
npm testRepository
Main repository: https://github.com/bobooooo/asciiflow
MCP package: https://github.com/bobooooo/asciiflow-mcp
License
MIT
Available Tools
8 toolsadd_textB
在指定坐标添加文字(支持 \n 换行)
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| text | Yes | 要添加的文字,支持 \n 换行 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the newline support feature, which adds context, but it doesn't explicitly state that the operation modifies the canvas or any side effects. The verb 'add' implicitly signals mutation, but error conditions or interaction with existing content are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and includes a key feature (newline support). There is no redundant or filler content, making it appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple add-text tool with three parameters and no output schema, the description is adequate but incomplete. It lacks coordinate system details (e.g., pixel units, origin), potential interactions with existing canvas elements, and any return value or error information. Given the sibling drawing tools, some shared context might be assumed but is not explicitly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with only 'text' having a description. The description confirms x and y as coordinates but adds no detail on units, origin, or valid ranges. It does explain the newline escape in text, which is helpful. Overall, the description partially compensates for the missing x/y schema descriptions but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: adding text at specified coordinates, with newline support. It effectively distinguishes from sibling drawing tools (draw_line, draw_box, etc.) by focusing on text placement rather than shape drawing. However, it doesn't explicitly mention the canvas context, which is implied by the sibling names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description only explains what it does, not the context in which it should be selected or any exclusions. There is no mention of when drawing tools would be preferable or any prerequisites for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_batchA
批量执行绘图指令并返回最终 ASCII 结果。ops 是指令数组,每条指令包含 op 字段指定操作类型(canvas_new / draw_box / draw_line / draw_arrow / add_text),以及对应参数。执行完所有指令后自动导出画布。
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | 绘图指令数组,按顺序执行 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that all instructions are executed and the canvas is auto-exported, returning the final ASCII result. However, it does not mention whether a canvas_new instruction is required first, error handling, or state reset behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and explains the ops parameter efficiently without redundant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch tool with nested schema and no output schema, the description provides a clear overview of input structure and output (final ASCII). It could benefit from noting the necessity of canvas_new or error behavior, but overall it is sufficiently complete for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameter details (ops array with specific op types and required fields), so the description's high-level explanation of 'ops is an instruction array...' adds minimal value beyond the schema. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'batch execute drawing instructions and return final ASCII result', identifying the tool as a batch operation for drawing. This distinguishes it from sibling tools that handle individual drawing operations like draw_box, draw_line, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's name and description imply it is for executing multiple drawing instructions in sequence. Sibling tools (draw_box, draw_line, etc.) serve as single-operation alternatives, but the description does not explicitly state when to choose one over the other, only indicating batch execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_exportA
导出当前画布为 ASCII 文本
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It mentions that the output is ASCII text, but it does not state whether this operation is read-only, if it modifies the canvas, or if it returns a string versus writing to a file. This lack of safety/side-effect context leaves the agent uncertain about the operation's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and directly states the tool's purpose. Every word earns its place, and there is no unnecessary filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description is largely complete: it identifies the action, target, and result format. However, it could be slightly more explicit about the return value (whether the ASCII text is returned directly) and that the canvas is left unchanged, which would improve completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to explain. Per the baseline for 0-parameter tools, the description adequately covers parameter semantics by omission; the tool requires no arguments, and the description does not need to add further meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('导出' / export), the resource ('当前画布' / current canvas), and the output format ('ASCII 文本' / ASCII text). This is specific and effectively distinguishes it from sibling tools like canvas_preview (likely visual preview) and draw_line (drawing operations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as canvas_preview or canvas_batch. The description only states what it does, without any contextual hints or exclusions, so an agent receives no help in selecting among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_newA
创建/重置一个空白画布
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It only says 'create/reset' without disclosing whether resetting destroys existing content, whether the operation is idempotent, or any side effects on current canvas state. The potential destructiveness of 'reset' is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise phrase ('创建/重置一个空白画布') that states the core function without any unnecessary words. It is front-loaded and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is minimally sufficient but lacks explicit context about whether it clears existing content and how it relates to the sibling drawing tools. It could benefit from a note that it initializes a fresh canvas for subsequent operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema fully covers all parameter needs. The description adds no parameter-level semantics, but with no parameters, the baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: to create or reset a blank canvas. This is a specific verb+resource pair that distinguishes it from siblings like draw_line or add_text, which operate on an existing canvas rather than initializing one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. It does not say to use canvas_new before drawing, nor does it mention when a reset is appropriate. The lack of any usage context makes it unclear how the tool fits into a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_previewA
预览当前画布状态(与 canvas_export 相同,用于中间检查)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden. The word 'preview' strongly implies a read-only operation, and the phrase 'same as canvas_export' adds behavioral context if that tool is known. However, it doesn't explicitly state that it makes no changes, nor describe the output or any side effects, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that immediately states the core purpose and usage context. It is front-loaded and contains no filler, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and a simple preview function, the description is largely complete. It explains the purpose and when to use it (intermediate checks). The only minor gap is that it doesn't describe the output format, but given the simplicity, this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly omits any parameter details since none exist. No additional semantic explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: '预览当前画布状态' (preview the current canvas state), using a specific verb 'preview' and a clear resource. However, it references being 'same as canvas_export,' which introduces slight ambiguity about tool distinction, though it still conveys the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is used for intermediate checks ('用于中间检查'), which gives clear context on when to use this tool. It doesn't explicitly list exclusions or alternatives, but it does reference canvas_export as the same tool, implying usage context. This is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_arrowA
在两点之间绘制带箭头的连线,箭头指向终点
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the geometric behavior (draws an arrowed line, arrow points to endpoint) but does not mention side effects (e.g., modifying a canvas), coordinate system, or arrow styling. This adds some value but leaves significant behavioral context unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence in Chinese, front-loading the key action and distinguishing feature. No unnecessary words or repetition; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, and only a minimal description. It does not mention return values, prerequisites (like an active canvas), coordinate system, or potential side effects. Given the tool's mutating nature and lack of structured support, the description is insufficient for an agent to fully understand the operation's context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameter descriptions, so the description must compensate. It does by implying that the second point (x2,y2) is the endpoint since the arrow points to the endpoint. However, it does not explicitly name or explain each parameter's role beyond this hint, which is minimal compensation for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool draws an arrowed line between two points with the arrow pointing to the endpoint. This specifies the action, the resource (arrowed line), and distinguishes it from sibling tools like draw_line (without arrow) and draw_box.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when an arrowed line between two points is needed) but does not explicitly mention alternatives or exclusions. No guidance on when not to use this tool versus draw_line or other siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_boxA
在画布上绘制一个矩形框。x/y 是左上角坐标,w/h 是宽高(字符单位)。label 可选,显示在顶边框中央。
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | 高度(至少 3) | |
| w | Yes | 宽度(至少 3) | |
| x | Yes | 左上角 x 坐标 | |
| y | Yes | 左上角 y 坐标 | |
| label | No | 可选标签文字 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must convey side effects. It adds useful details like coordinate meaning, character units, and label placement, but does not disclose whether the box is filled/outline, whether existing content is overwritten, or what the return value is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose and immediately followed by parameter semantics. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param drawing tool with no output schema and no annotations, the description covers the main purpose and parameters, but it omits behavioral details such as error handling, whether a canvas must already exist, and the return value. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 5 parameters (100% coverage), so the baseline is 3. The description adds value by clarifying that w/h are measured in character units and that the label is centered on the top border, which the schema descriptions lack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the core function: '在画布上绘制一个矩形框' (draw a rectangular box on the canvas), using a specific verb and resource. This clearly distinguishes it from siblings like draw_line and draw_arrow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for drawing rectangles but offers no explicit guidance on when to use it over draw_line/draw_arrow, and does not mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_lineA
在两点之间绘制一条折线(先水平后垂直)
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the key behavioral trait that the line is L-shaped (horizontal first, then vertical). This goes beyond the parameter names and provides meaningful context. It doesn't mention potential side effects like canvas overwriting, but the core drawing behavior is well described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short, front-loaded sentence in Chinese (14 characters) with no filler words. It efficiently conveys the verb, resource, and key behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple drawing tool with four integer parameters and no output schema, the description is nearly complete. It specifies the drawing behavior and the pair of points. Missing details like coordinate origin or start/end order are not critical to correct invocation, and the description is adequate for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining that coordinates represent two points between which the line is drawn. The parameter names x1,y1,x2,y2 are self-explanatory, and the description adds the L-shaped path meaning. It lacks explicit details on coordinate units or order, but is sufficient for basic invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it draws a polyline between two points with a specific orthogonal path (horizontal then vertical). This is a specific verb+resource combination that distinguishes it from siblings like draw_box and draw_arrow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for creating orthogonal polylines on the canvas but does not explicitly state when to prefer this over alternatives. The path specification gives some selection context, but there are no clear exclusions or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
add_text - First observed
canvas_batch - First observed
canvas_export - First observed
canvas_new - First observed
canvas_preview - First observed
draw_arrow - First observed
draw_box - First observed
draw_line
TDQS
Most tools target distinct drawing operations (draw_line, draw_box, draw_arrow, add_text) or canvas lifecycle (new, export, batch). However, canvas_export and canvas_preview are explicitly described as identical, which creates a potential selection ambiguity.
All tool names use lowercase snake_case and are readable. Drawing operations follow verb_noun (draw_line, draw_box, add_text), while canvas operations follow noun_verb (canvas_export, canvas_new). The two subgroups are internally consistent, but the mixed ordering is a minor deviation.
Eight tools is well within the ideal 3-15 range and covers the core needs of creating and exporting ASCII diagrams without excess. Each tool serves a clear purpose in the drawing workflow.
The tool set covers the full lifecycle: creating a canvas, adding text, drawing lines/boxes/arrows, previewing, batch execution, and exporting. No obvious dead ends or missing core operations for the domain.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create and edit architecture diagrams from your AI agent; get an SVG and a live editable canvas.
Create, validate, edit, export (markdown/svg/png/mermaid), and search JSON Canvas files.
- FlowstepOAuthai.flowstep
Generate, inspect, and manage Flowstep UI designs directly from your AI assistant.
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to programmatically generate, edit, and view Excalidraw diagrams with real-time browser synchronization. It provides a suite of tools for adding shapes, text, and arrows to diagrams through natural language interactions.112,783100MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to draw on a live tldraw canvas from prompts, with real-time visualization in a browser. Provides tools for creating, updating, deleting shapes and retrieving canvas state.14MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to create, animate, and export ASCII art using natural language, with live browser sync.96338MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and share diagrams on a live Excalidraw canvas through MCP tools, supporting shapes, text, arrows, batch operations, and export to shareable links with images.3,0738MIT
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/bobooooo/asciiflow-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server