Provides package management functionality for installing dependencies and building the MCP server project
Enables type-safe development with TypeScript configuration and compilation support
Implements input validation using Zod schemas to ensure secure command execution
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Grep MCP Serverfind all email addresses in the src directory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for Grep
A Model Context Protocol (MCP) server that provides powerful text search capabilities using the grep command-line utility. This server allows you to search for patterns in files and directories using both natural language descriptions and direct regex patterns.
Features
π§ Natural Language Search
Describe what you're looking for in plain English
Automatic conversion to appropriate regex patterns
Built-in patterns for common searches (emails, URLs, phone numbers, etc.)
π Advanced Search Capabilities
Direct regex pattern matching
Recursive directory searching
File extension filtering
Case-sensitive/insensitive search
Whole word matching
Context line display
Match counting
File listing with matches
π‘οΈ Security First
Safe command execution using
child_process.spawnInput validation with Zod schemas
No shell injection vulnerabilities
Path validation and sanitization
Related MCP server: MCP-Grep
Installation
Method 1: NPM Installation (Recommended)
# Install globally
npm install -g @247arjun/mcp-grep
# Or install locally in your project
npm install @247arjun/mcp-grepMethod 2: From Source
# Clone the repository
git clone https://github.com/247arjun/mcp-grep.git
cd mcp-grep
# Install dependencies
npm install
# Build the project
npm run build
# Optional: Link globally
npm linkMethod 3: Direct from GitHub
# Install directly from GitHub
npm install -g git+https://github.com/247arjun/mcp-grep.gitConfiguration
Claude Desktop Setup
Add to your Claude Desktop configuration file:
Location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
Configuration:
{
"mcpServers": {
"mcp-grep": {
"command": "mcp-grep",
"args": []
}
}
}Alternative: Using npx (no global install needed)
{
"mcpServers": {
"mcp-grep": {
"command": "npx",
"args": ["@247arjun/mcp-grep"]
}
}
}Local Development Setup
{
"mcpServers": {
"mcp-grep": {
"command": "node",
"args": ["/absolute/path/to/mcp-grep/build/index.js"]
}
}
}After adding the configuration, restart Claude Desktop to load the MCP server.
Verification
Test that the server is working:
# Test the built server
node build/index.js
# Should show: "Grep MCP Server running on stdio"
# Press Ctrl+C to exitAvailable Tools
1. grep_search_intent
Search using natural language descriptions.
Parameters:
intent(string): Plain English description (e.g., "email addresses", "TODO comments")target(string): File or directory path to searchcase_sensitive(boolean, optional): Case-sensitive search (default: false)max_results(number, optional): Limit number of resultsshow_context(boolean, optional): Show surrounding lines (default: false)context_lines(number, optional): Number of context lines (default: 2)
Example:
{
"intent": "email addresses",
"target": "./src",
"show_context": true,
"context_lines": 1
}2. grep_regex
Search using direct regex patterns.
Parameters:
pattern(string): Regular expression patterntarget(string): File or directory path to searchcase_sensitive(boolean, optional): Case-sensitive searchwhole_words(boolean, optional): Match whole words onlyinvert_match(boolean, optional): Show non-matching linesmax_results(number, optional): Limit resultsshow_context(boolean, optional): Show context linescontext_lines(number, optional): Context line countfile_extensions(array, optional): Filter by file extensions
Example:
{
"pattern": "function\\s+\\w+\\s*\\(",
"target": "./src",
"file_extensions": ["js", "ts"],
"show_context": true
}3. grep_count
Count matches for a pattern.
Parameters:
pattern(string): Pattern to counttarget(string): Search targetcase_sensitive(boolean, optional): Case sensitivitywhole_words(boolean, optional): Whole word matchingby_file(boolean, optional): Show count per filefile_extensions(array, optional): File extension filter
4. grep_files_with_matches
List files containing the pattern.
Parameters:
pattern(string): Search patterntarget(string): Directory to searchcase_sensitive(boolean, optional): Case sensitivitywhole_words(boolean, optional): Whole word matchingfile_extensions(array, optional): File extensions to includeexclude_patterns(array, optional): File patterns to exclude
5. grep_advanced
Execute grep with custom arguments (advanced users).
Parameters:
args(array): Array of grep arguments (excluding 'grep' itself)
Built-in Natural Language Patterns
The server recognizes these natural language intents:
Communication
"email", "email address", "emails" β Email address pattern
"url", "urls", "website", "link", "links" β URL pattern
"phone", "phone number", "phone numbers" β Phone number pattern
Network
"ip", "ip address", "ip addresses" β IPv4 address pattern
Data Types
"number", "numbers", "integer", "integers" β Numeric patterns
"date", "dates" β Date patterns
Code Patterns
"function", "functions" β Function declarations
"class", "classes" β Class definitions
"import", "imports" β Import statements
"export", "exports" β Export statements
"comment", "comments" β Comment lines
"todo", "todos" β TODO/FIXME/HACK comments
Error Patterns
"error", "errors" β Error messages
"warning", "warnings" β Warning messages
Usage Examples
Search for email addresses in a project
{
"tool": "grep_search_intent",
"intent": "email addresses",
"target": "./src",
"show_context": true
}Find all TODO comments
{
"tool": "grep_search_intent",
"intent": "todo comments",
"target": "./",
"file_extensions": ["js", "ts", "py"]
}Search for function definitions with regex
{
"tool": "grep_regex",
"pattern": "^\\s*function\\s+\\w+",
"target": "./src",
"file_extensions": ["js"]
}Count occurrences of a word
{
"tool": "grep_count",
"pattern": "async",
"target": "./src",
"by_file": true
}List files containing import statements
{
"tool": "grep_files_with_matches",
"pattern": "^import",
"target": "./src",
"file_extensions": ["js", "ts"]
}Development
Build and Run
# Development with auto-rebuild
npm run dev
# Production build
npm run build
# Start the server
npm startProject Structure
mcp-grep/
βββ src/
β βββ index.ts # Main server implementation
βββ build/ # Compiled JavaScript output
βββ package.json # Project configuration
βββ tsconfig.json # TypeScript configuration
βββ README.md # This fileTroubleshooting
Common Issues
"Command not found" error
Ensure mcp-grep is installed globally:
npm install -g @247arjun/mcp-grepOr use npx:
"command": "npx", "args": ["@247arjun/mcp-grep"]
"Permission denied" error
Check file permissions:
chmod +x build/index.jsRebuild the project:
npm run build
MCP server not appearing in Claude
Verify JSON syntax in configuration file
Restart Claude Desktop completely
Check that the command path is correct
"grep command not found"
Install grep on your system (usually pre-installed on macOS/Linux)
Windows users: Install via WSL or use Git Bash
Debugging
Enable verbose logging by setting environment variable:
# For development
DEBUG=1 node build/index.js
# Test with sample input
echo '{"jsonrpc": "2.0", "method": "initialize", "params": {}}' | node build/index.jsSecurity Notes
Uses
spawnwithshell: falseto prevent command injectionValidates all file paths before execution
Blocks potentially dangerous grep flags in advanced mode
Input validation with Zod schemas
No access to system files outside specified targets