Knowledge Graph Memory Server

Knowledge Graph Memory Server

A persistent memory server that implements a local knowledge graph using the Kuzu embedded database to store entities, relationships, and observations. It enables AI models to maintain structured long-term context through searchable nodes and comprehensive tag-based organization.

Category
访问服务器

README

Knowledge Graph Memory Server

A basic implementation of persistent memory using a local knowledge graph powered by Kuzu embedded graph database.

Core Concepts

Entities

Entities are the primary nodes in the knowledge graph. Each entity has:

  • A unique name (identifier)
  • An entity type (e.g., "person", "organization", "event")
  • A list of observations

Example:

{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["Speaks fluent Spanish"]
}

Relations

Relations define directed connections between entities. They are always stored in active voice and describe how entities interact or relate to each other.

Example:

{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at"
}

Observations

Observations are discrete pieces of information about an entity. They are:

  • Stored as strings
  • Attached to specific entities
  • Can be added or removed independently
  • Should be atomic (one fact per observation)

Example:

{
  "entityName": "John_Smith",
  "observations": ["Speaks fluent Spanish", "Graduated in 2019", "Prefers morning meetings"]
}

Tags

Tags provide a flexible way to categorize and organize entities and observations. They enable:

  • Cross-cutting classification of entities and observations
  • Easy filtering and discovery of related information
  • Hierarchical organization with optional categories
  • Metadata storage with descriptions

Example:

{
  "name": "high-priority",
  "category": "priority",
  "description": "Items requiring immediate attention"
}

Tags can be applied to:

  • Entities: For categorizing people, projects, concepts, etc.
  • Observations: For marking specific facts with metadata like confidence, source, or relevance

API

Tools

  • create_entities

    • Create multiple new entities in the knowledge graph
    • Input: entities (array of objects)
      • Each object contains:
        • name (string): Entity identifier
        • entityType (string): Type classification
        • observations (string[]): Associated observations
    • Ignores entities with existing names
  • create_relations

    • Create multiple new relations between entities
    • Input: relations (array of objects)
      • Each object contains:
        • from (string): Source entity name
        • to (string): Target entity name
        • relationType (string): Relationship type in active voice
    • Skips duplicate relations
  • add_observations

    • Add new observations to existing entities
    • Input: observations (array of objects)
      • Each object contains:
        • entityName (string): Target entity
        • contents (string[]): New observations to add
    • Returns added observations per entity
    • Fails if entity doesn't exist
  • delete_entities

    • Remove entities and their relations
    • Input: entityNames (string[])
    • Cascading deletion of associated relations
    • Silent operation if entity doesn't exist
  • delete_observations

    • Remove specific observations from entities
    • Input: deletions (array of objects)
      • Each object contains:
        • entityName (string): Target entity
        • observations (string[]): Observations to remove
    • Silent operation if observation doesn't exist
  • delete_relations

    • Remove specific relations from the graph
    • Input: relations (array of objects)
      • Each object contains:
        • from (string): Source entity name
        • to (string): Target entity name
        • relationType (string): Relationship type
    • Silent operation if relation doesn't exist
  • read_graph

    • Read the entire knowledge graph
    • No input required
    • Returns complete graph structure with all entities and relations
  • search_nodes

    • Search for nodes based on query
    • Input: query (string)
    • Searches across:
      • Entity names
      • Entity types
      • Observation content
    • Returns matching entities and their relations
  • open_nodes

    • Retrieve specific nodes by name
    • Input: names (string[])
    • Returns:
      • Requested entities
      • Relations between requested entities
    • Silently skips non-existent nodes
  • tag_entity

    • Add tags to entities
    • Input: entityName (string), tagNames (string[])
    • Creates tags if they don't exist
    • Returns array of successfully added tags
  • tag_observation

    • Add tags to specific observations
    • Input: entityName (string), observationContent (string), tagNames (string[])
    • Creates tags if they don't exist
    • Returns array of successfully added tags
  • get_entities_by_tag

    • Find entities with a specific tag
    • Input: tagName (string)
    • Returns entities and their relations that have the specified tag
  • get_all_tags

    • List all available tags
    • No input required
    • Returns all tags with their categories and descriptions
  • get_tag_usage

    • Get usage statistics for tags
    • No input required
    • Returns tag usage counts for entities and observations
  • remove_tags_from_entity

    • Remove specific tags from an entity
    • Input: entityName (string), tagNames (string[])
    • Returns array of successfully removed tags

