Memory MCP Server
提供知识图谱功能,用于在内存中管理实体、关系和观察,并具有严格的验证规则以保持数据一致性。
README
Memory MCP 服务器
一个模型上下文协议 (MCP) 服务器,提供知识图谱功能,用于在内存中管理实体、关系和观察,并具有严格的验证规则以保持数据一致性。
安装
在 Claude Desktop 中安装服务器:
mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonl
数据验证规则
实体名称
- 必须以小写字母开头
- 可以包含小写字母、数字和连字符
- 最大长度为 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}")
搜索功能支持:
- 时间查询(例如,“最近的”,“最后的”,“最新的”)
- 活动查询(例如,“锻炼”,“运动”)
- 常规实体搜索
- 模糊匹配,相似度阈值为 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/
添加新功能
- 更新
validation.py
中的验证规则 - 在
tests/test_validation.py
中添加测试 - 在
knowledge_graph_manager.py
中实现更改
推荐服务器

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
AIO-MCP Server
🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。
Knowledge Graph Memory Server
为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。
Hyperbrowser
欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:
BigQuery MCP Server
这是一个服务器,可以让你的大型语言模型(LLM,比如Claude)直接与你的BigQuery数据对话!可以把它想象成一个友好的翻译器,它位于你的AI助手和数据库之间,确保它们可以安全高效地进行交流。
mcp-perplexity
Perplexity API 的 MCP 服务器。
MCP Web Research Server
一个模型上下文协议服务器,使 Claude 能够通过集成 Google 搜索、提取网页内容和捕获屏幕截图来进行网络研究。
MySQL MCP Server
允许人工智能助手通过受控界面列出表格、读取数据和执行 SQL 查询,从而使数据库探索和分析更安全、更有条理。
mcp-codex-keeper
作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。