上下文优化器MCP
一种MCP(模型上下文协议)服务器,使用Redis和内存缓存来优化和扩展大型聊天历史的上下文窗口。
特性
- 双层缓存:将快速内存LRU缓存与持久Redis存储相结合
- 智能上下文管理:自动汇总旧消息,以在令牌限制内保持上下文
- 速率限制:基于Redis的速率限制和突发保护
- API兼容性:使用增强的上下文处理替换Anthropic API
- 指标收集:内置性能监控和日志记录
运作原理
此MCP服务器充当您的应用程序和LLM提供商之间的中间件(目前支持Anthropic的Claude模型)。它通过以下策略智能地管理对话上下文:
- 上下文窗口优化:当对话接近模型的令牌限制时,旧消息会自动摘要,同时保留关键信息。
- 高效缓存:
- 用于频繁访问的对话摘要的内存LRU缓存 - Redis用于持久、分布式存储对话历史和摘要
- 透明处理:服务器自动处理所有上下文管理,同时保持与标准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 start3.使用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=4096API使用
服务器公开了一个兼容的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/ 目录:
许可证
麻省理工学院
