Give Your Agent a Language Server
Claude Code can grep. It's decent at it—ripgrep under the hood, regex support, the works. But grep is text search. It doesn't know that process the function is different from "process" in a comment. It can't tell you where a symbol is defined, only where the string appears. When Claude greps for context, it's pattern-matching. Not understanding.
There's a better option hiding in plain sight: Language Server Protocol support.
LSP is the thing that makes your IDE smart. Go-to-definition, find-references, hover-for-type-info—that's all LSP. It's how VS Code knows that calling foo() with the wrong argument types is an error before you run anything. Semantic understanding, not string matching.
Claude Code shipped LSP support back in late 2025. It's not on by default. Most users don't know it exists. But once you enable it, Claude gains two capabilities that change how it works.
First: automatic diagnostics. After every edit Claude makes, the language server analyzes the changes and reports errors back immediately. Type mismatches, missing imports, syntax issues—Claude sees them without running a compiler. If it introduces a bug, it notices and fixes it in the same turn. No more "let me run the build to check" loops.
Second: real code navigation. Claude can jump to definitions, find all references to a symbol, get type information on hover, list symbols in a file, trace call hierarchies. These operations are precise in a way grep never is. When Claude asks "where is this function defined," it gets the actual definition—not a list of files containing that string.
The difference matters. I've watched Claude grep through a codebase, find the wrong Config class (there were three), and confidently modify the wrong one. With LSP, it would have jumped to the definition and known exactly which Config it was looking at.
Enabling it takes a minute. The official Anthropic marketplace has LSP plugins for eleven languages: TypeScript, Python, Go, Rust, C/C++, Java, Kotlin, C#, PHP, Swift, and Lua. Install the ones you need:
/plugin install typescript-lsp@claude-plugins-official
You may also need ENABLE_LSP_TOOL=1 in your environment—add it to your shell profile if the plugin alone doesn't do it.
The other catch: you need the language server binary in your PATH. For TypeScript that's typescript-language-server. For Go, gopls. For Python, pyright-langserver. For Rust, rust-analyzer. If you already have these for your IDE, you're set. If not, a quick install and you're done.
The transparency isn't great—there's no indicator showing "Claude is using LSP" versus "Claude is grepping." You just have to trust it's working. Check /plugin for errors if you're unsure. But when it works, you'll notice fewer type errors slipping through, fewer wrong-file edits, faster convergence on correct code.
This is agent DX you configure once. A desire path paved over.