项目简介

'Braffolk_mcp-summarization-functions' 是一个基于 Model Context Protocol (MCP) 构建的服务器,专注于为 AI Agent 提供强大的文本摘要功能。它旨在解决 AI Agent 在处理大量文本输出时遇到的上下文窗口限制问题,通过智能的摘要服务,帮助 Agent 更高效地利用上下文信息,提升性能和可靠性。

主要功能点

  • 智能文本摘要: 能够对命令输出、文件内容、目录结构和任意文本进行智能摘要,提取关键信息。
  • AI Agent 上下文优化: 通过提供简洁的摘要而非完整内容,有效防止 AI Agent 的上下文窗口溢出,降低失败率。
  • 灵活的模型支持: 支持多种主流 AI 模型提供商,如 Anthropic, OpenAI, Google Gemini,并允许配置不同的模型。
  • 可定制的摘要策略: 允许通过提示 (hint) 和输出格式 (output_format) 定制摘要内容,满足不同场景的需求。
  • 内容缓存与检索: 对于超过阈值的原始内容进行缓存,并提供 ID 用于后续按需检索完整内容。

安装步骤

  1. 确保你的环境中已安装 Node.js 和 npm。

  2. 克隆或下载此仓库的代码。

  3. 在项目根目录下,运行以下命令安装依赖:

    npm install mcp-summarization-functions

服务器配置

为了让 MCP 客户端能够连接到 'summarization-functions' 服务器,你需要在 MCP 客户端的配置文件中添加以下服务器配置信息。请注意,你需要根据你的实际环境修改 'path/to/summarization-functions' 为你本地仓库的路径。

{
  "mcpServers": {
    "MUST_USE_summarization": {  // 服务器名称,可以自定义
      "command": "node",       // 启动服务器的命令,这里使用 Node.js 运行 JavaScript 文件
      "args": [                // 传递给启动命令的参数
        "path/to/summarization-functions/build/index.js" // 服务器入口文件路径,请替换为实际路径
      ],
      "env": {                 // 环境变量配置
        "PROVIDER": "ANTHROPIC", // 指定 AI 模型提供商,可选值:ANTHROPIC, OPENAI, OPENAI-COMPATIBLE, GOOGLE
        "API_KEY": "your-api-key", //  API 密钥,请替换为你的 API 密钥
        "MODEL_ID": "claude-3-5-sonnet-20241022", //  使用的模型 ID,可以根据 PROVIDER 选择合适的模型
        "MCP_WORKING_DIR": "default_working_directory" //  MCP 服务器的工作目录,用于解析相对路径,根据需要配置
      }
    }
  }
}

配置说明:

  • '"MUST_USE_summarization"': 是你为该服务器定义的名称,在 MCP 客户端中引用时会用到。你可以自定义这个名称。
  • '"command": "node"' 和 '"args": [...]': 指定了启动 'summarization-functions' 服务器的命令。这里使用 'node' 运行 'build/index.js' 文件,这是编译后的服务器入口文件。你需要根据你的项目实际路径修改 '"args"' 中的路径。
  • '"env": {...}': 配置服务器运行所需的环境变量:
    • '"PROVIDER"': 必填,指定要使用的 AI 模型提供商。支持 'ANTHROPIC' (Claude), 'OPENAI' (GPT), 'OPENAI-COMPATIBLE' (兼容 OpenAI API 的服务,如 Azure OpenAI), 'GOOGLE' (Gemini)。
    • '"API_KEY"': 必填,所选 'PROVIDER' 的 API 密钥。请务必替换为你的有效 API 密钥。
    • '"MODEL_ID"': 可选,指定要使用的具体模型。如果不设置,将使用各 'PROVIDER' 的默认模型。你可以根据需要选择更具体的模型,例如 'gpt-4-turbo-preview', 'claude-3-5-sonnet-20241022', 'gemini-2.0-flash-exp' 等。
    • '"MCP_WORKING_DIR"': 可选,指定 MCP 服务器的工作目录。当处理文件路径时,服务器会尝试从这个目录解析相对路径。如果你的 Agent 需要操作特定目录下的文件,可以设置此环境变量。

