这是一个基于grep
命令行工具的模型上下文协议(MCP)服务器,具备强大的文本搜索能力。支持使用自然语言描述和直接的正则表达式模式在文件和目录中搜索指定模式。
本项目是一个模型上下文协议(MCP)服务器,它借助grep
命令行工具,提供强大的文本搜索能力。你可以使用自然语言描述或直接的正则表达式模式,在文件和目录中进行搜索。
child_process.spawn
安全执行命令。# 全局安装
npm install -g @247arjun/mcp-grep
# 或在项目中本地安装
npm install @247arjun/mcp-grep
# 克隆仓库
git clone https://github.com/247arjun/mcp-grep.git
cd mcp-grep
# 安装依赖
npm install
# 构建项目
npm run build
# 可选:全局链接
npm link
# 直接从GitHub安装
npm install -g git+https://github.com/247arjun/mcp-grep.git
将以下内容添加到Claude桌面配置文件中: 位置:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%/Claude/claude_desktop_config.json
配置内容:
{
"mcpServers": {
"mcp-grep": {
"command": "mcp-grep",
"args": []
}
}
}
替代方法:使用npx(无需全局安装)
{
"mcpServers": {
"mcp-grep": {
"command": "npx",
"args": ["@247arjun/mcp-grep"]
}
}
}
本地开发设置
{
"mcpServers": {
"mcp-grep": {
"command": "node",
"args": ["/绝对路径/mcp-grep/build/index.js"]
}
}
}
添加配置后,重启Claude桌面以加载MCP服务器。
测试服务器是否正常工作:
# 测试构建好的服务器
node build/index.js
# 应显示:"Grep MCP Server running on stdio"
# 按Ctrl+C退出
grep_search_intent
使用自然语言描述进行搜索。 参数:
intent
(字符串):简洁的英文描述(如 "email addresses", "TODO comments")target
(字符串):要搜索的文件或目录路径case_sensitive
(布尔值,可选):区分大小写搜索(默认:false)max_results
(数字,可选):限制结果数量show_context
(布尔值,可选):显示周围的行(默认:false)context_lines
(数字,可选):上下文行数(默认:2)示例:
{
"intent": "email addresses",
"target": "./src",
"show_context": true,
"context_lines": 1
}
grep_regex
使用直接的正则表达式模式进行搜索。 参数:
pattern
(字符串):正则表达式模式target
(字符串):要搜索的文件或目录路径case_sensitive
(布尔值,可选):区分大小写搜索whole_words
(布尔值,可选):仅匹配全词invert_match
(布尔值,可选):显示不匹配的行max_results
(数字,可选):限制结果数量show_context
(布尔值,可选):显示上下文行context_lines
(数字,可选):上下文行数量file_extensions
(数组,可选):按文件扩展名过滤示例:
{
"pattern": "function\\s+\\w+\\s*\\(",
"target": "./src",
"file_extensions": ["js", "ts"],
"show_context": true
}
grep_count
统计模式的匹配数量。 参数:
pattern
(字符串):要统计的模式target
(字符串):搜索目标case_sensitive
(布尔值,可选):区分大小写whole_words
(布尔值,可选):全词匹配by_file
(布尔值,可选):显示每个文件的匹配数量file_extensions
(数组,可选):文件扩展名过滤grep_files_with_matches
列出包含指定模式的文件。 参数:
pattern
(字符串):搜索模式target
(字符串):要搜索的目录case_sensitive
(布尔值,可选):区分大小写whole_words
(布尔值,可选):全词匹配file_extensions
(数组,可选):要包含的文件扩展名exclude_patterns
(数组,可选):要排除的文件模式grep_advanced
使用自定义参数执行grep(适用于高级用户)。 参数:
args
(数组):grep参数数组(不包括 'grep' 本身)服务器识别以下自然语言意图:
{
"tool": "grep_search_intent",
"intent": "email addresses",
"target": "./src",
"show_context": true
}
{
"tool": "grep_search_intent",
"intent": "todo comments",
"target": "./",
"file_extensions": ["js", "ts", "py"]
}
{
"tool": "grep_regex",
"pattern": "^\\s*function\\s+\\w+",
"target": "./src",
"file_extensions": ["js"]
}
{
"tool": "grep_count",
"pattern": "async",
"target": "./src",
"by_file": true
}
{
"tool": "grep_files_with_matches",
"pattern": "^import",
"target": "./src",
"file_extensions": ["js", "ts"]
}
# 开发时自动重建
npm run dev
# 生产环境构建
npm run build
# 启动服务器
npm start
mcp-grep/
├── src/
│ └── index.ts # 主服务器实现
├── build/ # 编译后的JavaScript输出
├── package.json # 项目配置
├── tsconfig.json # TypeScript配置
└── README.md # 本文件
"Command not found" 错误
npm install -g @247arjun/mcp-grep
"command": "npx", "args": ["@247arjun/mcp-grep"]
"Permission denied" 错误
chmod +x build/index.js
npm run build
MCP服务器未在Claude中显示
"grep command not found"
通过设置环境变量启用详细日志记录:
# 开发时使用
DEBUG=1 node build/index.js
# 使用示例输入进行测试
echo '{"jsonrpc": "2.0", "method": "initialize", "params": {}}' | node build/index.js
spawn
且shell: false
来防止命令注入。文档中未提及相关信息。