Trident

io.github.alexeibespalov由 GitHub 账号 alexeibespalov 发布v1.0.2更新于 Oct 24, 2026

Create and edit collaborative architecture diagrams with any AI assistant using the Trident 2D DSL.

已验证Streamable HTTP可网页运行效率与工作流开发者工具媒体与设计

概览

AI 生成的概览

Trident 让 AI 助手通过文本 DSL 编写、校验和编辑 Trident 2D 架构图,包括实时协作文档。

可以做什么
学习 Trident DSL:获取完整规范、生成指南、综合示例和快速入门指南,并获得生成标记的校验清单。读取实时文档:以 Trident 标记打开文档,获取节点、容器、连接和注释 ID 的结构化 JSON 摘要,并查看近期变更历史。编辑图实体:添加、更新和删除节点、容器、连接与文本注释。调整画布:重新定位或缩放背景图片。渲染与沟通:将当前文档导出为 PNG,并向人类协作者发布建议或说明。
适用场景
当你希望助手生成 Trident 图标记、检查其正确性,或与人类协作者一起读取和修改实时 Trident 文档时使用。规范与指南工具即使没有 API 密钥也可用于从零开始生成图表。
运行要求
可作为远程端点运行,也可通过 npm 包 trident-mcp 用 npx 在本地运行(需要 Node.js)。编辑和变更历史工具需要有效的编辑访问令牌;可选的 Trident API 密钥通过环境变量 TRIDENT_API_KEY 提供。规范与指南工具无需密钥。
安装前请注意
编辑工具会修改共享的实时文档,其他协作者会立即看到:节点、容器、连接和注释可被添加、更新或删除,删除节点会连带删除相关连接。这些操作需要编辑访问令牌和可选 API 密钥,应视为机密。若希望由人类决定是否修改,优先使用建议工具。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Trident,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.alexeibespalov%2Ftrident/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "trident": {
      "type": "http",
      "url": "https://mcp.tridentchart.com/mcp"
    }
  }
}

README

Trident — Public

Open-source core of Trident — a text-based diagramming tool.

This repo contains the parser, serializer, and read-only renderer. No auth, no collaboration, no dependencies.


What's here

FilePurpose
parser.jsParses Trident markup text → graphData object
trident-serializer.jsSerializes graphData → Trident markup text
renderer-oss.jsRead-only renderer: SVG, PNG, interactive canvas
spec.mdFull language specification
example.mdWorking diagram examples
demo.htmlBrowser demo (open directly, no build step)

Quick start

html
<script type="module">import { Trident2DParserV2 } from './parser.js';import { renderToSVG, renderToPNG, mountViewer } from './renderer-oss.js';
const parser = new Trident2DParserV2();
const markup = `tridentcontainer backend color:#4A90E2 label:"Backend"node api[API Server] in backend at (150, 100)node db[Database]   in backend at (350, 100)api --> |Query| db`;
// SVG stringconst svg = await renderToSVG(markup, parser);
// Interactive canvas with zoom + pan (no editing)await mountViewer(document.getElementById('diagram'), markup, parser);
// PNG blob (2× retina)const blob = await renderToPNG(markup, parser, { scale: 2 });</script>

Open demo.html directly in a browser to see it running.


Markup format

trident
container <id> [color:<hex>] [label:"<text>"] [at (<x>, <y>)]node <id>(<icon>)[<label>] [in <container>] [at (<x>, <y>)] [color:<hex>]<source> --> <target><source> -->|<label>| <target>text <id> "<content>" at (<x>, <y>) [style:stickyNote|textBody]

See spec.md for the full grammar and example.md for complete working diagrams.


License

MIT

来源:README.md,提交 fc30a29

工具

23

get_trident_spec

Trident Spec

Returns the complete Trident 2D specification including grammar, syntax rules, coordinate system, containers, nodes, connections, shapes, and icon reference. Use this when you need deep understanding of the Trident DSL.

无需输入参数。

get_generator_guide

Generator Guide

