Top
Best
New

Posted by JamesSwift 12/22/2025

Claude Code gets native LSP support(github.com)
511 points | 339 commentspage 3
liampulles 12/23/2025|
What I've wondered about is whether there is a use in having an LLM that operates on AST symbols (or some IR representation) as input and/or output. It would be language specific of course (though maybe using something like MLIR is somewhat portable), but I would think it would result in a higher quality neural network, a reduction in tokens, etc.
jwr 12/22/2025||
I've been using https://github.com/isaacphi/mcp-language-server to do pretty much the same thing for quite a while now in Claude code. And it works with clojure-lsp unlike the limited set of plugins available now.
desireco42 12/22/2025||
OpenCode had this for a while and overall has better and nicer TUI. Having said that, for same models, especially with LSP, some fancy MCPs, mgrep, has been doing really bad job lately for me. Not sure why. I expect it will be resolved soon. Otherwise very happy with it.

Claude Code is also solid and this is welcome improvement.

arianvanp 12/23/2025||
I hate everything about the Claude code plugin system. They saw GitHub Actions supply chain Fiasco and said: great let's add hallucinations on top.

It's that bad. It's embarrassingly bad.

No lock files. Nothing. And then most plugins in turn install MCPs from pypi with uvx so you have two layers of no pinning.

It's a supply chain nightmare. It's so bad that I'm ashamed for our industry

pnt12 12/23/2025||
Yeah uvx gets abused out of its convenience. uv has many useful features like dev dependencies and inline dependencies, that are much more reliable than uvx.

One tip for in-line dependencies: set a max date to lock your packages - reliable and simple for small scripts.

JamesSwift 12/23/2025|||
Nix plus flakes (and optionally devenv) is such a great baseline to operate agents in. So much less thinking about dependencies on various runtime platforms, and you get pinning out of the box.

Doesnt support windows though.

throw-12-16 12/23/2025||
and then it runs out of home directory and slurps up your secrets.

its completely asinine to install npm globals these days, especially one that is such a juicy supply chain attack target

CameronBanga 12/22/2025||
Maybe I'm the only one, but does anyone else have an issue on macOS where Claude Code never updates itself automatically and you always have an error? I guess it's in times when I leave the CLI tool running and an update comes in overnight. But the alert seems to indicate it should update and fails.
Arubis 12/22/2025||
Depends on your installation method. I have CC installed on macOS with `bun install` and it self-updates. But you could have different results with, oh, npm or yarn or homebrew or nix or probably asdfvm or maybe there’s a native .pkg I don’t know about or…you get the idea.
fahrradflucht 12/22/2025|||
I have the same issue since for ever (and update by hand because of it). I always assumed it is because it gets confused by me using Volta for node/npm version management and Volta‘s shim masking where Claude Code is globally installed.
cube2222 12/22/2025|||
Yeah, I uninstalled and reinstalled with homebrew, and it’s working well now.
fabbbbb 12/22/2025|||
Always have a lot of sessions running locally and don’t recall this
mokkol 12/22/2025|||
Uninstall it and install it via home brew fixed it for me.
pigeonhole123 12/23/2025||
I removed the locks directory which fixed it
oofbey 12/22/2025||
I should know this, but what's LSP? Language Server Protocol - I can read. But what's that?
3836293648 12/22/2025|
It's the protocol that VSC made to speak to programs that do code analysis and is the basis of goto definition, autocomplete, refactorings etc.

It's used by most smaller editors so they can backpack off of the efforts languages make to be usable in VSC. (Vim, Emacs, Zed, etc)

jasonjmcghee 12/23/2025||
Also diagnostics (errors, warnings), inlay hints like types and parameters, code lens (tiny embedded buttons), symbols, notifications like “document changed”, and more
terminal512 12/23/2025||
Just discovered https://plugins.jetbrains.com/plugin/29174-ide-index-mcp-ser.... Its MCP, but still better than nothing.
m_rcin 12/23/2025||
How to configure it? I have LSP running in neovim, but Claude Code writes:

● LSP(operation: "goToDefinition", symbol: "mtz", in: "src/mtz.cpp") ⎿ No LSP server available for file type: .cpp

● No C++ LSP server is configured.

nurettin 12/23/2025||
Interesting. I develop two projects and maintain a few. I haven't opened an IDE within the past two weeks. What do you do with an IDE? Stare as code is written, refactored, tested and debugged automatically?
swader999 12/23/2025|
Same here, I'm a bit apprehensive admitting it. Thanks for going first.
odie5533 12/22/2025|
Is there a way to automatically run tests every file change, like post tool somehow, so that it returns a concise test run back to the LLM every tool use? That seems like it would be useful.
rane 12/22/2025||
You don't want to run tests after every file change, because that will distract Claude from finishing whatever it's doing and add noise to the context window. Of course the tests will be broken if Claude hasn't finished the full change yet.

Running tests makes most sense on the Stop hook event, but personally I've found CLAUDE.md instruction of "Run `just check` after changes" to be effective enough. The Stop hook has the issue that it will run the checks every time Claude stops responding, even after without any changes.

odie5533 12/22/2025||
Won't the LSP distract Claude too? I am trying to think of ways to make Claude faster at iterating by reducing tool calls. That always seems to be a bottleneck when it's doing tons of back-and-forth with tool calls.
rane 12/23/2025||
Depends on Anthropic has implemented it I guess. I haven't had it activate yet despite the prompt to install an LSP.
spellboots 12/22/2025||
Yes, you can do this with hooks: https://code.claude.com/docs/en/hooks
kristianp 12/22/2025||
Back when I was using CC, I had a "mandatory" development workflow that checks if the corresponding test file exists for the changed file, runs tests and runs the test coverage tool for the changed file.
More comments...