MCP-Grep服务器使用说明

项目简介

MCP-Grep 是一个 MCP 服务器的实现,它将强大的 'grep' 命令行工具的功能通过 Model Context Protocol (MCP) 接口暴露出来,使得 LLM 客户端能够以标准化的方式调用 'grep' 功能进行文本搜索。它允许 LLM 应用利用系统底层的 'grep' 工具,实现高效的文件内容查找、日志分析等任务。

主要功能点

  • 资源 (Resource):
    • 提供 'grep://info' 资源,用于查询和获取底层 'grep' 二进制程序的详细信息,例如路径、版本和特性支持(如 PCRE 和颜色支持)。
  • 工具 (Tool):
    • 提供 'grep' 工具,允许客户端通过 MCP 协议调用系统的 'grep' 命令。支持丰富的参数配置,包括:
      • 模式匹配:支持正则表达式和固定字符串匹配。
      • 大小写敏感:可配置大小写敏感或不敏感搜索。
      • 上下文行:支持显示匹配行前后的上下文内容。
      • 递归搜索:支持在目录及其子目录中递归搜索。
      • 结果限制:可以限制返回的最大匹配数量。
      • 文件过滤:支持通过文件模式匹配来限定搜索的文件类型。
  • 自然语言提示 (Natural Language Prompts):
    • 服务器具备一定的自然语言理解能力,能够解析简单的自然语言搜索提示,并将其转换为 'grep' 工具的参数,方便 LLM 应用更自然地调用搜索功能。
  • MCP Inspector 集成:
    • 内置 MCP Inspector 集成,方便开发者进行交互式调试和测试 'grep' 功能,通过 Web 界面探索资源、测试工具、查看结果和调试查询。

安装步骤

  1. 确保你的系统已安装 Python 和 pip。
  2. 打开终端,运行以下命令安装 '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' 的完整路径。

基本使用方法

  1. 启动 MCP-Grep 服务器: 在终端中运行 'mcp-grep-server' 命令,启动 MCP-Grep 服务器。

  2. 使用 MCP 客户端连接服务器: 配置 MCP 客户端,使用上面提供的 JSON 配置信息连接到正在运行的 MCP-Grep 服务器。

  3. 通过 MCP 客户端调用功能:

    • 获取 grep 信息 (Resource): 客户端可以请求 'grep://info' 资源来获取 'grep' 二进制文件的信息。
    • 使用 grep 工具 (Tool): 客户端可以使用 'grep' 工具执行文本搜索,需要提供搜索模式 ('pattern') 和搜索路径 ('paths') 等参数。具体参数和使用方式请参考 MCP 客户端的文档和 MCP-Grep 的 API 文档。
  4. 使用 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 文件和测试用例,了解更多高级用法和参数配置。

信息

分类

开发者工具