记忆化MCP服务器

一个基于Bun和TypeScript的记忆化MCP服务器实现,提供混合内存基础设施、文档智能、知识图谱服务和多工具注册功能。

  • by PerkyZZ999
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 PerkyZZ999/MemorizedMCP-TS

使用说明

记住MCP TS

重要提示: 此MCP服务器仅通过端到端验证 光标2.0其他IDE或MCP主机可能需要额外的布线或配置更改。扩大兼容性的贡献非常受欢迎!

MemorizedMCP TS是Memorized MCP服务器的Bun+TypeScript实现。它提供:

  • 具有多层支持的混合内存基础架构(SQLite+Vectra)
  • 具有分块、嵌入、FTS支持的搜索和实体提取的文档智能
  • 链接实体、关系和上下文元数据的知识图服务
  • 完全沙盒化 run_code 经验加上用于离散MCP调用的丰富多工具注册表
  • 操作工具:迁移、计划作业、备份/恢复、模式生成和分析

关键架构文档:


安装

bun install
cp .env.example .env    # customise configuration if required

服务器依赖Bun≥1.3.0。确保已配置 TRANSFORMER_MODEL 在本地或通过网络可用,并创建 DATA_ROOT 如果您计划持久化数据,请使用目录。

来自npm(发布后)

npm install memorizedmcp-ts
bunx memorizedmcp-ts --multi-tool   # launches the published stdio server

CLI标志:

标志 描述
--config <path> 加载备选方案 .env 引导前的文件
--multi-tool 强制多工具注册(MCP_MULTI_TOOL=true)
--single-tool 强制单工具沙盒(MCP_MULTI_TOOL=false)
--path <dir> 覆盖SQLite+矢量数据的根目录(DATA_ROOT)
--env KEY=VALUE 注入任意环境覆盖(可重复)
--help 打印CLI使用情况

所有选项都映射到自托管模式中使用的相同环境变量,因此您可以在不编辑源代码的情况下在单工具和多工具行为之间切换。

提示: 如果Bun不在您的PATH中,请设置 BUN_BINARY=/custom/path/to/bun 运行前 npx memorizedmcp-ts.


快速入门

# Requires Bun (>=1.3.0) available on your PATH

# Launch the published MCP server (multi-tool mode)
npx -y memorizedmcp-ts --multi-tool

# or force single-tool sandbox
npx -y memorizedmcp-ts --single-tool

# or pin the storage root alongside other flags
npx -y memorizedmcp-ts --multi-tool --path "$PWD/.memorized"

对于本地开发,您仍然可以直接运行源代码:

# Start in watch mode
bun run dev

# Or build + run the bundled output
bun run build
bun run start

单工具模式显示 run_code 具有类型安全绑定的工具:

const memory = await services.memory.addMemory({
  content: "User prefers dark mode",
  layer: "semantic",
  importance: 0.8,
});

const context = await services.knowledge.getEntityContext({
  entityId: "entity-id",
});

通过设置切换多工具模式 MCP_MULTI_TOOL=true (in .env 或过程环境)。服务器将注册中描述的每个工具 docs/MCP-Server-Guide.md.


光标MCP配置

已发布的软件包与Cursor的安装链接生成器兼容[光标MCP安装链接]:

{
  "memorizedmcp-ts": {
    "command": "npx",
    "args": [
      "-y",
      "memorizedmcp-ts",
      "--",
      "--multi-tool"
    ],
    "env": {
      "LOG_LEVEL": "info",
      "TRANSFORMER_MODEL": "Xenova/all-MiniLM-L6-v2",
      "DATA_ROOT": "~/.memorizedmcp"
    }
  }
}

通过替换在模式之间切换 --multi-tool 随着 --single-tool,或省略要遵守的标志 .env 默认值。用以下内容覆盖存储 --path <dir> 或通过重复提供额外的覆盖 --env KEY=VALUE 论据。


嵌入模型选择

MCP服务器依赖于句子嵌入模型进行混合搜索。Transformers.js提供了许多兼容的检查点[Transformers.js文档].选择最符合您需求的型号:

