Memory MCP Server
一个模型上下文协议 (MCP) 服务器,提供知识图谱功能,用于在内存中管理实体、关系和观察结果,并具有严格的验证规则以保持数据一致性。
安装
在 Claude Desktop 中安装此服务器:
mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonlRelated MCP server: Qualitative Researcher MCP Server
数据验证规则
实体名称
必须以小写字母开头
可以包含小写字母、数字和连字符
最大长度为 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] = NoneGraphResponse
class GraphResponse(BaseModel):
success: bool
data: Optional[Dict[str, Any]] = None
error: Optional[str] = None
error_type: Optional[str] = NoneOperationResponse
class OperationResponse(BaseModel):
success: bool
error: Optional[str] = None
error_type: Optional[str] = None开发
运行测试
pytest tests/添加新功能
更新
validation.py中的验证规则在
tests/test_validation.py中添加测试在
knowledge_graph_manager.py中实现更改
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
