Skip to main content
Glama
lucaszarzur

CherryTree MCP Server

by lucaszarzur

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 13 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues