MCP Server for TypeScript Projects Replaces Claude Code's Grep Pattern with Indexed Symbol Lookups

✍️ OpenClawRadar📅 Published: April 17, 2026🔗 Source
MCP Server for TypeScript Projects Replaces Claude Code's Grep Pattern with Indexed Symbol Lookups
Ad

A developer has created an MCP server specifically designed to improve Claude Code's performance on TypeScript projects by replacing its grep-and-guess pattern with indexed symbol lookups. The tool is free and open source.

The Problem with Current Agent Behavior

When using Claude Code and Cursor on TypeScript projects, a common pattern emerges: the agent searches across files, opens likely matches, reads significant amounts of code, realizes it's the wrong place, and tries again. The agent lacks structural awareness of the codebase and starts each session from scratch.

How the MCP Server Works

The server provides structured access to the codebase by maintaining a live SQLite index of the project that includes:

  • Symbols
  • Call sites
  • Imports
  • Class hierarchy

This allows the agent to query structure directly. Instead of searching for "handleRequest," the agent can go directly to the exact file and line for that symbol.

Performance Benchmarks

Tested on a 31-file TypeScript project with the same tasks performed with and without the index:

  • Find one function: 1,350 tokens with grep vs. 500 tokens with index (63% fewer)
  • Trace callers across 3 files: 2,850 tokens with grep vs. 900 tokens with index (68% fewer)
  • Map inheritance across 15+ files: 4,800 tokens with grep vs. 1,000 tokens with index (79% fewer)

Grep performance degrades as the codebase grows, while indexed queries remain consistent.

Ad

Where the Savings Come From

The developer initially thought symbol lookup would be the primary benefit, but discovered three key areas where the index provides significant efficiency gains:

  • get_callers queries replace the pattern where agents read 4-5 files trying to figure out who calls a function
  • Partial reads: knowing the exact line means reading 20 lines instead of an entire file (accounting for over half the savings)
  • trace_middleware tells the agent what runs before a route handler, eliminating the need to read the router, each middleware file, and reconstruct the order

Limitations

The tool struggles with:

  • Dynamic patterns (computed method names, etc.)
  • Dependency injection setups
  • Anything outside your own codebase

While not perfect, the tool significantly reduces the trial-and-error loop in agent-assisted development.

📖 Read the full source: r/ClaudeAI

Ad

👀 See Also