LSP servers from plugins not registered - timing bug in initialization

Resolved 💬 7 comments Opened Dec 23, 2025 by oleksiitrotchenko Closed Mar 11, 2026

Description

LSP servers defined in plugins (via lspServers in marketplace.json) are not being registered because the LSP server manager initializes before plugins finish loading.

Steps to Reproduce

  1. Install the official typescript-lsp plugin from claude-plugins-official marketplace
  2. Enable the plugin in settings ("typescript-lsp@claude-plugins-official": true)
  3. Ensure typescript-language-server is installed globally (npm install -g typescript-language-server typescript)
  4. Start a new Claude Code session
  5. Try to use the LSP tool on a TypeScript file

Expected Behavior

The LSP tool should work with TypeScript files, using the typescript-language-server configured in the plugin.

Actual Behavior

No LSP server available for file type: .ts

Debug Log Evidence

From ~/.claude/debug/latest:

2025-12-23T23:29:23.045Z [DEBUG] [LSP MANAGER] initializeLspServerManager() called
2025-12-23T23:29:23.048Z [DEBUG] LSP server manager initialized successfully
2025-12-23T23:29:23.048Z [DEBUG] LSP notification handlers registered successfully for all 0 server(s)
2025-12-23T23:29:23.051Z [DEBUG] Loading plugin typescript-lsp from source: "./plugins/typescript-lsp"

Notice the timing: LSP manager registers 0 servers at 23:29:23.048, then the plugin starts loading at 23:29:23.051.

Environment

  • Claude Code version: 2.0.74+
  • OS: macOS Darwin 24.6.0
  • typescript-language-server version: 5.1.3
  • Plugin: typescript-lsp@claude-plugins-official v1.0.0

Plugin Configuration (from marketplace.json)

{
  "name": "typescript-lsp",
  "lspServers": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"],
      "extensionToLanguage": {
        ".ts": "typescript",
        ".tsx": "typescriptreact",
        ".js": "javascript",
        ".jsx": "javascriptreact"
      }
    }
  }
}

Suggested Fix

The LSP server manager initialization should wait for plugins to finish loading before registering LSP servers, or there should be a mechanism to register LSP servers after plugins load.

View original on GitHub ↗

This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