返回市场
MCP-过滤器

MCP-过滤器

作者:247arjun3 星标更新:2025-07-27

项目介绍

MCP Server for Grep

npm 版本 npm 下载量

这是一个使用 grep 命令行工具提供强大文本搜索能力的模型上下文协议(MCP)服务器。该服务器允许您通过自然语言描述或直接正则表达式模式在文件和目录中搜索模式。

<a href="https://glama.ai/mcp/servers/@247arjun/mcp-grep"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=1354657317,1504911835&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Grep Server MCP 服务器" /> </a>

功能

🧠 自然语言搜索

  • 使用简单的英语描述您要查找的内容
  • 自动转换为适当的正则表达式模式
  • 内置常见搜索模式(电子邮件、网址、电话号码等)

🔍 高级搜索能力

  • 直接正则表达式匹配
  • 递归目录搜索
  • 文件扩展名过滤
  • 区分大小写/不区分大小写的搜索
  • 整词匹配
  • 显示上下文行
  • 匹配计数
  • 列出包含匹配项的文件

🛡️ 安全第一

  • 使用 child_process.spawn 安全执行命令
  • 使用 Zod 模式进行输入验证
  • 无 Shell 注入漏洞
  • 路径验证和清理

安装

方法 1:NPM 安装(推荐)

# 全局安装
npm install -g @247arjun/mcp-grep

# 或者在项目中本地安装
npm install @247arjun/mcp-grep

方法 2:从源码安装

# 克隆仓库
git clone https://github.com/247arjun/mcp-grep.git
cd mcp-grep

# 安装依赖
npm install

# 构建项目
npm run build

# 可选:全局链接
npm link

方法 3:直接从 GitHub 安装

# 直接从 GitHub 安装
npm install -g git+https://github.com/247arjun/mcp-grep.git

配置

Claude Desktop 设置

添加到您的 Claude Desktop 配置文件中:

位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %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": ["/绝对路径/to/mcp-grep/build/index.js"]
    }
  }
}

添加配置后,请重启 Claude Desktop 以加载 MCP 服务器。

验证

测试服务器是否正常工作:

# 测试构建的服务器
node build/index.js

# 应显示:"Grep MCP 服务器正在 stdio 上运行"
# 按 Ctrl+C 退出

可用工具

1. grep_search_intent

使用自然语言描述进行搜索。

参数:

  • intent (字符串):简单英语描述(例如,“电子邮件地址”,“TODO 注释”)
  • target (字符串):要搜索的文件或目录路径
  • case_sensitive (布尔值,可选):区分大小写的搜索(默认:false)
  • max_results (数字,可选):限制结果数量
  • show_context (布尔值,可选):显示周围行(默认:false)
  • context_lines (数字,可选):上下文行数(默认:2)

示例:

{
  "intent": "电子邮件地址",
  "target": "./src",
  "show_context": true,
  "context_lines": 1
}

2. 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
}

3. grep_count

统计模式出现次数。

参数:

  • pattern (字符串):要计数的模式
  • target (字符串):搜索目标
  • case_sensitive (布尔值,可选):大小写敏感性
  • whole_words (布尔值,可选):整词匹配
  • by_file (布尔值,可选):按文件显示计数
  • file_extensions (数组,可选):文件扩展名过滤

4. grep_files_with_matches

列出包含模式的文件。

参数:

  • pattern (字符串):搜索模式
  • target (字符串):要搜索的目录
  • case_sensitive (布尔值,可选):大小写敏感性
  • whole_words (布尔值,可选):整词匹配
  • file_extensions (数组,可选):要包含的文件扩展名
  • exclude_patterns (数组,可选):要排除的文件模式

5. grep_advanced

执行带有自定义参数的 grep(高级用户)。

参数:

  • args (数组):grep 参数数组(不包括 'grep' 本身)

内置自然语言模式

服务器识别这些自然语言意图:

通信

  • "电子邮件", "电子邮件地址", "电子邮件" → 电子邮件地址模式
  • "网址", "网址", "网站", "链接", "链接" → 网址模式
  • "电话", "电话号码", "电话号码" → 电话号码模式

网络

  • "IP", "IP 地址", "IP 地址" → IPv4 地址模式

数据类型

  • "数字", "数字", "整数", "整数" → 数字模式
  • "日期", "日期" → 日期模式

代码模式

  • "函数", "函数" → 函数声明
  • "类", "类" → 类定义
  • "导入", "导入" → 导入语句
  • "导出", "导出" → 导出语句
  • "注释", "注释" → 注释行
  • "TODO", "TODO" → TODO/FIXME/HACK 注释

错误模式

  • "错误", "错误" → 错误消息
  • "警告", "警告" → 警告消息

使用示例

在项目中搜索电子邮件地址

{
  "tool": "grep_search_intent",
  "intent": "电子邮件地址",
  "target": "./src",
  "show_context": true
}

查找所有 TODO 注释

{
  "tool": "grep_search_intent", 
  "intent": "TODO 注释",
  "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            # 本文档

故障排除

常见问题

  1. "命令未找到" 错误

    • 确保已全局安装 mcp-grep:npm install -g @247arjun/mcp-grep
    • 或使用 npx:"command": "npx", "args": ["@247arjun/mcp-grep"]
  2. "权限被拒绝" 错误

    • 检查文件权限:chmod +x build/index.js
    • 重新构建项目:npm run build
  3. MCP 服务器未出现在 Claude 中

    • 核实配置文件中的 JSON 语法
    • 完全重启 Claude Desktop
    • 检查命令路径是否正确
  4. "grep 命令未找到"

    • 在系统上安装 grep(通常在 macOS/Linux 上预装)
    • Windows 用户:通过 WSL 或 Git Bash 安装

调试

通过设置环境变量启用详细日志记录:

# 开发时
DEBUG=1 node build/index.js

# 使用示例输入测试
echo '{"jsonrpc": "2.0", "method": "initialize", "params": {}}' | node build/index.js

安全注意事项

  • 使用 spawn 并设置 shell: false 来防止命令注入
  • 执行前验证所有文件路径
  • 在高级模式下阻止潜在危险的 grep 标志
  • 使用 Zod 模式进行输入验证
  • 不访问指定目标之外的系统文件