poietic-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| POIETIC_BIN | No | Path to the poietic binary. Defaults to ~/.swiftpm/bin/poietic. | ~/.swiftpm/bin/poietic |
| POIETIC_DESIGN | No | Optional default design path, used when no current design is set. | |
| POIETIC_MCP_WORKSPACE | No | Allowlist root. Design paths and export outputs must live inside it. Defaults to the server's working directory. Set it to a dedicated designs folder (e.g. ~/Documents/poietic-designs) for a tight fence, or your home directory to work with designs anywhere. |
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
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| poietic_metamodelA | Describe the Poietic metamodel (object types, traits, attributes, edge types) as markdown. Pass a type name (e.g. Stock, FlowRate, Auxiliary, Flow, Parameter) for a single type, or omit it for all types. This is the schema-discovery path: check attribute names and types here before setting attributes. |
| poietic_get_designA | Read the current Poietic design as normalized JSON: {formatVersion, metamodel, planeId, undoDepth, redoDepth, nodes[], edges[], unstructured[]}. Each node is {id, type, name, attributes}; each edge is {id, type, origin, target, attributes}. Replaces |
| poietic_validateA | Validate the design for errors (formula errors, unknown parameters). Returns {ok, issues[], summary} where each issue is {objectId, typeName, name, severity, message}. Run this after editing and before simulating. |
| poietic_use_designA | Set the current design file for subsequent tools. The path must be inside the configured workspace (POIETIC_MCP_WORKSPACE or the server's working directory). Snapshots the design's content hash as the session baseline: if it changes externally (e.g. saved in the playground), writes will be refused until you re-read the design. |
| poietic_new_designA | Create a new empty Stock and Flow design at the given path and make it the current design. Optionally import one or more poietic planes into the first plane. |
| poietic_add_nodeA | Create a new node (e.g. type Stock, FlowRate, or Auxiliary) with attributes. Typical attributes: name (string, required), formula (string, required - a constant like "100" or an expression like "account * rate"), position ([x, y]). Returns {objectId, planeId}. Thread the returned objectId into later calls; duplicate names resolve arbitrarily upstream, so prefer IDs. |
| poietic_connectA | Create an edge between two nodes. Edge types: Flow (between a FlowRate and a Stock; direction is flow direction) and Parameter (from a value node to the node whose formula uses it). NOTE: edge attributes cannot be set at creation; use poietic_set_attributes afterwards if needed. Returns {edgeId}. |
| poietic_set_attributesA | Set one or more attributes on an object (node or edge), referenced by ID (preferred) or unique name. On poietic-tool v0.8+ all attributes are applied in a single transaction (one undo history entry). On older builds each attribute is a separate CLI transaction (N entries); the response states which mode was used. To set an edge attribute, use the edge's numeric ID (edges have no names). |
| poietic_removeA | Remove an object (node or edge) by ID (preferred) or unique name. Removing a node also removes its connected edges (the CLI reports 'Removed cascading'). |
| poietic_auto_parametersA | Automatically wire Parameter edges: connect required parameter edges for every formula variable, and disconnect unused parameter edges. Stock and Flow models stay consistent only if every formula parameter is wired and no stale parameter edges remain - run this after editing formulas and connections. Returns the created and removed edge IDs. |
| poietic_undoA | Undo the last edit transaction on the design. Note: each edit tool call is one transaction, so one undo reverses one tool call (poietic_set_attributes with N attributes created N entries). |
| poietic_redoA | Redo the last undone edit transaction on the design. |
| poietic_arrangeA | Arrange nodes on the canvas. mode 'circle' lays out all (or the given) nodes in a circle; align modes (left, center-horizontal, right, top, center-vertical, bottom, offset-horizontal, offset-vertical, spread-horizontal, spread-vertical) align the given nodes. |
| poietic_runA | Run the Stock and Flow simulation and return a per-variable summary (initial, final, min, max) plus capped sample rows of the CSV output. Use 'variables' to observe specific nodes (names or IDs); with no 'variables', output contains time plus all object variables (poietic-tool v0.8+; use 'allVariables' to also include internal/built-in variables). Use 'parameters' to override node values for the run: stocks get a new initial value, other nodes are affected only at t=0 and then recomputed from their formulas. Pass 'outputPath' to also save the full CSV (inside the workspace). Validate the design first: a model with formula errors fails here. |
| poietic_export_svgA | Export the current plane as an SVG diagram. Note: pictograms require a pictogram collection file (from the Diagramming package); without it the diagram renders with plain shapes. |
| poietic_write_dotA | Write the design graph as a Graphviz DOT file (no pictogram dependency). Omit outputPath to receive the DOT source in the response. |
| poietic_export_planeA | Export the current (or given) plane as a poietic design file for later import. |
| poietic_import_planeA | Import a plane from another poietic design file into the current design. identity mode: 'require' (default; object IDs must match), 'auto', or 'new' (re-identify objects). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build_stock_and_flow_model | Recipe for building a correct Poietic Stock and Flow model with the poietic_* tools: node roles, edge semantics, formula syntax, and the validate-then-run ordering. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| poietic-metamodel | Full metamodel description (markdown) for the current design. |
| poietic-builtins | Formula operators, built-in functions and built-in variables accepted by the CLI (poietic builtins; needs poietic-tool v0.8+). Cached per server run. |
| poietic-current-design | Normalized JSON of the current design: nodes, edges, unstructured objects. |
| poietic-current-diagram | SVG diagram of the current plane. |
TDQS
Scored across 18 tools
Each tool targets a distinct capability: schema discovery, design lifecycle, node/edge editing, validation, simulation, layout, and export/import. Even the export tools are clearly separated by output format, and the manual edge creation vs auto-wiring tools serve different workflow stages.
All tools share the poietic_ prefix and mostly use imperative/snake_case names (get_design, add_node, set_attributes, export_svg). A few names are verb-only (validate, connect, run) and poietic_metamodel is a noun-only outlier, so the pattern is not perfectly uniform.
Eighteen tools is slightly above the typical comfortable range, but each maps to a needed operation across model editing, simulation, and exchange. The count feels justified rather than bloated for a domain with both editing and simulation/export workflows.
The set covers schema discovery, design creation/loading/reading, node and edge CRUD-style operations, attribute updates, validation, undo/redo, simulation, layout, and multiple export/import paths. There are no obvious dead ends for a stock-and-flow modeling workflow.