# vex

Local code search for coding agents: symbol lookup, callers, AST patterns and semantic matches. Useful when an agent gets lost in a large repo.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 12
- Author: tenatarika
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/tenatarika/vex
- Updated: 2026-10-18
- HTML: https://affpapa.org/en/nevibecode/mcp/vex

## What it does

vex indexes a repository once and then answers code questions in milliseconds. `vex check` finds an exact name, `vex show` returns just the symbol body, and `vex usages` or `vex callers` reveal who references and who invokes a function. There is semantic `vex search`, AST matching through `vex pattern`, and `vex bundle` that packs a symbol body with its callers into a single response.

The index combines three channels: an FST of names, BM25 over body text and a vector search for meaning, fused into one ranked list. The call graph is persisted, so caller and callee lookups skip a fresh tree-sitter scan. Tree-sitter covers 20 languages; refactor-grade `--strict` references work for Rust, TypeScript, Python, C#, C++, Go, Java and Kotlin.

It is not an LSP replacement. Go-to-definition into third-party packages, renames and type checks stay with your language server. Decorator routing, string-resolved factories and reflection are invisible to vex, so `vex grep` remains the escape hatch there. Outside function bodies the call graph is patchy, and on Python or FastAPI codebases read `docs/LIMITATIONS.md` first.

## Requirements
- Needs: a prebuilt binary from the repository releases

## Install

### Claude Code (native platform)

**Install**
- The MCP registry has no launch command for it: see the repository README

## When to use it
- locate a class definition without opening the whole file
- list every caller and implementation of a function
- find a symbol by meaning when the name is forgotten
- match an AST pattern such as `fn $NAME($$$) -> Result`
- pull a symbol body and its callers in one request

## Example prompts
- Use vex to check whether `TelemetryProcessor` exists and show me its class body.
- List everyone who calls `process_event` with vex, then show all implementations of `BaseService`.
- Search the vex index for timeout retry handling; afterwards find symbols semantically close to `PaymentService`.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
