关于 MCP Memory Server with Qdrant Persistence
这是一个 MCP 服务,以知识图谱形式保存实体和关系,并借助 Qdrant 向量数据库提供语义搜索。项目面向需要长期记忆的 AI 应用,同时保留基于文件的图谱存储。
主要功能
- 01实体与关系构成的图谱结构
- 02memory.json 文件持久化
- 03基于 Qdrant 的语义搜索
- 04使用 OpenAI 生成向量嵌入
- 05支持 HTTPS 与反向代理
- 06提供 Docker 部署方式
适用场景
- 01为 AI 助手保存跨会话的实体信息
- 02按语义查找相关的实体与关系
- 03在反向代理后部署 Qdrant 记忆服务
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露创建、删除、查询实体与关系的工具,以及 search_similar 语义搜索工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
带有 Qdrant 持久化的 MCP Memory 服务
该 MCP 服务提供了一个知识图谱实现,并具备由 Qdrant 向量数据库驱动的语义搜索能力。
特性
- 基于图谱的知识表示,包含实体和关系
- 基于文件的持久化(memory.json)
- 使用 Qdrant 向量数据库进行语义搜索
- 使用 OpenAI embeddings 实现语义相似度
- 支持 HTTPS,并兼容反向代理
- 支持 Docker,便于部署
环境变量
需要以下环境变量:
# OpenAI API key for generating embeddings
OPENAI_API_KEY=your-openai-api-key
# Qdrant server URL (supports both HTTP and HTTPS)
QDRANT_URL=https://your-qdrant-server
# Qdrant API key (if authentication is enabled)
QDRANT_API_KEY=your-qdrant-api-key
# Name of the Qdrant collection to use
QDRANT_COLLECTION_NAME=your-collection-name
设置
本地设置
- 安装依赖:
npm install
- 构建服务:
npm run build
Docker 设置
- 构建 Docker 镜像:
docker build -t mcp-qdrant-memory .
- 使用所需环境变量运行 Docker 容器:
docker run -d \
-e OPENAI_API_KEY=your-openai-api-key \
-e QDRANT_URL=http://your-qdrant-server:6333 \
-e QDRANT_COLLECTION_NAME=your-collection-name \
-e QDRANT_API_KEY=your-qdrant-api-key \
--name mcp-qdrant-memory \
mcp-qdrant-memory
添加到 MCP 设置:
{
"mcpServers": {
"memory": {
"command": "/bin/zsh",
"args": ["-c", "cd /path/to/server && node dist/index.js"],
"env": {
"OPENAI_API_KEY": "your-openai-api-key",
"QDRANT_API_KEY": "your-qdrant-api-key",
"QDRANT_URL": "http://your-qdrant-server:6333",
"QDRANT_COLLECTION_NAME": "your-collection-name"
},
"alwaysAllow": [
"create_entities",
"create_relations",
"add_observations",
"delete_entities",
"delete_observations",
"delete_relations",
"read_graph",
"search_similar"
]
}
}
}
工具
实体管理
create_entities:创建多个新实体create_relations:在实体之间创建关系add_observations:向实体添加观察项delete_entities:删除实体及其关系delete_observations:删除特定观察项delete_relations:删除特定关系read_graph:获取完整知识图谱
语义搜索
search_similar:搜索语义相似的实体和关系interface SearchParams { query: string; // Search query text limit?: number; // Max results (default: 10) }
实现细节
该服务维护两种持久化形式:
-
基于文件(memory.json):
- 完整的知识图谱结构
- 快速访问完整图谱
- 用于图谱操作
-
Qdrant 向量数据库:
- 实体和关系的语义 embeddings
- 支持相似度搜索
- 自动与文件存储同步
同步
当实体或关系被修改时:
- 更改会写入 memory.json
- 使用 OpenAI 生成 embeddings
- 向量存储到 Qdrant
- 两种存储系统保持一致
搜索过程
搜索时:
- 查询文本会转换为 embedding
- Qdrant 执行相似度搜索
- 结果同时包含实体和关系
- 结果按语义相似度排序
使用示例
// Create entities
await client.callTool("create_entities", {
entities: [{
name: "Project",
entityType: "Task",
observations: ["A new development project"]
}]
});
// Search similar concepts
const results = await client.callTool("search_similar", {
query: "development tasks",
limit: 5
});
HTTPS 和反向代理配置
该服务支持通过 HTTPS 和反向代理连接到 Qdrant。这在以下情况下特别有用:
- 在 Nginx 或 Apache 等反向代理后运行 Qdrant
- 使用自签名证书
- 需要自定义 SSL/TLS 配置
使用反向代理进行设置
- 配置你的反向代理(使用 Nginx 的示例):
server {
listen 443 ssl;
server_name qdrant.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:6333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 更新你的环境变量:
QDRANT_URL=https://qdrant.yourdomain.com
安全注意事项
该服务通过以下方式实现稳健的 HTTPS 处理:
- 自定义 SSL/TLS 配置
- 适当的证书验证选项
- 连接池和 keepalive
- 带指数退避的自动重试
- 可配置的超时
排查 HTTPS 连接问题
如果你遇到连接问题:
- 验证你的证书:
openssl s_client -connect qdrant.yourdomain.com:443
- 测试直接连通性:
curl -v https://qdrant.yourdomain.com/collections
- 检查是否有任何代理设置:
env | grep -i proxy
贡献
- Fork 仓库
- 创建功能分支
- 进行修改
- 提交 pull request
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。