mcpField
M
MCP Memory Server with Qdrant Persistence

MCP Memory Server with Qdrant Persistence

本地服务
github.com/delorenj记忆与知识2486 周前更新

关于 MCP Memory Server with Qdrant Persistence

这是一个 MCP 服务,以知识图谱形式保存实体和关系,并借助 Qdrant 向量数据库提供语义搜索。项目面向需要长期记忆的 AI 应用,同时保留基于文件的图谱存储。

主要功能

  1. 01实体与关系构成的图谱结构
  2. 02memory.json 文件持久化
  3. 03基于 Qdrant 的语义搜索
  4. 04使用 OpenAI 生成向量嵌入
  5. 05支持 HTTPS 与反向代理
  6. 06提供 Docker 部署方式

适用场景

  1. 01为 AI 助手保存跨会话的实体信息
  2. 02按语义查找相关的实体与关系
  3. 03在反向代理后部署 Qdrant 记忆服务

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露创建、删除、查询实体与关系的工具,以及 search_similar 语义搜索工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"qdrant-memory": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

带有 Qdrant 持久化的 MCP Memory 服务

smithery badge

该 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

设置

本地设置
  1. 安装依赖:
npm install
  1. 构建服务:
npm run build
Docker 设置
  1. 构建 Docker 镜像:
docker build -t mcp-qdrant-memory .
  1. 使用所需环境变量运行 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)
    }
    

实现细节

该服务维护两种持久化形式:

  1. 基于文件(memory.json):

    • 完整的知识图谱结构
    • 快速访问完整图谱
    • 用于图谱操作
  2. Qdrant 向量数据库:

    • 实体和关系的语义 embeddings
    • 支持相似度搜索
    • 自动与文件存储同步
同步

当实体或关系被修改时:

  1. 更改会写入 memory.json
  2. 使用 OpenAI 生成 embeddings
  3. 向量存储到 Qdrant
  4. 两种存储系统保持一致
搜索过程

搜索时:

  1. 查询文本会转换为 embedding
  2. Qdrant 执行相似度搜索
  3. 结果同时包含实体和关系
  4. 结果按语义相似度排序

使用示例

// 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 配置
使用反向代理进行设置
  1. 配置你的反向代理(使用 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;
    }
}
  1. 更新你的环境变量:
QDRANT_URL=https://qdrant.yourdomain.com
安全注意事项

该服务通过以下方式实现稳健的 HTTPS 处理:

  • 自定义 SSL/TLS 配置
  • 适当的证书验证选项
  • 连接池和 keepalive
  • 带指数退避的自动重试
  • 可配置的超时
排查 HTTPS 连接问题

如果你遇到连接问题:

  1. 验证你的证书:
openssl s_client -connect qdrant.yourdomain.com:443
  1. 测试直接连通性:
curl -v https://qdrant.yourdomain.com/collections
  1. 检查是否有任何代理设置:
env | grep -i proxy

贡献

  1. Fork 仓库
  2. 创建功能分支
  3. 进行修改
  4. 提交 pull request

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。