README.md•2.5 kB
# greply MCP Server
An [MCP](https://github.com/modelcontextprotocol) server that wraps the [`greply`](https://www.npmjs.com/package/greply) CLI (Node wrapper for the `greppy` search tool).
This allows you to use `greply` directly from an MCP-compatible client such as the **Gemini CLI**.
---
## Features
- **`greply.search`** — run `greply` with query, before/after context, and flags.
- **`greply.help`** — print `greply` usage text.
---
## Requirements
- **Node.js** 20 or newer (22 LTS recommended)
- `npm` or `pnpm` for dependency installation
- `greply` CLI available on PATH, or specify `greply_CMD` env var
---
## Installation
Clone and install dependencies:
```bash
git clone https://github.com/your-org/greply-mcp-server.git
cd greply-mcp-server
# Make sure Node version is >= 20
node -v
# If needed:
# curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# source ~/.nvm/nvm.sh
# nvm install 22 && nvm use 22
npm install
````
---
## Usage
Run the server directly:
```bash
node server.mjs
```
Or with `npm`:
```bash
npm start
```
---
## Gemini CLI Configuration
Add this to your `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"greply": {
"command": "node",
"args": ["/absolute/path/to/greply-mcp-server/server.mjs"],
"env": {
"greply_CMD": "/usr/local/bin/greppy"
}
}
}
}
```
* `greply_CMD` is optional — only set it if the server cannot find `greply` automatically.
* Use an **absolute path** for `server.mjs`.
---
## Tools
### `greply.search`
Search files or directories with the given query and optional flags.
**Input schema:**
| Field | Type | Description |
| ---------------- | ------- | ------------------------------------- |
| `query` | string | Search term (required) |
| `target` | string | File or directory (default `"."`) |
| `before` | integer | Lines of context before match (`-B`) |
| `after` | integer | Lines of context after match (`-A`) |
| `recursive` | boolean | Recurse directories (`-R`) |
| `wholeWord` | boolean | Match whole words (`-w`) |
| `matchCase` | boolean | Case-sensitive match (`-c`) |
| `fixedStrings` | boolean | Fixed-string match (`-F`) |
| `suppressErrors` | boolean | Return stdout/stderr on non-zero exit |
---
### `greply.help`
Display `greply` usage information.