CherryTree MCP Server
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 |
|---|---|
| list_nodesB | List nodes in the CherryTree tree. Args: parent_id: Parent node ID (0 = top-level). depth: Levels to descend. include_path: Include breadcrumb paths. |
| read_nodeA | Read content of a CherryTree node. Args: node_id: Node unique ID (preferred). node_name: Search by name (partial, case-insensitive). include_formatting: Return rich-text segment details. include_widgets: Return codebox/image/table/anchor details. |
| search_nodesA | Full-text search across all nodes. Args: query: Search term (case-insensitive). max_results: Max results. |
| list_bookmarksA | List all bookmarked nodes. |
| create_nodeA | Create a new rich-text node. Args: name: Node title. content: Plain text body (ignored if content_xml is set). content_xml: Raw CherryTree XML body — supports full formatting: segments with attributes (weight="heavy", foreground="#RRRRGGGGBBBB", background, style="italic", underline="single", strikethrough="true", scale="h1"|"h2"|"h3"|"h4"|"h5"|"h6"|"small"|"sup"|"sub", family="monospace", justification="left"|"center"|"right"|"fill", link="webs URL"|"node UID"|"file BASE64"|"fold BASE64", indent="1"-"3"), (char_offset, syntax_highlighting, frame_width, frame_height), (char_offset, col_widths), (char_offset, anchor for anchors, filename for embedded files). char_offset = position in concatenated plain text where widget is rendered; each widget occupies 1 char in the count. parent_id: Parent node ID (0 = top-level). tags: Space-separated tags. is_bold: Bold title. foreground: Title color hex (48-bit GTK: #RRRRGGGGBBBB). custom_icon_id: Icon ID. Returns: Confirmation message followed by byte-by-byte audit report: [AUDIT] readback, delta, change region, prefix/suffix integrity, node count, target node identification, XML parse result. On XML parse failure, backup is restored automatically (ROLLBACK). |
| create_node_with_codeboxA | Create a node with an embedded codebox. If content_xml is provided, it is used as the full body (text_before/code/text_after ignored). Args: name: Node title. text_before: Text before the codebox. code: Code content. syntax: Language (sh, python3, sql, java, etc.). text_after: Text after the codebox. parent_id: Parent node ID (0 = top-level). tags: Tags. content_xml: Raw CherryTree XML body (overrides other content params). See create_node docs. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| update_node_contentA | Update content of a node. WARNING: With append=False this REPLACES all body content (text, codeboxes, images, tables). Use append=True to safely add content at the end. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). Args: node_id: Node ID. content: Plain text to set or append (ignored if content_xml is set). content_xml: Raw CherryTree XML body — supports full formatting. Accepts any combination of: segments with formatting attributes (weight="heavy" for bold, foreground="#RRRRGGGGBBBB", background, style="italic", underline="single", strikethrough="true", scale="h1"-"h6"|"small"|"sup"|"sub", family="monospace", justification, link="webs URL"|"node UID"|"file BASE64"|"fold BASE64", indent), (char_offset, syntax_highlighting, frame_width, frame_height), (char_offset, col_widths, with rows/cells), (char_offset, anchor, filename, link). char_offset = position in concatenated plain text of all where the widget renders; each widget occupies exactly 1 char. append: True = append, False = replace. |
| append_codebox_to_nodeA | Append a codebox (or raw XML content) to an existing node. Args: node_id: Node ID. code: Code content (ignored if content_xml is set). syntax: Syntax language. text_before: Text before codebox (ignored if content_xml is set). text_after: Text after codebox (ignored if content_xml is set). content_xml: Raw CherryTree XML to append. See create_node docs for format. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| update_node_propertiesA | Update node properties (name, tags, icon, etc.). Args: node_id: Node ID. name: New title. tags: New tags. is_bold: Bold title. foreground: Title color hex. custom_icon_id: Icon ID. readonly: Read-only flag. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| delete_nodeA | Delete a node and all its children. Args: node_id: Node ID. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| move_nodeA | Move a node under a different parent. Args: node_id: Node to move. new_parent_id: Destination parent (0 = top-level). Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| add_bookmarkA | Add a node to bookmarks. Args: node_id: Node ID. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
| remove_bookmarkA | Remove a node from bookmarks. Args: node_id: Node ID. Returns: Confirmation message followed by byte-by-byte audit report. On XML parse failure, backup is restored automatically (ROLLBACK). |
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 13 tools
Most tools target distinct actions (list, read, search, create, update, delete, move, bookmark), so an agent can generally select correctly. The only mild overlap is create_node and create_node_with_codebox, since create_node can also embed codeboxes via content_xml, but the dedicated helper is clearly specialized.
Tool names uniformly follow a verb_noun pattern: list_nodes, read_node, create_node, update_node_content, delete_node, move_node, add_bookmark, remove_bookmark. Even the longer names like append_codebox_to_node and create_node_with_codebox still follow the same predictable convention.
13 tools is a well-scoped set for a CherryTree note-management server, covering reading, searching, writing, structure manipulation, and bookmarks without redundancy or bloat. Each tool earns its place and the count feels balanced for the domain.
The tool surface covers the full lifecycle of CherryTree nodes: list, read, search, create (regular and codebox), update content, update properties, append codebox, move, delete, plus complete bookmark management. There are no obvious dead ends for common note-editing workflows.