Behavior Trees MCP
An open-source MCP server that allows AI agents to validate behavior3 JSON or BehaviorTree.CPP XML trees, convert between formats, list node types, retrieve examples, and generate editor links for visual inspection and editing.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.behaviortrees.com/mcpWhat its tools do
6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Validate behavior tree structure for errors
- Convert trees between JSON and XML formats
- Generate shareable editor links for trees
- List available built-in node types
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- behaviortrees 0.1.1
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
validate_tree — Validate a behavior tree
Checks a behavior tree for errors: missing or dangling children, nodes with two parents, cycles, decorators with more than one child, leaves with children, unknown node names, and BehaviorTree.CPP import problems. Returns valid (true when there are no errors), the trees found, and findings at error, warning or info level.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tree"
],
"properties": {
"tree": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
],
"description": "The tree: behavior3 JSON: {\"title\": \"...\", \"root\": \"<id of the first node under the root>\", \"nodes\": {\"<id>\": {\"name\": \"<node type>\", \"title\": \"<optional label>\", \"children\": [\"<id>\", ...] (composites, in run order) or \"child\": \"<id>\" (decorators), \"properties\": {...}}}, \"custom_nodes\": [{\"name\": \"IsEnemyVisible\", \"category\": \"condition\"}]}. Positions (\"display\") are optional. Any node name that isn't built in (see list_node_types) must be declared in custom_nodes with a category of action, condition, composite or decorator. A whole project ({\"trees\": [...], \"custom_nodes\": [...]}) or BehaviorTree.CPP XML also works."
}
}
}{
"title": "Validate a behavior tree",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_editor_link — Open a tree in the editor
Returns a url that opens the tree in the behaviortrees.com editor in the user's browser, auto-laid-out and editable, with no account needed. The tree travels inside the link (the URL fragment), so nothing is uploaded or stored. Fails with the validation errors if the tree has any.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tree"
],
"properties": {
"tree": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
],
"description": "The tree: behavior3 JSON: {\"title\": \"...\", \"root\": \"<id of the first node under the root>\", \"nodes\": {\"<id>\": {\"name\": \"<node type>\", \"title\": \"<optional label>\", \"children\": [\"<id>\", ...] (composites, in run order) or \"child\": \"<id>\" (decorators), \"properties\": {...}}}, \"custom_nodes\": [{\"name\": \"IsEnemyVisible\", \"category\": \"condition\"}]}. Positions (\"display\") are optional. Any node name that isn't built in (see list_node_types) must be declared in custom_nodes with a category of action, condition, composite or decorator. A whole project ({\"trees\": [...], \"custom_nodes\": [...]}) or BehaviorTree.CPP XML also works."
}
}
}{
"title": "Open a tree in the editor",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}convert_tree — Convert a behavior tree
Convert between behavior3 JSON and BehaviorTree.CPP XML (v4 for ROS 2 Jazzy and Groot2, v3 for ROS 2 Humble), the same way the editor imports and exports. Returns the converted text and any issues (BT.CPP has no equivalent for some behavior3 nodes and vice versa).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tree",
"to"
],
"properties": {
"to": {
"enum": [
"behavior3",
"btcpp-v4",
"btcpp-v3"
],
"type": "string",
"description": "Target format: behavior3, btcpp-v4 or btcpp-v3"
},
"tree": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
],
"description": "The tree: behavior3 JSON: {\"title\": \"...\", \"root\": \"<id of the first node under the root>\", \"nodes\": {\"<id>\": {\"name\": \"<node type>\", \"title\": \"<optional label>\", \"children\": [\"<id>\", ...] (composites, in run order) or \"child\": \"<id>\" (decorators), \"properties\": {...}}}, \"custom_nodes\": [{\"name\": \"IsEnemyVisible\", \"category\": \"condition\"}]}. Positions (\"display\") are optional. Any node name that isn't built in (see list_node_types) must be declared in custom_nodes with a category of action, condition, composite or decorator. A whole project ({\"trees\": [...], \"custom_nodes\": [...]}) or BehaviorTree.CPP XML also works."
}
}
}{
"title": "Convert a behavior tree",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_node_types — List built-in node types
The built-in behavior3 nodes a tree can use without declaring them: composites (Sequence, Priority = selector/fallback, MemSequence, MemPriority), decorators (Inverter, Repeater, MaxTime, ...) and leaves (Wait, Succeeder, Failer, ...), with descriptions and default properties.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "List built-in node types",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_example — Get an example tree
Complete, working example trees (enemy patrol, cooldown-gated attacks, robot navigation with recovery, and more) to learn the format from or start with. Without an id, lists the examples; with an id, returns that tree as behavior3 JSON.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string",
"description": "Example id from the list; omit to list them"
}
}
}{
"title": "Get an example tree",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}read_guide — Read a behavior tree guide
Practical guides from behaviortrees.com/learn as Markdown: what behavior trees are, node types, blackboards, debugging, structuring large trees, and behavior trees in Unity, Unreal, Godot, Python and robotics (BehaviorTree.CPP, ROS 2, Nav2). Without a slug, lists the guides.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Guide slug from the list; omit to list them"
}
}
}{
"title": "Read a behavior tree guide",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 417 ms
- 95th percentile latency
- 417 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 417 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http behavior-trees-mcp https://www.behaviortrees.com/mcpCodex
codex mcp add behavior-trees-mcp --url https://www.behaviortrees.com/mcpCursor
{
"mcpServers": {
"behavior-trees-mcp": {
"url": "https://www.behaviortrees.com/mcp"
}
}
}Cline
{
"mcpServers": {
"behavior-trees-mcp": {
"type": "streamableHttp",
"url": "https://www.behaviortrees.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"behavior-trees-mcp": {
"type": "http",
"url": "https://www.behaviortrees.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http behavior-trees-mcp https://www.behaviortrees.com/mcpClaude Desktop
https://www.behaviortrees.com/mcpWindsurf
{
"mcpServers": {
"behavior-trees-mcp": {
"serverUrl": "https://www.behaviortrees.com/mcp"
}
}
}Let your agent find its tools
Find servers like Behavior Trees MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.