MCP-Grep服务器使用说明
项目简介
MCP-Grep 是一个 MCP 服务器的实现,它将强大的 'grep' 命令行工具的功能通过 Model Context Protocol (MCP) 接口暴露出来,使得 LLM 客户端能够以标准化的方式调用 'grep' 功能进行文本搜索。它允许 LLM 应用利用系统底层的 'grep' 工具,实现高效的文件内容查找、日志分析等任务。
主要功能点
- 资源 (Resource):
- 提供 'grep://info' 资源,用于查询和获取底层 'grep' 二进制程序的详细信息,例如路径、版本和特性支持(如 PCRE 和颜色支持)。
- 工具 (Tool):
- 提供 'grep' 工具,允许客户端通过 MCP 协议调用系统的 'grep' 命令。支持丰富的参数配置,包括:
- 模式匹配:支持正则表达式和固定字符串匹配。
- 大小写敏感:可配置大小写敏感或不敏感搜索。
- 上下文行:支持显示匹配行前后的上下文内容。
- 递归搜索:支持在目录及其子目录中递归搜索。
- 结果限制:可以限制返回的最大匹配数量。
- 文件过滤:支持通过文件模式匹配来限定搜索的文件类型。
- 提供 'grep' 工具,允许客户端通过 MCP 协议调用系统的 'grep' 命令。支持丰富的参数配置,包括:
- 自然语言提示 (Natural Language Prompts):
- 服务器具备一定的自然语言理解能力,能够解析简单的自然语言搜索提示,并将其转换为 'grep' 工具的参数,方便 LLM 应用更自然地调用搜索功能。
- MCP Inspector 集成:
- 内置 MCP Inspector 集成,方便开发者进行交互式调试和测试 'grep' 功能,通过 Web 界面探索资源、测试工具、查看结果和调试查询。
安装步骤
- 确保你的系统已安装 Python 和 pip。
- 打开终端,运行以下命令安装 'mcp-grep':
pip install mcp-grep
服务器配置
MCP 客户端需要配置 MCP-Grep 服务器的启动信息才能连接和使用其功能。以下是 MCP 客户端的 JSON 格式配置信息,用于连接 'mcp-grep-server':
{ "serverName": "mcp-grep", "command": "mcp-grep-server", "args": [], "transport": "stdio" }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,例如 "mcp-grep"。
- 'command': 启动 MCP-Grep 服务器的命令,这里是 'mcp-grep-server'。
- 'args': 启动命令的参数,本例中无需额外参数,所以为空数组 '[]'。
- 'transport': MCP 通信传输协议,这里使用 'stdio' (标准输入输出)。
注意: MCP 客户端需要能够执行 'mcp-grep-server' 命令。请确保 'mcp-grep-server' 命令已添加到系统的 PATH 环境变量中,或者在配置 'command' 时使用 'mcp-grep-server' 的完整路径。
基本使用方法
-
启动 MCP-Grep 服务器: 在终端中运行 'mcp-grep-server' 命令,启动 MCP-Grep 服务器。
-
使用 MCP 客户端连接服务器: 配置 MCP 客户端,使用上面提供的 JSON 配置信息连接到正在运行的 MCP-Grep 服务器。
-
通过 MCP 客户端调用功能:
- 获取 grep 信息 (Resource): 客户端可以请求 'grep://info' 资源来获取 'grep' 二进制文件的信息。
- 使用 grep 工具 (Tool): 客户端可以使用 'grep' 工具执行文本搜索,需要提供搜索模式 ('pattern') 和搜索路径 ('paths') 等参数。具体参数和使用方式请参考 MCP 客户端的文档和 MCP-Grep 的 API 文档。
-
使用 MCP Inspector (可选): 运行 'mcp-grep-inspector' 命令,启动带有 MCP-Grep 服务器的 MCP Inspector,通过 Web 界面进行交互式测试和调试。
示例 (使用 MCP Python 客户端):
from mcp.client import MCPClient # 连接到 MCP-Grep 服务器 (假设已配置好客户端并运行了服务器) client = MCPClient() # 获取 grep 二进制文件信息 grep_info = client.get_resource("grep://info") print(grep_info) # 使用 grep 工具搜索文件 search_result = client.use_tool( "grep", { "pattern": "example pattern", "paths": ["./path/to/your/file.txt"], "ignore_case": True, } ) print(search_result)
请参考仓库的 README.md 文件和测试用例,了解更多高级用法和参数配置。
信息
分类
开发者工具