SQLite内存服务

为MCP代理提供SQLite支持的内存存储,包含CLI和编程API,支持全文搜索和自动生成嵌入向量。

  • by ideadesignmedia
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ideadesignmedia/memory-mcp

使用说明

@ideadesign媒体/内存mcp

MCP代理的SQLite支持内存。提供CLI和编程API。

亮点(v2)

  • 单个全局存储空间;没有所有者隔离,也没有类型。
  • 最小模式:subject、content、date_created、date_updated、expires_at(嵌入仅限于内部)。
  • 可选FTS5索引,以实现更好的搜索;转而采用 LIKE 当不可用时。
  • 当提供密钥时,通过OpenAI在内部自动生成嵌入;否则依赖于文本搜索。MCP客户端从不接受嵌入,也不向其返回嵌入。

安装/运行

快速运行(无需安装):

npx -y @ideadesignmedia/memory-mcp --db=/abs/path/memory.db --topk=6

在本地安装(依赖于开发)并运行:

npm i -D @ideadesignmedia/memory-mcp
npx memory-mcp --db=/abs/path/memory.db --topk=6

其他生态系统等效物:

  • pnpm: pnpm dlx @ideadesignmedia/memory-mcp --db=... --topk=6
  • 纱线(经典): yarn dlx @ideadesignmedia/memory-mcp --db=... --topk=6

CLI使用情况

您可以直接调用它(如果全局安装)或通过如上所示的npx调用它。

可选标志:

  • --embed-key=sk-... 提供嵌入API密钥(与 MEMORY_EMBEDDING_KEY).
  • --embed-model=text-embedding-3-small 覆盖嵌入模型(与 MEMORY_EMBED_MODEL).

Codex配置示例

使用npx,因此不需要全局安装。增添 ~/.codex/config.toml:

[mcp_servers.memory]
command = "npx"
args = ["-y", "@ideadesignmedia/memory-mcp", "--db=/abs/path/memory.db", "--topk=6"]

程序化API

import { MemoryStore, runStdioServer } from "@ideadesignmedia/memory-mcp";

const store = new MemoryStore("./memory.db");
// All store methods are async
const id = await store.insert({
  ownerId: "user-123",
  type: "preference",
  subject: "favorite color",
  content: "blue",
});

// Run as an MCP server over stdio
await runStdioServer({
  dbPath: "./memory.db",
  defaultTopK: 6,
  embeddingApiKey: process.env.MEMORY_EMBEDDING_KEY, // optional
});

工具(v2)

  • 内存创建

    • 创建一个记忆 subject, content。可选包括 ttlDays (计算 expires_at).
    • 答复: { ok: true } 关于成功,或 { ok: false, error: string } 失败。
  • 内存搜索

    • 按文本全局搜索,可选 k (语义排名在可用时在内部使用)。
    • 响应项目: { id, subject, content }.
  • 内存更新

    • 通过以下方式更新内存字段 id: subject, content, ttlDays (重新计算 expires_at),或 expiresAt.
    • 答复: { ok: true } 关于成功,或 { ok: false, error: string } 失败。
  • 内存删除

    • 通过以下方式删除内存 id.
    • 答复: { ok: true } 关于成功,或 { ok: false, error: string } 失败。
  • 记忆得到

    • 通过以下方式获取单个内存 id.
    • 响应项: { id, subject, content, dateCreated, dateUpdated }.

嵌入

嵌入是可选的——没有密钥,服务器依赖于文本搜索。嵌入仅限于内部;它们永远不会被客户接受或退还给客户。

集 MEMORY_EMBEDDING_KEY (或通行证 --embed-key=... 以在记忆/导入内存时自动创建嵌入,并嵌入召回查询。默认模型为 text-embedding-3-small;用以下命令覆盖它 MEMORY_EMBED_MODEL 或 --embed-model。若要在使用编程API时禁用内置生成器,请传递 embeddingProvider: null 到 createMemoryMcpServer。要以编程方式指定密钥,请传递 embeddingApiKey: "sk-...".

限制和验证(v2)

  • 内存创建: subject 最多160个字符; content 最多2000;可选的 ttlDays.
  • 内存搜索:可选 query 最多1000; k 高达20。
  • 内存更新:接受部分字段; ttlDays 重新计算 expires_at.