项目简介

Infinite Context MCP 项目实现了一个功能强大的MCP服务器,旨在解决LLMs在处理长对话时受限于上下文窗口的问题。它通过智能压缩、向量存储、语义搜索和Instacart启发的查询理解(包括分类、重写和智能检索)等技术,提供了一个可扩展的“无限上下文”能力。服务器可作为LLM的外部工具调用,管理和检索历史信息,极大地提升LLM在复杂对话和知识密集型任务中的表现。

主要功能点

  • 无限上下文: 自动压缩长时间对话,仅保留关键信息,确保LLM始终拥有相关上下文。
  • 智能压缩: 利用LLM(如Claude)智能地总结对话内容,提取核心发现和决策。
  • 向量存储与语义搜索: 使用Pinecone进行高效的向量存储,实现对对话历史的语义搜索和检索。
  • 高级查询理解: 包含查询分类、查询重写(同义词、更广范围、扩展)和后处理筛选,提升搜索准确性和召回率。
  • 智能动作编排: 提供一个统一的'smart_action'工具,支持自然语言请求,自动理解意图、路由到相应工具并执行多步操作,实现无摩擦的上下文管理。
  • 会话与内存统计: 提供会话管理功能,并能查询内存使用和缓存统计信息。
  • 多种接口: 除了MCP协议,还提供了RESTful API,方便与ChatGPT等其他LLM平台集成。

安装步骤

  1. 安装Python依赖:
    pip install -r requirements.txt
  2. 配置API密钥: 复制示例环境文件并填写你的API密钥。
    cp env_example.txt .env
    编辑'.env'文件,添加你的Anthropic (可选), OpenAI 和 Pinecone API 密钥:
    ANTHROPIC_API_KEY=你的Anthropic_API_密钥
    OPENAI_API_KEY=你的OpenAI_API_密钥
    PINECONE_API_KEY=你的Pinecone_API_密钥
    PINECONE_INDEX_NAME=你的自定义索引名称 # 可选,默认为 "infinite-context-index"
  3. 获取API密钥:
  4. 运行MCP服务器:
    python main.py
    或者,运行RESTful API服务器以与ChatGPT等集成:
    python api_server.py

MCP客户端配置示例

MCP客户端需要配置服务器的启动命令和参数,以便与其建立连接和调用工具。以下是一个示例配置信息:

{
  "server_name": "infinite-context",
  "command": ["python", "main.py"],
  "args": [],
  "description": "一个功能强大的MCP服务器,为大型语言模型(LLMs)提供无限上下文和增强的检索能力,包括对话压缩、向量存储和高级查询理解。",
  "tools": [
    {
      "name": "save_context",
      "description": "保存当前对话或信息的上下文到向量数据库,以便后续检索和利用。",
      "parameters": {
        "summary": "对要保存内容的简要总结(必需)。",
        "topics": "与内容相关的关键词或主题列表(可选)。",
        "key_findings": "从中提取出的关键发现、决策或重要洞察列表(可选)。",
        "data": "要与上下文一同保存的结构化数据(JSON对象,可选)。"
      }
    },
    {
      "name": "search_context",
      "description": "在历史对话和已保存的上下文中进行搜索,查找相关信息。",
      "parameters": {
        "query": "要搜索的查询内容(必需)。",
        "top_k": "希望返回的最相关结果数量(整数,默认为3)。"
      }
    },
    {
      "name": "enhanced_search",
      "description": "执行高级搜索,结合查询理解、重写建议和智能过滤,提供更精准的上下文检索。",
      "parameters": {
        "query": "要搜索的查询内容(必需)。",
        "top_k": "希望返回的最相关结果数量(整数,默认为3)。",
        "use_rewrites": "是否使用LLM生成的查询重写来扩展搜索范围,以提高召回率(布尔值,默认为True)。",
        "min_relevance": "结果的最小相关性分数阈值,低于此分数的将不予返回(浮点数,默认为0.7)。"
      }
    },
    {
      "name": "classify_query",
      "description": "分析并分类用户查询的意图、类型和相关类别。",
      "parameters": {
        "query": "要分类的查询内容(必需)。",
        "context": "提供额外的上下文信息以帮助LLM更准确地分类查询(JSON对象,可选)。"
      }
    },
    {
      "name": "rewrite_query",
      "description": "为给定查询生成多种改写形式(如同义词、更广泛的词汇或扩展表达),以优化搜索或理解。",
      "parameters": {
        "query": "需要改写的原始查询内容(必需)。",
        "rewrite_types": "指定要生成的改写类型列表,可选值为 \"synonym\", \"broader\", \"expansion\", \"substitute\"(字符串数组,默认为所有类型)。"
      }
    },
    {
      "name": "smart_action",
      "description": "智能编排工具,允许用户通过自然语言描述来执行多种上下文管理操作,系统将自动理解意图、选择并组合工具。",
      "parameters": {
        "request": "用户的自然语言请求,描述希望进行的操作(必需,例如:'保存关于MCP设置的对话','查找关于Pinecone的讨论','显示内存统计')。",
        "conversation_context": "当前完整的对话上下文,如果提供了,系统将自动分析并从中提取总结、主题和关键发现(字符串,可选)。"
      }
    },
    {
      "name": "get_memory_stats",
      "description": "获取当前MCP服务器中存储的对话内存和查询理解缓存的统计信息。",
      "parameters": {}
    }
  ]
}

基本使用方法

运行 'main.py' 启动服务器后,你可以通过MCP客户端连接并调用其暴露的工具。例如:

  • 保存上下文: 你的LLM客户端可以调用 'save_context' 工具,提供对话的摘要、主题和关键发现。 或者,更智能地,使用 'smart_action' 工具,以自然语言请求让服务器自动分析和保存: 'smart_action({"request": "保存这篇关于配置MCP服务器的对话", "conversation_context": "我们讨论了MCP服务器的安装和配置细节..."})'
  • 搜索上下文: 调用 'enhanced_search' 或 'smart_action' 工具来查找历史信息。 'smart_action({"request": "查找过去关于查询理解的讨论"})'
  • 获取内存统计: 'smart_action({"request": "显示内存统计"})'

信息

分类

AI与计算