使用说明
@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.
许可证
麻省理工学院