ripgrep搜索服务

一个提供ripgrep搜索功能的MCP服务器,支持多种搜索和文件管理工具。

  • by AtefAndrus
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 AtefAndrus/mcp-ripgrep

使用说明

@atef_andrus/mcp-ripgrep

提供以下功能的MCP服务器 ripgrep 搜索能力。

先决条件

  • ripgrep (rg)已安装并可在PATH上使用
  • Node.js 22+或Bun 1.3+

安装

npm install @atef_andrus/mcp-ripgrep

用法

用作MCP服务器

将以下内容添加到MCP客户端配置中:

{
  "mcpServers": {
    "ripgrep": {
      "command": "npx",
      "args": ["@atef_andrus/mcp-ripgrep"]
    }
  }
}

启动选项

选项 描述
--allow-dir <path> 将搜索范围限制在指定目录(可以多次指定)
--max-result-chars <number> 结果中的最大字符数。超过线边界时截断(默认值:50000)
--max-output-bytes <number> ripgrep输出的最大字节数。超出时终止进程并截断结果(默认值:20 MB)

带有启动选项的配置示例:

{
  "mcpServers": {
    "ripgrep": {
      "command": "npx",
      "args": [
        "@atef_andrus/mcp-ripgrep",
        "--allow-dir", "/home/user/project",
        "--max-result-chars", "50000",
        "--max-output-bytes", "20000000"
      ]
    }
  }
}

工具

工具 说明
search 使用正则表达式、文字字符串、多行匹配、OR匹配、上下文行和各种过滤器进行模式搜索。在结果前显示匹配计数和文件计数的摘要
search-and-replace 搜索并替换预览(只读)。支持多行匹配和捕获组($1,${name})
search-count 统计每个文件的匹配项(按行数或总匹配项)。支持排序结果
search-files 列出与模式匹配或不匹配的文件
list-files 列出搜索范围内的所有文件
list-file-types 列出ripgrep支持的文件类型

关键参数

参数 说明
pattern 搜索模式(默认为正则表达式)
path 要搜索的目录或文件
fixedStrings 将模式视为文字字符串
caseSensitive true =区分大小写, false =不区分大小写,省略=智能大小写
fileType 按文件类型过滤(例如。, "ts", ["ts", "js"]).字符串或数组
fileTypeNot 排除文件类型(例如。, "json", ["json", "md"]).字符串或数组
glob 按球状图案过滤(例如。, "*.test.ts", ["src/**", "!vendor/**"]).字符串或数组
includeHidden 包含隐藏文件
followSymlinks 遵循符号链接
maxDepth 最大目录遍历深度
noIgnore 忽略.gitignore规则和通常被排除在外的搜索文件
multiline 启用多行匹配(函数签名、导入块等)
additionalPatterns OR匹配的其他模式(数组)
sortBy 对结果进行排序。搜索/搜索文件/列出文件: "path" "modified" "created".搜索计数: "path" "count" "count-asc"
maxCharacters 结果中的最大字符数。在线条边界处截断,并在超出时附加摘要

工具参数支持

参数 list-file-types list-files search search-and-replace search-count search-files
pattern - - o o o
path - o o o o o
fixedStrings - - o o o
caseSensitive - - o o o
wordMatch - - o o o
multiline - - o o - -
fileType - o o o o o
fileTypeNot - o o o o o
glob - o o o o o
maxResults - - o o - -
contextLines - - o - - -
beforeContext - - o - - -
afterContext - - o - - -
invertMatch - - o - -
includeHidden - o o o o o
followSymlinks - o o o o o
maxDepth - o o o o o
additionalPatterns - - o - - -
jsonOutput - - o - - -
maxColumns - - o - - -
noIgnore - o o o o o
sortBy - o o - o o
maxCharacters o o o o o
replacement - - - o - -
onlyMatching - - - o - -
countMode - - -
includeZero - - -

发展

# Install dependencies
bun install

# Run tests
bun test

# Type check
bunx tsc --noEmit

# Lint and format
bunx biome check --write .

# Build
bunx tsc

# Start in development mode
bun run dev

安全

  • 此服务器通过以下方式将参数作为数组传递 spawn("rg", args) (无外壳插值)。图案和路径放置在 -- 分离器,防止旗帜注入。
  • 这 --allow-dir 选项将搜索范围限制为指定的目录。使用以下命令将路径解析为绝对路径 path.resolve() 并通过前缀匹配进行验证。
  • 限制:何时 followSymlinks 如果启用,符号链接可能允许访问允许范围之外的目录。使用时请注意这一点 --allow-dir 连同 followSymlinks.

许可证

麻省理工学院