LSP plugin lspServers config not being processed from marketplace.json
Status Open
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 24 comments · opened Dec 23, 2025
Bug Description
The lspServers configuration defined in marketplace.json plugin entries is not being extracted or processed when plugins are loaded. This results in LSP plugins (typescript-lsp, pyright-lsp, gopls-lsp) being installed but non-functional.
Steps to Reproduce
- Enable the typescript-lsp plugin:
``bash``
claude plugins install typescript-lsp@claude-plugins-official
- Verify typescript-language-server is installed:
``bash``
which typescript-language-server
# Returns: /opt/homebrew/bin/typescript-language-server
- Restart Claude Code
- Attempt to use LSP:
````
LSP documentSymbol on src/server.ts
Expected Behavior
LSP operations should work since:
- The plugin is enabled in settings.json
- The marketplace.json plugin definition includes proper
lspServersconfig - The language server binary is installed
Actual Behavior
No LSP server available for file type: .ts
Debug Log Evidence
2025-12-23T12:09:16.380Z [DEBUG] [LSP MANAGER] initializeLspServerManager() called
2025-12-23T12:09:16.380Z [DEBUG] [LSP MANAGER] Created manager instance, state=pending
2025-12-23T12:09:16.387Z [DEBUG] LSP server manager initialized successfully
2025-12-23T12:09:16.387Z [DEBUG] LSP notification handlers registered successfully for all 0 server(s)
2025-12-23T12:09:16.433Z [DEBUG] Loading plugin typescript-lsp from source: "./plugins/typescript-lsp"
2025-12-23T12:09:16.434Z [DEBUG] Plugin typescript-lsp has no entry.skills defined
2025-12-23T12:09:45.479Z [DEBUG] No LSP server available for file type .ts for operation documentSymbol on file src/server.ts
Key observation: "0 server(s)" - the lspServers config is never loaded.
Root Cause Analysis
The marketplace.json correctly defines lspServers for the plugin:
{
"name": "typescript-lsp",
"description": "TypeScript/JavaScript language server for enhanced code intelligence",
"version": "1.0.0",
"source": "./plugins/typescript-lsp",
"lspServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact",
".mts": "typescript",
".cts": "typescript",
".mjs": "javascript",
".cjs": "javascript"
}
}
}
}
However, when the plugin is installed:
- Only the plugin source folder contents (just README.md) are copied to cache
- The
lspServersfield from marketplace.json is never extracted or processed - LSP manager initializes with 0 servers before plugins finish loading
Workarounds Attempted (All Failed)
- Adding
.lsp.jsonto plugin cache folder - Not read - Adding
lspServersto~/.claude/settings.json- Not a supported setting - Reinstalling the plugin - Same result
Environment
- Claude Code version: Latest (as of 2025-12-23)
- OS: macOS Darwin 25.2.0
- typescript-language-server version: 5.1.3
- Node.js: 20+
Files Examined
~/.claude/settings.json (has enabledPlugins)
~/.claude/plugins/installed_plugins.json (plugin registered)
~/.claude/plugins/marketplaces/claude-plugins-official/.claude-plugin/marketplace.json (has lspServers)
~/.claude/plugins/cache/claude-plugins-official/typescript-lsp/1.0.0/ (only contains README.md)
Suggested Fix
The plugin loader should:
- Extract
lspServersfrom marketplace.json plugin definitions - Register these servers with the LSP manager after plugin loading completes
- Or: Store lspServers config in installed_plugins.json for persistence
24 Comments
---
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Same problem for me as well, tried the plugin, with whatever mentioned in the doc :- https://code.claude.com/docs/en/plugins-reference#lsp-servers
but it's not working.
Same issue with me, here is CC thinks
⏺ Here's what I found:
Summary
What typescript-lsp does:
Based on https://github.com/boostvolt/claude-code-lsps and https://code.claude.com/docs/en/plugins:
The typescript-lsp plugin provides:
Current Status
You have the plugin installed and enabled:
However, it's likely not fully active because:
I'm facing the same issue
I'm in an even weirder position -- claude cannot even register the plugin now:
Some other debug logs:
https://github.com/anthropics/claude-code/issues/14803#issuecomment-3684942251
this work for me
Workaround: Working LSP Plugin
For anyone blocked by this issue, I've published a working LSP plugin that bypasses the broken official marketplace extraction:
https://github.com/yungweng/claude-lsp-servers
Quick Install
Restart Claude Code and verify with
/plugin— no errors.Supports TypeScript, Python (Pyright), and Go (gopls). All LSP operations working: hover, goToDefinition, findReferences, documentSymbol, goToImplementation, incomingCalls, outgoingCalls.
Hope this helps until the official fix lands!
I had all the symptoms of the issue here, and not beeing able to use LSP for C# and Typescript while lange servers running OK and plugins installed and enabled. Symptoms are:
Claude Code 2.1.15, plugin version 1.0.0
WSL Ubuntu 24 on windows
MY FIX:
@connorblack Was in the same boat as you. Turns out if you install it in a project scope once somewhere, anywhere else you won't be able to see it, access it, open it. Going to that repo and uninstalling, then installing for user scope fixed it.
I have it installed in the user scope, and what seemed to get it working finally was setting the ENABLE_LSP_TOOL=1 environment variable
working for me. prompt: "@src/source.ts can you show me function table with LSP"
Claude has burned so many tokens trying to fix this issue for me, it's honestly infuriating how bad Claude is at managing its own files/configs, even after reading the docs multiple times.
@claude are you serious? this is embarrassing for you.
This is quite frustrating. This is a simple fix, and is breaking an essential feature of claude code.
I also installed pyright-lsp from official plugins market a while ago and realised it's not actually working. Windows 11, Windows Terminal / PowerShell 7, latest Claude code version. The plugin shows green and enabled but on a
/reload-pluginsit says "0 plugin LSP servers". pyright-lsp is installed and available on the shell I'm launching Claude code from (installed viapip install pyright).I asked Claude to diagnose the issue and it said:
It would be nice if Anthropic had some quality control over their official plugins marketplace to make sure things actually work.
Edit: This https://github.com/anthropics/claude-plugins-official/pull/378 fixed it for me, LSP plugins now working.
Anyone able to get Claude to apply
initializationOptionswhen launching LSP server?Setting
ENABLE_LSP_TOOL=1allows Claude to use LSP, but I have some trouble getting it to recognize my custom settings. The docs say I need to have a..lsp.jsonfile in plugin root or inline inplugin.json. I put such a file in both project root and/home/<username>/.claude/plugins/marketplaces/claude-plugins-official/plugins/typescript-lsp(for typescript LSP) which did not make any difference. And I don't know whichplugin.jsonit is referring to.(possibly related: https://github.com/anthropics/claude-code/issues/33552)
Update: For TypeScript LSP: If the TypeScript LSP is installed from the marketplace, the settings are defined in
~/.claude/plugins/marketplaces/claude-plugins-official/.claude-plugin/marketplace.jsonand you'll have to patch that file to customizeinitializationOptions. Putting a.lsp.jsonfile under project folder ortypescript-lspfolder won't do anything. Once you do that, Claude Code should respectinitializationOptionsin a new session.Still reproducing on Claude Code 2.1.118 with
pyright-lsp@claude-plugins-official1.0.0 (installed 2026-02-26, gitCommitSha55b58ec).The discrepancy is exactly as described in the bug — the marketplace declares
lspServers, but the installed plugin manifest doesn't:~/.claude/plugins/marketplaces/claude-plugins-official/.claude-plugin/marketplace.json— has the block:~/.claude/plugins/cache/claude-plugins-official/pyright-lsp/1.0.0/.claude-plugin/plugin.json— lacks it:claude plugin update pyright-lsp@claude-plugins-officialsays "already at the latest version (1.0.0)", so a clean reinstall doesn't help — the published 1.0.0 itself ships without thelspServersfield.Workaround (until this lands): manually copy the
lspServersblock from the marketplace.json into the installedplugin.json. After doing so + restarting Claude Code withENABLE_LSP_TOOL=1, theLSPtool registers anddocumentSymbol/findReferences/hover/goToDefinitionall work against pyright-langserver as expected. The patch survives until the nextclaude plugin updateoverwrites it.Same defect applies to
typescript-lsp@claude-plugins-official1.0.0.If you use tweakcc, it manages to fix all LSP shenanigans, at least for me.
Original tweakcc repo isn't maintained much but there is a fork on my page where I try to maintain it as much as possible, in case someone is editing prompts and whatnot :)
I can confirm that using
.lsp.jsonat the plugin root works correctly as a workaround, even thoughmarketplace.jsonlspServersis not processed.My setup:
.lsp.json(no.claude-plugin/plugin.jsonneeded)marketplace.jsonwithsource: "./plugins/solidity-lsp".lsp.jsonfile:/reload-plugins, Claude Code shows "14 plugin LSP servers" anddocumentSymbolworks correctly on.solfiles.Environment: macOS, Claude Code latest, local marketplace (
/plugin marketplace add ~/path/to/skills)This issue might be safe to close since
.lsp.jsonat plugin root is the documented approach per https://code.claude.com/docs/en/plugins#add-lsp-servers-to-your-pluginThis seems to be fixed.
Still reproducing on Claude Code 2.1.246 (macOS arm64), tested 2026-08-26 — so the "seems to be fixed" note above does not hold on current builds.
claude -p "hi" --debug lspwithrust-analyzer-lsp@claude-plugins-officialenabled andrust-analyzeron the process PATH:No server spawns and no
LSPtool is registered, so from the user side it is indistinguishable from a build without LSP support.Scope on this install: 5 of the 6 installed
*-lspplugins had nolspServersin their installed manifest (the 6th only because I had already patched it by hand). All 6 are user scope,version 1.0.0,gitCommitSha 55b58ec— the same sha reported in the 2026-05-03 comment above, so the package has not moved.One correction to the packaging description in anthropics/claude-plugins-official#379: the installed directory is no longer README-only. It now ships
LICENSE,README.md, and.claude-plugin/plugin.json— but that manifest contains onlyname/description/version/author, still nolspServers. The packaging changed; the bug did not.Both workarounds work on 2.1.246. The runtime resolves the config as
plugin.lspServers || <plugin-root file loader>, and neither branch consultsmarketplace.json:.claude-plugin/plugin.json, or.lsp.jsonat the plugin root (as reported in the 2026-05-24 comment).Either produces:
after which
documentSymbol/hover/findReferencesall return real results.Two smaller notes:
ENABLE_LSP_TOOL=1was not needed on this version — theLSPtool appears as soon as at least one server loads. And because/plugin updaterewrites the cache, either workaround is silently reverted by a routine update, with the same zero-server symptom and no warning.I can confirm this is still an issue in
v2.1.286For example,
~/.claude/plugins/cache/claude-plugins-official/swift-lsp/1.0.0/.claude-plugin/plugin.jsonis regularly overwritten with:And with the JSON missing the
lspServersobject, the Swift LSP does not work and Claude Code informs me that "no LSP tool is available in this session".To get it working again, all I need to do is add the
lspServersobject:I do not have
ENABLE_LSP_TOOLset so that appears to no longer be necessary at this point.@anthropics May you please prioritize this issue? We've found that LSP is such an advantage when using Claude Code and really need this bug fixed to avoid LSP being inadvertently disabled. Thank you!! 🙏
And I will test again in
v2.1.288and report back.Confirmed that it is also still an issue in
v2.1.288