This optimized memory MCP server, developed by Herman Wong, provides a persistent knowledge graph for AI systems using SQLite as a backend. Built with Python and leveraging libraries like aiofiles and mcp, it offers tools for creating, updating, and querying entities, relations, and observations in a graph structure. The server is designed for efficient memory management and seamless integration with Claude Desktop. By abstracting knowledge storage and retrieval into a standardized MCP interface, it enables AI assistants to maintain context and personalize interactions across conversations. This implementation is particularly useful for applications requiring long-term memory and relationship modeling, such as personalized chat systems, knowledge management tools, or AI-powered personal assistants.
Create multiple new entities in the knowledge graph. Input: entities (array of objects) where each object contains name (string), entityType (string), and observations (string[]). Ignores entities with existing names.
Create multiple new relations between entities. Input: relations (array of objects) where each object contains from (string), to (string), and relationType (string). Skips duplicate relations.
Add new observations to existing entities. Input: observations (array of objects) where each object contains entityName (string) and contents (string[]). Returns added observations per entity. Fails if entity doesn't exist.
Remove entities and their relations. Input: entityNames (string[]). Cascading deletion of associated relations. Silent operation if entity doesn't exist.
Remove specific observations from entities. Input: deletions (array of objects) where each object contains entityName (string) and observations (string[]). Silent operation if observation doesn't exist.
Remove specific relations from the graph. Input: relations (array of objects) where each object contains from (string), to (string), and relationType (string). Silent operation if relation doesn't exist.
Read the entire knowledge graph. No input required. Returns complete graph structure with all entities and relations.
Search for nodes based on query. Input: query (string). Searches across entity names, entity types, and observation content. Returns matching entities and their relations.
Retrieve specific nodes by name. Input: names (string[]). Returns requested entities and relations between requested entities. Silently skips non-existent nodes.
No reviews yet. Be the first to review!
Sign in to join the conversation
Our bundler currently only supports TypeScript-based servers. Check back soon!