内存缓存服务器

一个模型上下文协议(MCP)服务器,通过高效缓存语言模型交互之间的数据来减少令牌消耗。适用于任何MCP客户端和使用令牌的语言模型。

  • by tosin2013
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 tosin2013/mcp-memory-cache-server

使用说明

内存缓存服务器

一种模型上下文协议(MCP)服务器,通过在语言模型交互之间高效缓存数据来减少令牌消耗。适用于任何MCP客户端和使用令牌的任何语言模型。

安装

通过Smithery安装

通过以下方式自动安装Claude Desktop的内存缓存服务器 史密瑟里:

npx -y @smithery/cli install @tosin2013/mcp-memory-cache-server --client claude

手动安装

  1. 克隆存储库:
git clone https://github.com/tosin2013/mcp-memory-cache-server.git
cd mcp-memory-cache-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build
  1. 添加到MCP客户端设置中:
{
  "mcpServers": {
    "memory-cache": {
      "command": "node",
      "args": ["/path/to/ib-mcp-cache-server/build/index.js"]
    }
  }
}
  1. 当您使用MCP客户端时,服务器将自动启动

验证它是否有效

当服务器正常运行时,您将看到:

  1. 终端中的消息:“内存缓存MCP服务器在stdio上运行”
  2. 在多次访问同一数据时提高了性能
  3. 无需您执行任何操作-缓存会自动进行

您可以通过以下方式验证服务器是否正在运行:

  1. 打开MCP客户端
  2. 在启动服务器的终端中查找任何错误消息
  3. 执行从缓存中受益的操作(例如多次读取同一文件)

配置

服务器可以通过以下方式配置 config.json 或环境变量:

{
  "maxEntries": 1000,        // Maximum number of items in cache
  "maxMemory": 104857600,    // Maximum memory usage in bytes (100MB)
  "defaultTTL": 3600,        // Default time-to-live in seconds (1 hour)
  "checkInterval": 60000,    // Cleanup interval in milliseconds (1 minute)
  "statsInterval": 30000     // Stats update interval in milliseconds (30 seconds)
}

配置设置说明

  1. maxEntries (默认值:1000)

    • 缓存中可存储的最大项目数
    • 防止缓存无限增长
    • 超过时,首先删除最旧的未使用项目
  2. 最大内存 (默认值:100MB)

    • 最大内存使用量(字节)
    • 防止内存消耗过多
    • 超过时,将删除最近最少使用的项目
  3. 默认TTL (默认值:1小时)

    • 默认情况下,项目在缓存中停留的时间
    • 在此时间之后,项目将自动删除
    • 防止过时数据消耗内存
  4. checkInterval (默认值:1分钟)

    • 服务器多久检查一次过期项目
    • 较低的值使内存使用更准确
    • 值越高,CPU使用率越低
  5. stats间隔 (默认值:30秒)

    • 缓存统计信息更新的频率
    • 影响命中率的准确性
    • 帮助监控缓存有效性

它如何减少代币消费

内存缓存服务器通过自动存储需要在您和语言模型之间重新发送的数据来减少令牌消耗。您不需要做任何特殊的事情——当您通过MCP客户端与任何语言模型交互时,缓存会自动发生。

以下是一些缓存内容的示例:

1.文件内容缓存

多次读取文件时:

  • 第一次:读取并缓存完整文件内容
  • 后续时间:从缓存中检索内容,而不是重新读取文件
  • 结果:用于重复文件操作的令牌更少

2.计算结果

进行计算或分析时:

  • 第一次:执行完整计算并缓存结果
  • 后续时间:如果输入相同,则从缓存中检索结果
  • 结果:用于重复计算的令牌更少

3.频繁访问的数据

当多次需要相同的数据时:

  • 第一次:数据被处理和缓存
  • 后续时间:从缓存中检索数据,直到TTL到期
  • 结果:用于访问相同信息的令牌更少

自动缓存管理

服务器通过以下方式自动管理缓存过程:

  • 首次遇到时存储数据
  • 在缓存数据可用时提供服务
  • 根据设置删除旧/未使用的数据
  • 通过统计数据跟踪有效性

优化提示

1.设置适当的TTL

  • 更短,适用于频繁更改的数据
  • 静态内容更长

2.调整内存限制

  • 更高的缓存(更多的令牌节省)
  • 如果内存使用是一个问题,请降低

3.监控缓存统计信息

  • 高点击率=良好的代币节省
  • 低命中率=调整TTL或限制

环境变量配置

您可以使用MCP设置中的环境变量覆盖config.json设置:

{
  "mcpServers": {
    "memory-cache": {
      "command": "node",
      "args": ["/path/to/build/index.js"],
      "env": {
        "MAX_ENTRIES": "5000",
        "MAX_MEMORY": "209715200",  // 200MB
        "DEFAULT_TTL": "7200",      // 2 hours
        "CHECK_INTERVAL": "120000",  // 2 minutes
        "STATS_INTERVAL": "60000"    // 1 minute
      }
    }
  }
}

您还可以指定自定义配置文件位置:

{
  "env": {
    "CONFIG_PATH": "/path/to/your/config.json"
  }
}

服务器将:

  1. 在其目录中查找config.json
  2. 应用任何环境变量覆盖
  3. 如果未指定,则使用默认值

在实践中测试缓存

要查看缓存的运行情况,请尝试以下场景:

  1. 文件读取测试

    • 读取并分析大文件
    • 再次询问有关文件的相同问题
    • 由于文件内容被缓存,第二个响应应该更快
  2. 数据分析测试

    • 对一些数据进行分析
    • 再次请求相同的分析
    • 第二次分析应使用缓存结果
  3. 项目导航测试

    • 探索项目的结构
    • 再次查询相同的文件/目录
    • 目录列表和文件内容将从缓存中提供

当您注意到以下情况时,缓存正在工作:

  • 对重复操作的响应更快
  • 关于不变内容的一致答案
  • 无需重新读取未更改的文件