LSP plugin lspServers config not being processed from marketplace.json
Open 💬 20 comments Opened Dec 23, 2025 by giovannirco
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
20 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.