Yertle
БесплатноНе проверенManage diagrams and nodes in the Yertle diagramming application.
Описание
Manage diagrams and nodes in the Yertle diagramming application.
README
yertle-mcp is a small MCP server that exposes Yertle's APIs to an LLM. It runs over stdio, authenticates against the Flow REST API, and registers MCP tools and resources for:
- creating organizations and nodes
- listing and searching nodes
- reading node state from Flow
- pushing diagram state changes back to Flow
- creating and listing branches
The codebase is intentionally thin. Most files do one job:
server.pystarts the stdio MCP serverapp.pybuilds the sharedFastMCPinstance and lifecycleflow_client.pymanages auth, retries, and high-level API operationsclient/api.pycontains one-function-per-endpoint HTTP wrappersclient/push.pymerges and validates partial state before pushclient/transform.pyreshapes backend responses into LLM-friendly outputtools/andresources/register the MCP surface area
How It Works
At startup, server.py imports app.py, then imports tools and resources. Those imports matter because registration is decorator-driven.
During server lifespan:
Configreads environment variables.FlowClientcreates anhttpx.AsyncClient.- The client signs in with email/password and stores JWTs.
- MCP tools and resources use the shared client through helper accessors in
app.py.
For write operations, especially push_node_state, the server does not send the LLM's partial state directly to the backend. Instead it:
- fetches the current complete node state
- merges the incoming partial update onto that snapshot
- validates required fields
- auto-centers new visual properties when present
- applies defaults such as node transparency and connection edges
- pushes the merged full snapshot to Flow
That merge step is the main safety feature in this repository.
Environment
Required:
FLOW_USER_EMAILFLOW_USER_PASSWORD
Optional:
FLOW_API_URLdefaults tohttp://localhost:8000FLOW_DEFAULT_ORG_IDlets tools omitorg_id
Example:
export FLOW_API_URL=http://localhost:8000
export [email protected]
export FLOW_USER_PASSWORD=secret
export FLOW_DEFAULT_ORG_ID=<org-uuid>
Running
Run the MCP server with:
python3 server.py
The server is configured for stdio transport, which matches how MCP hosts usually launch it.
MCP Surface
Resources:
flow://orgsflow://orgs/{org_id}/nodesflow://orgs/{org_id}/nodes/{node_id}/completeflow://orgs/{org_id}/nodes/{node_id}/canvas
Tools:
create_organizationcreate_nodepush_node_statedelete_nodesearch_nodescreate_branchlist_branches
Push Semantics
push_node_state is designed around Flow's full-snapshot push API, but the MCP interface accepts partial updates.
The server preserves existing state unless the caller explicitly replaces it:
node,tags, anddirectoriesare replaced if includedvisual_propertiesare merged bychild_node_idconnectionsare merged byid
Two important rules are enforced by convention and validation:
- new or updated visual properties must include
child_node_id - connections must include
id,from_child_id, andto_child_id
For new connections, the intended temporary format is temp-<label>, and the backend returns the real IDs.
Layout Assumptions
The instruction block in app.py encodes layout policy for the LLM:
- diagrams should flow left to right
position_xincreases to the rightposition_yincreases downward- node size should usually be
200x100 - horizontal spacing should usually be
250 - vertical spacing should usually be
130 - diagrams should stay compact when possible
The server also warns the LLM not to resend visual properties for existing nodes unless the user explicitly wants a rearrangement.
File Map
.
├── app.py
├── config.py
├── flow_client.py
├── server.py
├── client/
│ ├── api.py
│ ├── push.py
│ └── transform.py
├── resources/
│ ├── nodes.py
│ └── orgs.py
└── tools/
├── node.py
└── org.py
Extending The Server
To add a new capability:
- add a low-level REST wrapper in
client/api.py - expose it through
FlowClientinflow_client.py - register a new MCP tool or resource in
tools/orresources/ - import that module through the package
__init__.pyso decorator registration happens
If the endpoint returns backend-native state that is hard for an LLM to use, add a transformation in client/transform.py rather than inflating the tool/resource layer.
Internal Design Notes
- The repo uses a shared global
serverinstance fromapp.py. server._flow_configandserver._flow_clientare attached during lifespan startup.- Errors are normalized in
FlowClient._handle_response()into readable runtime exceptions. - Auth retry is centralized in
FlowClient._with_retry(), so individual API wrappers stay simple.
For a deeper walkthrough of the request flow and module boundaries, see ARCHITECTURE.md.
Установка Yertle
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/model-context/yertle-mcpFAQ
Yertle MCP бесплатный?
Да, Yertle MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Yertle?
Нет, Yertle работает без API-ключей и переменных окружения.
Yertle — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Yertle в Claude Desktop, Claude Code или Cursor?
Открой Yertle на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Yertle with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
