BM25 缓存 MCP 服务器

使用说明内容(Markdown格式)

  • 项目简介
    • 该仓库实现一个简化版的 MCP 服务器,专注对 BM25 缓存的暴露与维护,通过 MCP 客户端可执行查询、刷新、以及获取缓存状态等操作,作为后端服务向上层应用提供快速的文本检索能力。
  • 主要功能点
    • 暴露 MCP 工具:
      • ping:健康检查接口,返回服务状态。
      • bm25_search:在指定集合上执行 BM25 查询,返回文本及分数。
      • bm25_refresh:强制刷新指定集合的 BM25 索引缓存。
      • bm25_cache_stats:返回当前缓存状态与元数据。
    • 启动与预热
      • 启动时可选择预热 BM25 缓存(prewarm)以降低首次请求延迟。
    • 数据源与连接
      • 通过私有配置(config_private.py)读取 Oracle 向量存储连接参数并创建 BM25 引擎。
    • 兼容与部署
      • 通过 FastMCP 框架提供 MCP 协议支持,默认使用 HTTP 传输。
  • 安装步骤
    • 安装依赖:确保 Python 环境就绪,安装所需依赖库(例如 FastMCP 等)。
    • 依赖与环境配置
      • 配置 BM25 的缓存参数(集合、文本列、批量大小等)可通过环境变量设置,例如 BM25_PREWARM_ENABLED、BM25_PREWARM_COLLECTIONS、BM25_TEXT_COLUMN、BM25_BATCH_SIZE 等。
    • 启动命令
      • 在项目根目录执行:python -m mcp_servers.server
      • 服务器将以檫用端口暴露 MCP 服务(默认端口 8010,可通过 MCP_PORT 环境变量调整)。
  • 服务器配置(MCP 客户端无需此处代码,提供给 MCP 客户端的启动信息)
    • server name: bm25-cache-server
    • command: python
    • args: ["-m", "mcp_servers.server"] 说明:服务器名称用于标识,命令与参数用于 MCP 客户端在启动时了解如何启动服务器进程。实际连接由 MCP 客户端通过 JSON-RPC 与暴露的工具入口进行交互。
  • 基本使用方法
    • 启动后,MCP 客户端可调用:
      • ping:获取服务是否健康
      • bm25_search(query, collection_name, top_n): 在指定集合上检索文本片段及分数
      • bm25_refresh(collection_name): 重新建立指定集合的 BM25 索引缓存
      • bm25_cache_stats(): 获取当前缓存统计信息
    • 典型用法场景
      • 在初次部署后对常用集合做预热,以降低首次查询延迟
      • 在模型检索流程中将 BM25 结果与语义检索结果进行对比或混合,以提升覆盖度

服务器信息