环境变量配置示例:

你可以根据你使用的 AI 模型平台,选择合适的配置,例如:

  • Anthropic 配置:

    "env": {
      "PROVIDER": "ANTHROPIC",
      "API_KEY": "your-anthropic-key",
      "MODEL_ID": "claude-3-5-sonnet-20241022"
    }
  • OpenAI 配置:

    "env": {
      "PROVIDER": "OPENAI",
      "API_KEY": "your-openai-key",
      "MODEL_ID": "gpt-4-turbo-preview"
    }
  • Azure OpenAI 配置:

    "env": {
      "PROVIDER": "OPENAI-COMPATIBLE",
      "API_KEY": "your-azure-key",
      "PROVIDER_BASE_URL": "https://your-resource.openai.azure.com", // 替换为你的 Azure OpenAI 资源 URL
      "MODEL_ID": "your-deployment-name" // 替换为你的 Azure OpenAI 部署名称
    }
  • Google Gemini 配置:

    "env": {
      "PROVIDER": "GOOGLE",
      "API_KEY": "your-google-key",
      "MODEL_ID": "gemini-2.0-flash-exp"
    }

基本使用方法

配置完成后,你的 MCP 客户端就可以通过调用 'summarization-functions' 服务器提供的工具来使用文本摘要功能了。

可用的工具包括:

  • 'summarize_command': 执行命令并返回命令输出的摘要。

    • 参数:
      • 'command' (string, 必填): 要执行的命令。
      • 'cwd' (string, 必填): 命令执行的工作目录。
      • 'hint' (string, 可选): 摘要的关注点提示,例如 '"security_analysis"', '"api_surface"', '"error_handling"' 等。
      • 'output_format' (string, 可选): 摘要的输出格式,例如 '"text"', '"json"', '"markdown"', '"outline"',默认为 '"text"'。
  • 'summarize_files': 读取并摘要一个或多个文件的内容。

    • 参数:
      • 'paths' (array of string, 必填): 文件路径数组,相对于 'cwd'。
      • 'cwd' (string, 必填): 文件路径解析的工作目录。
      • 'hint' (string, 可选): 摘要的关注点提示。
      • 'output_format' (string, 可选): 摘要的输出格式。
  • 'summarize_directory': 获取并摘要目录结构。

    • 参数:
      • 'path' (string, 必填): 目录路径,相对于 'cwd'。
      • 'cwd' (string, 必填): 目录路径解析的工作目录。
      • 'recursive' (boolean, 可选): 是否递归包含子目录,默认为 'false'。
      • 'hint' (string, 可选): 摘要的关注点提示。
      • 'output_format' (string, 可选): 摘要的输出格式。
  • 'summarize_text': 摘要任意文本内容。

    • 参数:
      • 'content' (string, 必填): 要摘要的文本内容。
      • 'type' (string, 必填): 内容类型,例如 '"log output"', '"API response"'。
      • 'hint' (string, 可选): 摘要的关注点提示。
      • 'output_format' (string, 可选): 摘要的输出格式。
  • 'get_full_content': 根据摘要 ID 获取原始完整内容。

    • 参数:
      • 'id' (string, 必填): 摘要内容的 ID。

使用示例 (MCP 客户端请求):

假设你的 Agent 需要总结当前工作目录下 'src' 目录的结构,可以使用 'summarize_directory' 工具,请求可能如下所示:

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "serverName": "MUST_USE_summarization", //  使用之前配置的服务器名称
    "toolName": "summarize_directory",
    "arguments": {
      "path": "src",
      "cwd": "/your/workspace/path" // 替换为你的实际工作目录路径
    }
  },
  "id": "123"
}

服务器会执行目录 listing,并返回目录结构的摘要信息。如果目录内容超过预设阈值,返回的摘要信息中会包含原始内容的 ID,你可以使用 'get_full_content' 工具通过 ID 获取完整目录 listing。

请参考仓库 README 和代码了解更详细的配置和使用方法。

信息

分类

AI与计算