上下文优化服务

一个基于Redis和内存缓存的MCP服务器,用于优化和扩展大型聊天历史记录的上下文窗口。

  • by degenhero
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 degenhero/context-optimizer-mcp

使用说明

上下文优化器MCP

一种MCP(模型上下文协议)服务器,使用Redis和内存缓存来优化和扩展大型聊天历史的上下文窗口。

特性

  • 双层缓存:将快速内存LRU缓存与持久Redis存储相结合
  • 智能上下文管理:自动汇总旧消息,以在令牌限制内保持上下文
  • 速率限制:基于Redis的速率限制和突发保护
  • API兼容性:使用增强的上下文处理替换Anthropic API
  • 指标收集:内置性能监控和日志记录

运作原理

此MCP服务器充当您的应用程序和LLM提供商之间的中间件(目前支持Anthropic的Claude模型)。它通过以下策略智能地管理对话上下文:

  1. 上下文窗口优化:当对话接近模型的令牌限制时,旧消息会自动摘要,同时保留关键信息。

  2. 高效缓存:

    • 用于频繁访问的对话摘要的内存LRU缓存
    • Redis用于持久、分布式存储对话历史和摘要
  3. 透明处理:服务器自动处理所有上下文管理,同时保持与标准API的兼容性。

入门指南

先决条件

  • Node.js 18+
  • Redis服务器(本地或远程)
  • 无烟煤API键

安装选项

1.使用MCP客户端

安装和运行此服务器的最简单方法是使用MCP客户端:

# Install via npx
npx mcp install degenhero/context-optimizer-mcp

# Or using uvx
uvx mcp install degenhero/context-optimizer-mcp

确保在安装过程中提示时设置Anthropic API密钥。

2.手动安装

# Clone the repository
git clone https://github.com/degenhero/context-optimizer-mcp.git
cd context-optimizer-mcp

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

# Start the server
npm start

3.使用Docker

# Clone the repository
git clone https://github.com/degenhero/context-optimizer-mcp.git
cd context-optimizer-mcp

# Build and start with Docker Compose
docker-compose up -d

这将启动MCP服务器和Redis实例。

配置

通过编辑配置服务器 .env 文件:

# Server configuration
PORT=3000

# Anthropic API key
ANTHROPIC_API_KEY=your_anthropic_api_key

# Redis configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# Caching settings
IN_MEMORY_CACHE_MAX_SIZE=1000
REDIS_CACHE_TTL=86400  # 24 hours in seconds

# Model settings
DEFAULT_MODEL=claude-3-opus-20240229
DEFAULT_MAX_TOKENS=4096

API使用

服务器公开了一个兼容的API端点,该端点与标准的Claude API类似,具有附加的上下文优化功能:

// Example client usage
const response = await fetch('http://localhost:3000/v1/messages', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'claude-3-opus-20240229',
    messages: [
      { role: 'user', content: 'Hello!' },
      { role: 'assistant', content: 'How can I help you today?' },
      { role: 'user', content: 'Tell me about context management.' }
    ],
    max_tokens: 1000,
    // Optional MCP-specific parameters:
    conversation_id: 'unique-conversation-id', // For context tracking
    context_optimization: true, // Enable/disable optimization
  }),
});

const result = await response.json();

其他端点

  • GET /v1/token-count?text=your_text&model=model_name:计数文本字符串中的标记
  • GET /health:服务器健康检查
  • GET /metrics:查看服务器性能指标

测试

包含一个测试脚本来演示上下文优化的工作原理:

# Run the test script
npm run test:context

这将启动一个交互式会话,您可以在其中进行对话,并查看上下文如何随着其增长而优化。

高级功能

上下文摘要

当对话超过模型令牌限制的80%时,服务器会自动总结较旧的消息。此摘要已缓存以供将来使用。

对话连续性

通过提供一致的 conversation_id 在请求中,服务器可以跨多个API调用维护上下文,即使单个请求会超过令牌限制。

性能注意事项

  • 内存缓存为活动对话提供最快的访问
  • Redis支持跨服务器实例的持久性和共享
  • 摘要操作会给超过令牌阈值的请求增加一些延迟

文档

其他文档可以在 docs/ 目录:

许可证

麻省理工学院