关于 Context Optimizer MCP
Context Optimizer MCP 是面向使用 Anthropic Claude 模型的应用的 MCP 服务,用于管理较长的聊天记录。它结合内存与 Redis 缓存,并自动摘要旧消息,以控制对话的令牌用量。
主要功能
- 01内存 LRU 与 Redis 双层缓存
- 02自动摘要较早的消息
- 03基于 Redis 的速率限制
- 04兼容 Anthropic API 的端点
- 05性能指标与日志记录
适用场景
- 01将较长的 Claude 对话控制在令牌限制内
- 02在多个服务实例间共享缓存的对话数据
- 03查询令牌数与服务健康状态
- 04监控请求性能
MCP 相关
它在应用与 LLM 提供商之间充当中间件,为 MCP 客户端管理对话上下文,并提供带上下文优化功能的 Claude API 兼容端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Context Optimizer MCP
一个 MCP(Model Context Protocol)服务,利用 Redis 和内存缓存优化并扩展大型聊天历史记录的上下文窗口。
功能
- 双层缓存:结合快速的内存 LRU 缓存与持久化 Redis 存储
- 智能上下文管理:自动总结较早的消息,使上下文保持在令牌限制范围内
- 速率限制:基于 Redis 的速率限制,并提供突发保护
- API 兼容性:可直接替换 Anthropic API,并增强上下文处理能力
- 指标收集:内置性能监控和日志记录
工作原理
此 MCP 服务充当应用程序与大模型提供商(目前支持 Anthropic 的 Claude 模型)之间的中间件。它通过以下策略智能管理对话上下文:
-
上下文窗口优化:当对话接近模型的令牌限制时,自动总结较早的消息,同时保留关键信息。
-
高效缓存:
- 使用内存 LRU 缓存存储频繁访问的对话摘要
- 使用 Redis 持久化、分布式存储对话历史和摘要
-
透明处理:服务会自动处理所有上下文管理,同时保持与标准 API 的兼容性。
开始使用
前提条件
- Node.js 18+
- Redis 服务(本地或远程)
- Anthropic 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/ 目录:
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。