langgraph-spec-toolkit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| init_projectA | Create a new spec-driven LangGraph project: spec.yaml, nodes.py stub, init.py. project_dir: directory to create/use (created if missing; error if a spec.yaml already exists there). name: project/graph name, stored in spec.yaml. state_fields: optional initial state fields, each {name, type, reducer?, default?}. |
| add_nodeB | Add or update a node. config['function'] names the callable in nodes.py (defaults to the node id if omitted). The first node added to a project becomes the entry point automatically; pass entry_point=True to (re)designate a later node instead. |
| add_edgeA | Add an edge between nodes. Simple edge: set |
| remove_nodeA | Remove a node, cascading to delete any edges that touch it. |
| remove_edgeA | Remove edge(s) from a source node. Omit |
| set_state_schemaA | Replace the graph's state schema wholesale. Each field: {name, type, reducer?, default?}. |
| apply_changesA | Apply several spec edits in one call instead of one add_node/add_edge/... call each. Prefer this over separate calls whenever wiring more than one node/edge at once (e.g. adding a whole tool-calling loop) — it's the same edit, one round trip instead of several.
{"op": "add_node", "id": "tools", "config": {"function": "call_tools"}} {"op": "add_edge", "from_": "chatbot", "condition": "route", "paths": {"continue": "tools", "end": "END"}} {"op": "add_edge", "from_": "tools", "to": "chatbot"} {"op": "remove_node", "id": "..."} {"op": "remove_edge", "from_": "...", "to": "..."} {"op": "set_state_schema", "fields": [...]} entry_point is set automatically (the first node added, or pass entry_point=true on a later add_node op) — don't add an edge from "START" yourself, even though rendered graph.py contains one; that edge is derived from entry_point, not wired as a spec edge. Returns a compact summary (counts), like the other mutating tools — call get_spec if you need the full picture afterward. |
| get_specA | Read-only fetch of the full current spec. Mutating tools (add_node, add_edge, remove_node, remove_edge, set_state_schema) return a compact summary (counts), not the full spec, to keep per-edit response cost flat as the graph grows. Call this when you actually need the whole picture. |
| validate_graphA | Check the spec for unreachable nodes, missing paths to END, dangling conditions/edges, and duplicate/typo'd ids. Returns ok=False if any errors (as opposed to warnings) are found. |
| render_pythonA | Render the current spec into idiomatic LangGraph Python (graph.py by default). Deterministic Jinja2 templating — no LLM involved, same spec always produces the same code. Blocks if the spec has validation errors (warnings still allow rendering). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct operation: adding/removing nodes and edges, setting schema, fetching the spec, validating, rendering, initializing, and batch-applying changes. Even apply_changes is clearly scoped as a batch wrapper with explicit op names, so no tool is easily confused with another.
All tool names follow a consistent snake_case verb_noun pattern: add_node, remove_edge, set_state_schema, get_spec, validate_graph, render_python, init_project, apply_changes. There are no style deviations or vague verbs.
Ten tools is well-scoped for a LangGraph spec toolkit. Each tool covers a necessary piece of the workflow without redundancy, and the count supports both simple edits and batching without feeling bloated.
The toolkit covers the full graph-building lifecycle: project creation, node and edge CRUD, state schema management, validation, rendering to Python, and full-spec inspection. The batch apply_changes tool also fills the practical gap of multi-edit workflows.