向量存储服务器

一个生产就绪的模型上下文协议(MCP)服务器,为AI代理提供强大的向量原生内存存储,支持多种数据库后端,适用于AI代理的持久化、可搜索和可共享内存管理。

  • by Protocol-Lattice
  • Go
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 Protocol-Lattice/memory-bank-mcp

使用说明

存储库MCP服务器

生产准备就绪 模型上下文协议(MCP) 该服务器为AI代理提供了一个强大的矢量原生内存库。与 协议格子Go代理框架,此服务器通过多个数据库后端提供持久、可搜索和可共享的内存。

  • 服务器名称: memory-bank-mcp
  • 版本: 0.1.0

特性

  • 多个矢量存储后端:将记忆保存在您喜欢的数据库中。

    • 在存储器中:用于快速测试和临时存储。
    • PostgreSQL:使用 pgvector 扩展。
    • Qdrant:一个专门的矢量数据库。
    • MongoDB:使用Atlas矢量搜索。
  • 丰富的内存管理:

    • 短期缓冲:在将记忆提交长期存储之前,暂时存储会话的记忆。
    • 长期持久性:嵌入和存储记忆,以便跨会话进行语义检索。
    • 上下文检索:根据查询提取相关记忆,结合短期和长期结果。
  • 共享内存与“空间”:

    • 创建共享内存“空间”,多个代理或用户可以在其中协作。
    • 细粒度访问控制(ACL) reader, writer,以及 admin 角色。
    • 为赠款和空间提供生存时间(TTL)支持。
  • 动态嵌入:用途 AutoEmbedder 从Go代理框架中,允许您通过环境变量(例如OpenAI、Gemini、本地模型)配置嵌入模型。

配置

使用环境变量配置服务器。

存储器

集 MEMORY_STORE 到其中一个 inmemory, postgres, qdrant,或 mongo.

  • PostgreSQL:
    export MEMORY_STORE="postgres"
    export POSTGRES_DSN="postgres://user:pass@host:port/db?sslmode=disable"
    
  • Qdrant:
    export MEMORY_STORE="qdrant"
    export QDRANT_URL="http://localhost:6333"
    export QDRANT_COLLECTION="memories"
    export QDRANT_API_KEY="..." # Optional
    
  • MongoDB:
    export MEMORY_STORE="mongo"
    export MONGO_URI="mongodb+srv://..."
    export MONGO_DATABASE="main"
    export MONGO_COLLECTION="memories"
    

其他设置

  • SHORT_TERM_SIZE:每个会话的短期缓冲区中的最大项目数。(默认值: 20)
  • DEFAULT_SPACE_TTL_SEC:空格的默认TTL(秒)。(默认值: 86400 /24小时)

嵌入模型

服务器使用 AutoEmbedder,尊重 ADK_EMBED_* Go Agent框架中的环境变量。例如,要使用Gemini:

export ADK_EMBED_PROVIDER="gemini"
export ADK_EMBED_MODEL="text-embedding-004"
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

快速开始

go install github.com/Protocol-Lattice/memory-bank-mcp@latest
# Run the server (defaults to stdio transport)
memory-bank-mcp

可用的MCP工具

服务器提供了一套全面的内存操作工具。

磁心存储器

  • health.ping:检查服务器是否正在运行。
  • memory.embed:获取一段文本的向量嵌入。
  • memory.add_short:向会话的短期缓冲区添加内存。
  • memory.flush:将会话的短期缓冲区持久化到长期向量存储中。
  • memory.store_long:直接将内存嵌入并存储在长期存储中。
  • memory.retrieve_context:从会话中检索查询的相关记忆。

空间(共享内存)

  • spaces.upsert:使用TTL和ACL创建或更新共享空间。
  • spaces.grant:授予角色(reader, writer, admin)给校长一个空间。
  • spaces.revoke:撤销校长对空间的访问权限。
  • spaces.list:列出主体可以访问的所有空间。

共享会话

  • shared.join:使校长的会话视图包含特定空间。
  • shared.leave:从主体的会话视图中删除空格。
  • shared.add_short_to:将短期记忆直接添加到共享空间。
  • shared.retrieve:从主体的合并视图(本地+连接空间)中检索记忆。

MCP配置:

{
	"servers": {
    "memory-bank": {
      "command": "/usr/local/bin/memory-bank-mcp",
      "args": ["-transport", "http", "-addr", ":8080"]
    }
	},
	"inputs": []
}

诊断

  • engine.metrics:获取内存引擎性能指标的快照。