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:
claude plugins install typescript-lsp@claude-plugins-official
- Verify typescript-language-server is installed:
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
lspServers config
- 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
lspServers field from marketplace.json is never extracted or processed
- LSP manager initializes with 0 servers before plugins finish loading
Workarounds Attempted (All Failed)
- Adding
.lsp.json to plugin cache folder - Not read
- Adding
lspServers to ~/.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
lspServers from 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
Bug Description
The
lspServersconfiguration 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
which typescript-language-server # Returns: /opt/homebrew/bin/typescript-language-serverExpected Behavior
LSP operations should work since:
lspServersconfigActual Behavior
Debug Log Evidence
Key observation: "0 server(s)" - the lspServers config is never loaded.
Root Cause Analysis
The marketplace.json correctly defines
lspServersfor 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:
lspServersfield from marketplace.json is never extracted or processedWorkarounds Attempted (All Failed)
.lsp.jsonto plugin cache folder - Not readlspServersto~/.claude/settings.json- Not a supported settingEnvironment
Files Examined
Suggested Fix
The plugin loader should:
lspServersfrom marketplace.json plugin definitions