内存服务器

Rusty Memory MCP是一个简单的内存服务器,用于编码代理,支持文本分块、嵌入生成和向量存储。

  • by CaliLuke
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 CaliLuke/rusty-mcp

使用说明

Rusty Memory MCP 翻译为中文是“锈迹记忆MCP”(注:这里的“MCP”可能是一个特定名称或缩写,根据上下文可能有不同的翻译,但在此直接保留原样)。不过,具体翻译可能还需根据“Rusty Memory MCP”在特定领域或语境中的含义来调整。如果“MCP”有特定含义,如“最小认知单元”(Minimum Cognition Unit)或其他专业术语,那么翻译时应相应调整。但在此通用翻译中,我们将其直译为“锈迹记忆MCP”

Rusty Memory MCP 是一个无需复杂配置的编码代理内存服务器。它能够将文本分块,生成嵌入向量,并将这些向量存储在 Qdrant 中。您可以按以下方式运行它:

  • 一个用于编辑器/代理的基于标准I/O的MCP服务器
  • 一个用于简单脚本的本地HTTP服务

如果你想对代码库进行黑客式修改或了解其内部工作原理,请跳转到下面的开发者文档。

快速入门(在您的编辑器中使用MCP)

  1. 安装二进制文件

    cargo install rustymcp
    

    这会安装:

    • rusty_mem_mcp (MCP 服务器)
    • rustymcp (HTTP服务器)
    • metrics-post (脚本使用的辅助工具)
  2. 启动Qdrant(向量数据库)

    docker run --pull=always -p 6333:6333 qdrant/qdrant:latest
    
  3. 配置环境

    复制 .env.example 到 .env 并编辑值,或者通过您的MCP客户端配置提供相同的变量:

    所需的变量:

    • QDRANT_URL (例如。 http://127.0.0.1:6333)
    • QDRANT_COLLECTION_NAME (例如。 rusty-mem)
    • EMBEDDING_PROVIDER (ollama 使本地客户端能够启用;其他值目前使用确定性回退机制)
    • EMBEDDING_MODEL (自由形式,例如。 nomic-embed-text)
    • EMBEDDING_DIMENSION (必须与您的型号匹配,例如。 768)
    • OLLAMA_URL (可选,默认为 http://127.0.0.1:11434 何时;当……的时候 EMBEDDING_PROVIDER=ollama)
  4. 启动MCP服务器

    rusty_mem_mcp
    
  5. 添加到您的代理中

    • Codex CLI(命令行界面)~/.codex/config.toml):

      [mcp_servers.rusty_mem]
      command = "rusty_mem_mcp" # or use the full path to the binary
      args = []
      transport = "stdio"
      
        [mcp_servers.rusty_mem.env]
        QDRANT_URL = "http://127.0.0.1:6333"
        QDRANT_COLLECTION_NAME = "rusty-mem"
        EMBEDDING_PROVIDER = "ollama"
        EMBEDDING_MODEL = "nomic-embed-text"
        EMBEDDING_DIMENSION = "768"
        OLLAMA_URL = "http://127.0.0.1:11434" # omit to use the default
      
    • JSON 客户端(Kilo、Cline、Roo Code):

      {
        "mcpServers": {
          "rusty": {
            "command": "rusty_mem_mcp",
            "args": [],
            "transport": "stdio",
            "env": {
              "QDRANT_URL": "http://127.0.0.1:6333",
              "QDRANT_COLLECTION_NAME": "rusty-mem",
            "EMBEDDING_PROVIDER": "ollama",
            "EMBEDDING_MODEL": "nomic-embed-text",
             "EMBEDDING_DIMENSION": "768",
             "OLLAMA_URL": "http://127.0.0.1:11434"
            }
          }
        }
      }
      
  6. 试试看

    从您的代理那里使用:

    • push → 输入文本及可选元数据(project_id, memory_type, tags, source_uri)
    • search → 使用项目、记忆类型、标签、时间范围和评分阈值等过滤器按语义检索记忆
    • summarize 将情景记忆整合为带有来源信息和幂等性的语义摘要 summary_keys
    • get-collections → 列出 Qdrant 集合
    • new-collection → 创建或调整集合大小
    • metrics → 查看计数器(documentsIndexed, chunksIndexed, lastChunkSize)
    • listResources → 发现只读资源;使用 readResource on: (此词单独出现时,通常作为介词或副词使用,需结合上下文具体翻译,但在此仅提供字面对应,即“在……上”或“关于”)
      • mcp://memory-types
      • mcp://projects
      • mcp://health
      • mcp://settings (搜索默认设置)
      • mcp://usage (使用政策和推荐流程)
      • 模板: mcp://{project_id}/tags

可选:运行HTTP服务器

如果你更喜欢使用HTTP,请设置相同的环境并运行:

rustymcp

默认情况下,服务器会绑定第一个可用的端口 4100–4199 (或者 SERVER_PORT (如果已设置)。示例:

curl -sS -X POST http://127.0.0.1:4100/index \
  -H 'Content-Type: application/json' \
  -d '{"text":"hello from http"}'

退货 { "chunks_indexed": <number>, "chunk_size": <number>, "inserted": <number>, "updated": <number>, "skipped_duplicates": <number> } 成功时。

遇到问题了吗?看看这个 docs/Troubleshooting.md。

开发者文档

如果你想扩展Rusty Memory或了解其架构:

  • 配置参考和客户端代码片段: docs/Configuration.md
  • 架构和模块概述: docs/Design.md
  • 编辑器集成示例: docs/Editors.md
  • 开发指南(样式、测试、脚本): docs/Development.md

许可证

根据以下许可协议授权 PolyForm 非商业许可 1.0.0非商业使用免费。

支持

欢迎提出问题和提交拉取请求(PRs)。如果快速入门指南中的任何内容不清楚,请提出问题,以便我们进一步优化新用户引导流程,使其更加顺畅。