mapnotes
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GRAPH_FILE | No | Absolute path to the YAML/JSON graph file the MCP server should load and edit. Passed as a command-line argument, e.g. npx tsx <repo>/mcp/server.ts <graph file>. Default: ~/mapnotes/graph.yaml. Starts empty if the file does not exist yet. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| load_graphA | Open a graph file (YAML, or JSON if it ends in .json). It becomes the current file: all later changes are saved to it automatically. A missing file starts an empty graph. |
| save_graphA | Save the current graph. With a path, saves a copy there (format from the extension: .json → JSON, otherwise YAML) and makes it the current file. |
| get_graphA | Return the whole current graph (properties, styles, nodes, edges). YAML output starts with a comment naming the current file; JSON output is plain JSON. |
| get_nodeB | Return one node with its properties and all edges connected to it. |
| find_nodesA | Search or list nodes without fetching the whole graph. Returns ids with brief summaries (label, style, property and edge counts, matched fields), sorted by id; call get_node for details. All filters are optional and combine with AND; with none, lists every node. If nextCursor is returned, pass it as cursor to get the next page. |
| add_nodeB | Add a node. The id is generated if omitted; the label defaults to the id. |
| edit_nodeA | Edit a node. Only the given fields change. setProperties adds/overwrites keys, removeProperties deletes keys, properties replaces the whole list. Renaming (newId) updates connected edges. style "" clears the style. |
| remove_nodeB | Remove a node and every edge connected to it. |
| add_edgeB | Connect two existing nodes. The id is generated if omitted. |
| edit_edgeB | Edit an edge: endpoints, label, style, id or properties. Only the given fields change; "" clears label/style. |
| remove_edgeC | Remove an edge by id. |
| edit_graph_propertiesA | Edit the key/value properties of the graph itself. set adds/overwrites keys, remove deletes keys, properties replaces the whole list. "title" names the graph (keep it short) and "subtitle" is shown under it. |
| set_styleA | Create or replace (by id) a reusable style in the graph styles. Assign it via the "style" field of nodes/edges. Colors are CSS colors, e.g. "#7aa2f7". Fields marked "Nodes only" / "Edges only" are rejected for the other target. |
| remove_styleA | Remove a style; nodes/edges using it fall back to the default look. |
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 14 tools
Each tool targets a distinct resource/action pair: graph file I/O (load/save), whole-graph retrieval, node/edge CRUD, graph property editing, and style management. get_node vs find_nodes are clearly differentiated (detail vs search), and edit_node/edit_edge/edit_graph_properties have non-overlapping targets.
All tool names use a consistent snake_case verb_noun pattern (load_graph, save_graph, get_node, add_edge, edit_node, remove_style, etc.). There are no deviations into camelCase or vague single-word names.
The 14 tools precisely cover the graph-notes domain without redundancy. Each tool earns its place by handling a specific operation on nodes, edges, graph properties, or styles.
Core lifecycle coverage is strong: nodes have add/get/list/edit/remove, edges have add/edit/remove, and graph properties/styles are editable. Minor gaps exist: no direct get_edge or list_styles/get_style, though these can be inferred from get_graph or get_node.