Returns LLM-optimized instructions for generating Trident diagrams, including quick reference, critical rules (especially Y-axis!), spacing guidelines, common patterns, color conventions, and error prevention checklist. Use this before generating Trident markup (a whole diagram as text). Not needed up front in a live session that edits a document with add_node / add_connection — load it there only for domain conventions (BPMN/UML/flowchart layout, ERD, C4).

无需输入参数。

get_comprehensive_example

Comprehensive Example

Returns a comprehensive Trident example demonstrating all syntax features including containers, nodes (traditional and bracket-style syntax), diamond/rectangle shapes, icons, connections with labels, routing modes, cards, and text annotations. Use this to see all features in action.

无需输入参数。

validate_trident

Validate Diagram

Returns a comprehensive validation checklist for Trident diagrams covering syntax rules, semantic rules, best practices, and common mistakes to avoid. Use this after generating a diagram to verify correctness.

输入参数diagram

get_quick_start

Quick Start

Returns a condensed 2-minute quick-start guide with minimal working examples, core syntax reference, and key concepts. Use this for rapid learning when you need to generate simple diagrams quickly.

无需输入参数。

open_document

Open Document

Opens a live Trident document and returns its full contents as Trident markup DSL — the human-readable text format used to author diagrams. Use this to READ and UNDERSTAND the diagram: its structure, labels, connections, and layout. Do NOT rely on this to enumerate entity IDs for programmatic use — the DSL can be very large and the output may be truncated. To get a complete, structured list of all entity IDs and counts, use get_document_summary instead. Requires a valid access token.

输入参数token必填agentIduserName

get_document_summary

Document Summary

Returns a complete structured summary of a Trident document as JSON: all node IDs, container IDs, connection IDs, annotation IDs, labels, and entity counts. Use this for PROGRAMMATIC OPERATIONS — it is never truncated regardless of diagram size, so you always get every entity ID. Use this before any bulk update, delete, or enumeration task. To read and understand the diagram as a human-readable diagram, use open_document instead. Requires a valid access token.

输入参数token必填

get_recent_changes

Recent Changes

Returns the recent change history for a live Trident document. Each entry shows who made the change, what was changed, and when. Useful for understanding what edits have been made by AI agents or human collaborators. Requires a valid access token.

输入参数limitsincetoken必填

add_node

Add Node

Adds a new node (entity) to a live Trident document. The node appears immediately for all collaborators. Requires a valid editor access token. Before adding nodes: call open_document to understand the diagram layout and pick sensible positions; call get_document_summary to get all existing entity IDs so you can avoid duplicates. IMPORTANT: if this node belongs inside a container, pass node.container on THIS call — do NOT create the node without a container and reparent it later via update_node. Orphaned nodes appear immediately to all live collaborators and create unnecessary visual churn.

输入参数node必填token必填agentId必填userNameaction_explanation

update_node

Update Node

Updates properties of an existing node in a live Trident document. Only the fields you provide are changed; others are preserved. Use get_document_summary to get all node IDs before calling this. Requires a valid editor access token.

输入参数token必填nodeId必填agentId必填changes必填userNameaction_explanation

delete_node

Delete Node

Removes a node from a live Trident document. All connections to/from this node are also removed automatically. Use get_document_summary to get all node IDs before calling this. This action is reversible via Ctrl+Z in the Trident editor. Requires a valid editor access token.

输入参数token必填nodeId必填agentId必填userNameaction_explanation

add_container

Add Container

Adds a new container (group/swimlane) to a live Trident document. Containers visually group related nodes. Use get_document_summary to check existing container IDs before adding to avoid duplicates. Requires a valid editor access token. To build an ERD (entity-relationship diagram), add one container per table with kind:"erd" and an x/y position, then add each field with add_node (container:<table id>, no x/y) — rows are stacked and the table sized automatically — and join TABLES (never rows) with add_connection using an ERD pair type such as "one_to_many".

输入参数token必填agentId必填userNamecontainer必填action_explanation

update_container

Update Container

Updates properties of an existing container in a live Trident document. Only provided fields are changed. Use get_document_summary to get all container IDs before calling this. Requires a valid editor access token. This is also how you RESIZE a container: set width/height (and x/y to keep it centred over its nodes) — do this whenever you add or move nodes outside a fixed-size container.

