search_nodes
Locate nodes in a knowledge graph by matching queries against entity names, types, and content. Enables AI systems to retrieve stored information efficiently for enhanced memory functionality.
Instructions
Search for nodes in the knowledge graph based on a query
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to match against entity names, types, and observation content |
Implementation Reference
- index.ts:157-181 (handler)The core implementation of the search_nodes tool logic in the KnowledgeGraphManager class. It loads the graph, filters entities matching the query in name, type, or observations, and includes relations between matching entities.async searchNodes(query: string): Promise<KnowledgeGraph> { const graph = await this.loadGraph(); // Filter entities const filteredEntities = graph.entities.filter(e => e.name.toLowerCase().includes(query.toLowerCase()) || e.entityType.toLowerCase().includes(query.toLowerCase()) || e.observations.some(o => o.toLowerCase().includes(query.toLowerCase())) ); // Create a Set of filtered entity names for quick lookup const filteredEntityNames = new Set(filteredEntities.map(e => e.name)); // Filter relations to only include those between filtered entities const filteredRelations = graph.relations.filter(r => filteredEntityNames.has(r.from) && filteredEntityNames.has(r.to) ); const filteredGraph: KnowledgeGraph = { entities: filteredEntities, relations: filteredRelations, }; return filteredGraph; }
- index.ts:428-438 (registration)Registration of the search_nodes tool in the listTools response, including name, description, and input schema.{ name: "search_nodes", description: "Search for nodes in the knowledge graph based on a query", inputSchema: { type: "object", properties: { query: { type: "string", description: "The search query to match against entity names, types, and observation content" }, }, required: ["query"], }, },
- index.ts:431-437 (schema)Input schema definition for the search_nodes tool, specifying a required 'query' string parameter.inputSchema: { type: "object", properties: { query: { type: "string", description: "The search query to match against entity names, types, and observation content" }, }, required: ["query"], },
- index.ts:531-532 (handler)MCP tool dispatch handler for search_nodes, which calls the KnowledgeGraphManager.searchNodes method and formats the response.case "search_nodes": return { content: [{ type: "text", text: JSON.stringify(await knowledgeGraphManager.searchNodes(args.query as string), null, 2) }] };
- index.ts:268-268 (helper)Instantiation of the KnowledgeGraphManager used by the search_nodes tool.const knowledgeGraphManager = new KnowledgeGraphManager();