型号 许可证 尺寸 备注
Xenova/all-MiniLM-L6-v2 Apache 2.0(免费) 384 示例中的默认值。快速、小巧(约80 MB),非常适合Bun/Node环境。
Xenova/all-mpnet-base-v2 Apache 2.0(免费) 768 更高质量的英文嵌入;大小约为3倍,推理速度较慢。
Xenova/multilingual-MiniLM-L12-v2 Apache 2.0(免费) 384 多语言覆盖(50多种语言)的平衡准确性。

对于完全托管/更高精度的选项(基于使用情况的定价),您可以将嵌入提供程序交换为拥抱面部推理端点或第三方API(例如OpenAI的 text-embedding-3-large).看 src/services/embedding.ts 对于集成点。

相应地更新环境变量:

TRANSFORMER_MODEL=Xenova/all-mpnet-base-v2

可用脚本

脚本 描述
bun run dev 通过文件监视执行入口点
bun run start 在中运行已编译的包 dist/
bun run build 捆绑服务器进行分发
bun run build:types 将申报文件发送到 dist/types/
bun run lint 通过Biome进行静态分析
bun run format 自动格式化代码库
bun run test 执行Vitest套件
bun run migrate 应用数据库迁移
bun run generate-schemas 从Zod定义生成JSON模式
bun run backup / bun run restore -- <dir> 数据快照+还原助手
bun run export:memories / import:memories JSONL导入/导出实用程序
npm run prepare-release Lint、测试、构建、发出声明、重新生成模式

配置

服务器从以下位置读取配置 .env (通过 dotenv)加上运行时覆盖。重要密钥:

变量 描述 默认值
LOG_LEVEL Pino日志级别 info
DATA_ROOT SQLite、备份、vectra索引的根 ./data
SQLITE_URL SQLite数据库的路径 ./data/sqlite/memorized.db
TRANSFORMER_MODEL Transformers.js模型ID hash (替换为真实模型)
MCP_MULTI_TOOL 启用多工具注册表 false
MCP_ENABLE_PARENT_WATCHDOG 如果启动器进程消失,则终止服务器 true 当 MEMORIZEDMCP_PARENT_PID 提供,否则 false
MCP_ENABLE_STDIN_SHUTDOWN 将stdin关闭视为额外的关闭信号 false (当您的MCP主机保持stdin打开时手动启用)
SINGLE_TOOL_TIMEOUT_MS 沙盒超时 run_code 120000
CRON_* 计划作业的Cron表达式 请参阅 .env.example

参见 docs/Operations.md 用于部署和调度指导。


发布工作流

按照中的步骤进行操作 docs/MCP-Server-Guide.md 和 CHANGELOG.md,然后运行:

npm run prepare-release
npm publish --access public --tag latest   # or beta/rc as appropriate

这 prepare-release 该脚本执行linting、测试、绑定、类型发布和模式生成,因此tarball包含运行MCP服务器所需的一切。


安全和加固检查表

  • bun run test 每次发布前
  • 查看cron时间表(CRON_*)沙盒超时(SINGLE_TOOL_TIMEOUT_MS)
  • 将备份存储在安全存储中,并将文件系统权限限制为 DATA_ROOT
  • 使用经过审查的 TRANSFORMER_MODEL离线时进行预热嵌入

兼容性说明

  • 经过全面测试 光标2.0 (MCP主机+IDE)
  • 其他MCP客户端可能需要修改传输接线或额外的胶水代码(startMcpServer,工具注册)
  • 通过GitHub issues报告兼容性问题,以便我们扩大开箱即用的支持

贡献

  1. 分叉存储库并创建功能分支
  2. 跑 bun run lint 和 bun run test 在承诺之前
  3. 根据需要更新文档(README、MCP指南、CHANGELOG)
  4. 提交一份PR,描述您是如何测试更改的(包括IDE/MCP主机详细信息)

感谢您使用MemorizedMCP TS!鼓励通过GitHub issues或pull请求提供免费反馈和功能请求。