Usage

Setup

Add this to your mcp server config:

NPX

{
  "mcpServers": {
    "knowledge-graph": {
      "command": "npx",
      "args": ["-y", "@deanacus/knowledge-graph-mcp", "/path/to/your/knowledge-graph.db"]
    }
  }
}

The database file will be created automatically if it doesn't exist. Choose a location where you want to persistently store your knowledge graph data.

VS Code Configuration

Optionally, you can add it to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.

Note that the mcp key is not needed in the .vscode/mcp.json file.

{
  "servers": {
    "knowledge-graph": {
      "command": "npx",
      "args": ["-y", "@deanacus/knowledge-graph-mcp", "/path/to/your/knowledge-graph.db"]
    }
  }
}

Usage Examples

Basic Entity and Relation Management

// Create entities
await create_entities({
  entities: [
    {
      name: 'John_Smith',
      entityType: 'person',
      observations: ['Senior developer', 'Works remotely'],
    },
  ],
});

// Add tags to organize information
await tag_entity({
  entityName: 'John_Smith',
  tagNames: ['team-member', 'senior', 'remote-worker'],
});

// Tag specific observations
await tag_observation({
  entityName: 'John_Smith',
  observationContent: 'Works remotely',
  tagNames: ['work-style', 'post-covid'],
});

Discovery and Organization

// Find all team members
await get_entities_by_tag({ tagName: 'team-member' });

// Get all available tags to understand the knowledge graph structure
await get_all_tags();

// See which tags are most commonly used
await get_tag_usage();

System Prompt

The prompt for utilizing memory depends on the use case. Changing the prompt will help the model determine the frequency and types of memories created.

Here is an example prompt for project context management with tagging.

Follow these steps for each interaction:

1. Project Context Identification:
   - Identify the current project or codebase you are working with
   - If project context is unclear, ask clarifying questions about the project scope and purpose

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and retrieve all relevant project information from your knowledge graph
   - Use tags to filter relevant information for the current context (e.g., current project, specific features)
   - Always refer to your knowledge graph as your "project memory"

3. Project Information Organization:
   - Use tags to organize information by:
     a) Project phases (e.g., "planning", "development", "testing", "deployed")
     b) Components (e.g., "frontend", "backend", "database", "auth")
     c) Priority levels (e.g., "critical", "high-priority", "nice-to-have")
     d) Status (e.g., "completed", "in-progress", "blocked", "deprecated")
     e) People and roles (e.g., "stakeholder", "developer", "user")

4. Information Capture:
   - Continuously build understanding of the project by capturing any relevant information discovered during our work together
   - Be comprehensive in what you consider worth remembering - technical details, context, decisions, patterns, constraints, or any insights that could be valuable later

5. Memory Update:
   - If any new project information was discovered during the interaction, update your memory as follows:
     a) Create entities for items you deem worthwhile, particularly components, modules, classes, functions, key concepts, and tasks
     b) Connect them using relations to show dependencies, inheritance, or workflows
     c) Store technical details, decisions, and context as observations
     d) Apply relevant tags to entities and observations for easy discovery and organization
     e) Use consistent tag naming conventions (e.g., kebab-case like "high-priority", "in-progress")

6. Context Switching:
   - When switching between different aspects of the project, use tags to filter your memory retrieval
   - Example: "Remembering frontend components..." then retrieve entities tagged with "frontend"

Building

npm run build

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选