# Searching With Mgrep

> Performs semantic code search using mgrep for natural language queries across codebases. Use when exploring codebases with 30+ files, searching for concepts rather than exact strings, or understanding unfamiliar code. Triggers include "semantic search", "mgrep", "find feature", or "where is X implemented".

- Skill: `majiayu000/searching-with-mgrep` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/searching-with-mgrep`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/searching-with-mgrep/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/searching-with-mgrep

---


# mgrep Code Search

## Overview

mgrep is a semantic search tool that enables natural language queries across code, text, PDFs, and images. It is particularly effective for exploring larger or complex codebases where traditional pattern matching falls short.

## When to Use This Skill

Use mgrep when:

- The codebase contains more than 30 non-gitignored files
- There are nested directory structures
- Searching for concepts, features, or intent rather than exact strings
- Exploring an unfamiliar codebase
- Need to understand "where" or "how" something is implemented

Use traditional grep/ripgrep when:

- Searching for exact patterns or symbols
- Regex-based refactoring
- Tracing specific function or variable names

## Quick Start

### Indexing

Before searching, start the watcher to index the repository:

```bash
bunx @mixedbread/mgrep watch
```

The `watch` command indexes the repository and maintains synchronisation with file changes. It respects `.gitignore` and `.mgrepignore` patterns.

### Searching

```bash
bunx @mixedbread/mgrep "your natural language query" [path]
```

## Search Commands

### Basic Search

```bash
bunx @mixedbread/mgrep "where is authentication configured?"
bunx @mixedbread/mgrep "how do we handle errors in API calls?" src/
bunx @mixedbread/mgrep "database connection setup" src/lib
```

### Search Options

| Option          | Description                              |
| --------------- | ---------------------------------------- |
| `-m <count>`    | Maximum results (default: 10)            |
| `-c, --content` | Display full result content              |
| `-a, --answer`  | Generate AI-powered synthesis of results |
| `-s, --sync`    | Update index before searching            |
| `--no-rerank`   | Disable relevance optimisation           |

### Examples with Options

```bash
# Get more results
bunx @mixedbread/mgrep -m 25 "user authentication flow"

# Show full content of matches
bunx @mixedbread/mgrep -c "error handling patterns"

# Get an AI-synthesised answer
bunx @mixedbread/mgrep -a "how does the caching layer work?"

# Sync index before searching
bunx @mixedbread/mgrep -s "payment processing" src/services
```

## Workflow

1. **Start watcher** (once per session or when files change significantly):

   ```bash
   bunx @mixedbread/mgrep watch
   ```

1. **Search semantically**:

   ```bash
   bunx @mixedbread/mgrep "what you're looking for" [optional/path]
   ```

1. **Refine as needed** using path constraints or options:

   ```bash
   bunx @mixedbread/mgrep -m 20 -c "refined query" src/specific/directory
   ```

## Environment Variables

Configure defaults via environment variables:

| Variable          | Purpose                         |
| ----------------- | ------------------------------- |
| `MGREP_MAX_COUNT` | Default result limit            |
| `MGREP_CONTENT`   | Enable content display (1/true) |
| `MGREP_ANSWER`    | Enable AI synthesis (1/true)    |
| `MGREP_SYNC`      | Pre-search sync (1/true)        |

## Important Notes

- Always use `bunx @mixedbread/mgrep` to run commands (not npm/bunx or direct installation)
- Run `bunx @mixedbread/mgrep watch` before searching to ensure the index is current
- mgrep respects `.gitignore` patterns automatically
- Create `.mgrepignore` for additional exclusions

