项目简介
'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 用于后续按需检索完整内容。
安装步骤
-
确保你的环境中已安装 Node.js 和 npm。
-
克隆或下载此仓库的代码。
-
在项目根目录下,运行以下命令安装依赖:
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与计算