输入参数token必填agentId必填changes必填userNamecontainerId必填action_explanation

delete_container

Delete Container

Removes a container from a live Trident document. By default, nodes inside are detached (kept on the diagram without a container). Pass deleteNodes: true to remove the container's nodes as well. Use get_document_summary to get all container IDs before calling this. Requires a valid editor access token.

输入参数token必填agentId必填userNamecontainerId必填deleteNodesaction_explanation

add_connection

Add Connection

Adds a connection (arrow/edge) between two nodes or containers in a live Trident document. Use get_document_summary to get valid source and target IDs before calling this. Requires a valid editor access token. For ERD relationships, connect the two TABLE containers (field rows are rejected as endpoints) and set type to an ERD pair such as "one_to_many".

输入参数token必填agentId必填userNameconnection必填action_explanation

delete_connection

Delete Connection

Removes a connection from a live Trident document. Provide either the connectionId, or both source and target node IDs to find and remove the matching connection. Use get_document_summary to get all connection IDs before calling this. Requires a valid editor access token.

输入参数token必填sourcetargetagentId必填userNameconnectionIdaction_explanation

get_document_png

Export as PNG

Renders the current state of a live Trident document as a PNG image directly from the Yjs collaborative session — bypassing Firestore, which may be stale. Returns a base64-encoded PNG. Use this to visually verify that diagram edits look correct before or after making changes.

输入参数token必填

add_annotation

Add Annotation

Adds a text annotation to a live Trident document. Two visual styles: style:stickyNote (default — post-it card with colored background, good for notes/callouts) or style:textBody (plain transparent text, good for diagram titles and section labels). Ideal for architectural notes, decision records, section labels, or TODO markers. Appears immediately for all collaborators. Requires a valid editor access token.

输入参数token必填agentId必填userNameannotation必填action_explanation

update_annotation

Update Annotation

Updates an existing text annotation in a live Trident document. Only the fields you provide are changed. Use get_document_summary to get all annotation IDs before calling this. Requires a valid editor access token.

输入参数token必填agentId必填changes必填userNameannotationId必填action_explanation

delete_annotation

Delete Annotation

Removes a text annotation from a live Trident document. Use get_document_summary to get all annotation IDs before calling this. Requires a valid editor access token.

输入参数token必填agentId必填userNameannotationId必填action_explanation

update_canvas_graphic

Update Canvas Graphic

Repositions or resizes a background image (canvas graphic) in a live Trident document. Use open_document to get the canvas graphic ID and current dimensions — it appears as: image <id> "<url>" at (x, y) width:W height:H. The position at (x, y) is the TOP-LEFT corner. USE THIS BEFORE placing many geographically-positioned nodes: if the background map is small (e.g. width < 700), scale it up so nodes have room to breathe and do not overlap. Requires a valid editor access token.

输入参数token必填agentId必填changes必填userNamecanvasGraphicId必填action_explanation

make_suggestion

Make Suggestion

Posts a visible suggestion to human collaborators watching the document WITHOUT making any changes to the diagram. Use this when you observe something worth flagging — a potential mistake, an improvement, or a question — but want the human to decide. The suggestion appears as a bold "SUGGESTION:" callout in the UI with a radar pulse animation on your presence dot for 10 seconds. Does NOT mutate the diagram. Requires a valid viewer or editor access token.

输入参数token必填agentId必填entityIduserName必填suggestion必填

explain

Explain Element

Delivers an explanation payload to human collaborators watching the document, optionally anchored to a specific node or container. Use this when you want to explain what a diagram element represents, why it exists, or how it relates to other parts of the system — without suggesting a change. The explanation appears in the UI attributed to you. Does NOT mutate the diagram. Requires a valid viewer or editor access token. IMPORTANT: this tool automatically pauses (3–15 s, proportional to explanation length) before returning, so the human has time to read. Do NOT add your own artificial delays between explain calls — the pacing is built in.

输入参数token必填agentId必填entityIduserName必填explanation必填

版本历史

1
  1. v1.0.2最新Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。