Skip to main content
Glama
evangstav

Memory MCP Server

by evangstav

Memory MCP Server

一个模型上下文协议 (MCP) 服务器,提供知识图谱功能,用于在内存中管理实体、关系和观察结果,并具有严格的验证规则以保持数据一致性。

安装

在 Claude Desktop 中安装此服务器:

mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonl

Related MCP server: MCP Memory Server - HTTP Streaming

数据验证规则

实体名称

  • 必须以小写字母开头

  • 可以包含小写字母、数字和连字符

  • 最大长度为 100 个字符

  • 在图谱中必须唯一

  • 有效名称示例:python-project, meeting-notes-2024, user-john

实体类型

支持以下实体类型:

  • person:人物实体

  • concept:抽象概念或原则

  • project:工作计划或任务

  • document:任何形式的文档

  • tool:软件工具或实用程序

  • organization:公司或团体

  • location:物理或虚拟地点

  • event:有时间限制的事件

观察结果

  • 非空字符串

  • 最大长度为 500 个字符

  • 每个实体必须唯一

  • 应为事实和客观陈述

  • 在相关时包含时间戳

关系

支持以下关系类型:

  • knows:人与人之间的联系

  • contains:父/子关系

  • uses:实体利用另一个实体

  • created:作者/创建关系

  • belongs-to:成员/所有权

  • depends-on:依赖关系

  • related-to:通用关系

附加关系规则:

  • 源实体和目标实体都必须存在

  • 不允许自引用关系

  • 不允许循环依赖

  • 必须使用预定义的关系类型

使用方法

该服务器提供了用于管理知识图谱的工具:

获取实体

result = await session.call_tool("get_entity", {
    "entity_name": "example"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid input: {result.error}")
    else:
        print(f"Error: {result.error}")
else:
    entity = result.data
    print(f"Found entity: {entity}")

获取图谱

result = await session.call_tool("get_graph", {})
if result.success:
    graph = result.data
    print(f"Graph data: {graph}")
else:
    print(f"Error retrieving graph: {result.error}")

创建实体

# Valid entity creation
entities = [
    Entity(
        name="python-project",  # Lowercase with hyphens
        entityType="project",   # Must be a valid type
        observations=["Started development on 2024-01-29"]
    ),
    Entity(
        name="john-doe",
        entityType="person",
        observations=["Software engineer", "Joined team in 2024"]
    )
]
result = await session.call_tool("create_entities", {
    "entities": entities
})
if not result.success:
    if result.error_type == "VALIDATION_ERROR":
        print(f"Invalid entity data: {result.error}")
    else:
        print(f"Error creating entities: {result.error}")

添加观察结果

# Valid observation
result = await session.call_tool("add_observation", {
    "entity": "python-project",
    "observation": "Completed initial prototype"  # Must be unique for entity
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid observation: {result.error}")
    else:
        print(f"Error adding observation: {result.error}")

创建关系

# Valid relation
result = await session.call_tool("create_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project",
    "relation_type": "created"  # Must be a valid type
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid relation data: {result.error}")
    else:
        print(f"Error creating relation: {result.error}")

搜索内存

result = await session.call_tool("search_memory", {
    "query": "most recent workout"  # Supports natural language queries
})
if result.success:
    if result.error_type == "NO_RESULTS":
        print(f"No results found: {result.error}")
    else:
        results = result.data
        print(f"Search results: {results}")
else:
    print(f"Error searching memory: {result.error}")

搜索功能支持:

  • 时间查询(例如:“most recent”, “last”, “latest”)

  • 活动查询(例如:“workout”, “exercise”)

  • 通用实体搜索

  • 具有 80% 相似度阈值的模糊匹配

  • 加权搜索:

    • 实体名称(权重:1.0)

    • 实体类型(权重:0.8)

    • 观察结果(权重:0.6)

删除实体

result = await session.call_tool("delete_entities", {
    "names": ["python-project", "john-doe"]
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting entities: {result.error}")

删除关系

result = await session.call_tool("delete_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting relation: {result.error}")

清空内存

result = await session.call_tool("flush_memory", {})
if not result.success:
    print(f"Error flushing memory: {result.error}")

错误类型

服务器使用以下错误类型:

  • NOT_FOUND:未找到实体或资源

  • VALIDATION_ERROR:输入数据无效

  • INTERNAL_ERROR:服务器端错误

  • ALREADY_EXISTS:资源已存在

  • INVALID_RELATION:实体间关系无效

响应模型

所有工具都使用这些模型返回类型化响应:

EntityResponse

class EntityResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

GraphResponse

class GraphResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

OperationResponse

class OperationResponse(BaseModel):
    success: bool
    error: Optional[str] = None
    error_type: Optional[str] = None

开发

运行测试

pytest tests/

添加新功能

  1. 更新 validation.py 中的验证规则

  2. tests/test_validation.py 中添加测试

  3. knowledge_graph_manager.py 中实现更改

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables creation and management of knowledge graphs with entities, relationships, and observations through HTTP streaming. Supports persistent storage, search functionality, and CRUD operations for building and querying interconnected knowledge bases.
    2
  • A
    license
    C
    quality
    D
    maintenance
    Provides persistent memory and knowledge graph capabilities for AI assistants using local SQLite storage. Enables creating, searching, and managing entities, relationships, and observations with vector search support across conversations.
    7
    10
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides LLMs with persistent memory across conversations using a knowledge graph that stores entities, relationships, and observations with support for PostgreSQL or SQLite backends.
    102
    24
    MIT

View all related MCP servers

Related MCP Connectors

  • Manage TTRPG campaigns: NPCs, locations, factions, quests, sessions, lore, and knowledge graphs.

  • AI knowledge graph for architecture, portfolio, and digital strategy management.

  • End-to-end agent-managed company brain. Docs, diagrams, plans, Knowledge Graph. Lean & affordable.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evangstav/python-memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server