Skip to main content

mcp_memory/
tools.rs

1pub struct ToolMeta {
2    pub name: &'static str,
3    pub write: bool,
4}
5
6pub const ALL_TOOLS: &[ToolMeta] = &[
7    ToolMeta { name: "create_entities",    write: true  },
8    ToolMeta { name: "create_relations",   write: true  },
9    ToolMeta { name: "add_observations",   write: true  },
10    ToolMeta { name: "delete_entities",    write: true  },
11    ToolMeta { name: "delete_observations",write: true  },
12    ToolMeta { name: "delete_relations",   write: true  },
13    ToolMeta { name: "read_graph",         write: false },
14    ToolMeta { name: "search_nodes",       write: false },
15    ToolMeta { name: "open_nodes",         write: false },
16    ToolMeta { name: "get_entity",         write: false },
17    ToolMeta { name: "graph_stats",        write: false },
18    ToolMeta { name: "search_relations",   write: false },
19    ToolMeta { name: "find_path",          write: false },
20    ToolMeta { name: "compact",            write: true  },
21    ToolMeta { name: "get_neighbors",      write: false },
22    ToolMeta { name: "describe_entity",    write: false },
23    ToolMeta { name: "list_entity_types",  write: false },
24    ToolMeta { name: "list_relation_types",write: false },
25    ToolMeta { name: "upsert_entities",    write: true  },
26    ToolMeta { name: "export_graph",       write: false },
27    ToolMeta { name: "merge_entities",    write: true  },
28    ToolMeta { name: "extract_subgraph",  write: false },
29    ToolMeta { name: "batch_get_entities",write: false },
30    ToolMeta { name: "find_all_paths",    write: false },
31    ToolMeta { name: "entity_exists",     write: false },
32    ToolMeta { name: "degree",            write: false },
33];
34
35#[inline]
36pub fn tool_exists(name: &str) -> bool {
37    ALL_TOOLS.iter().any(|t| t.name == name)
38}
39
40#[inline]
41pub fn is_write_tool(name: &str) -> bool {
42    ALL_TOOLS.iter().find(|t| t.name == name).map(|t| t.write).unwrap_or(false)
43}
44
45