System-wide LSP failure: No LSP server available for any file type despite correct configuration

Resolved 💬 5 comments Opened Dec 27, 2025 by mp3063 Closed Feb 3, 2026

Bug Description

LSP functionality is completely non-functional across ALL language servers despite having all prerequisites correctly configured. Both PHP LSP and TypeScript LSP fail with identical error: "No LSP server available for file type: .php/.js"

Environment

  • OS: macOS (Darwin 25.1.0)
  • Claude Code Version: Latest (as of 2025-12-27)
  • Shell: zsh
  • Node Version: v22.20.0 (via Laravel Herd NVM)
  • Project Type: Laravel 12.x application

Prerequisites Verified (All ✅)

Environment Variable

$ echo $ENABLE_LSP_TOOL
1

PHP LSP Setup

  • Plugin enabled: php-lsp@claude-plugins-official v1.0.0 in ~/.claude/settings.json
  • Intelephense installed: /Users/sin/Library/Application Support/Herd/config/nvm/versions/node/v22.20.0/bin/intelephense
  • Plugin files present: Verified in ~/.claude/plugins/cache/ and marketplaces

TypeScript LSP Setup

  • Plugin enabled: typescript-lsp@claude-plugins-official in ~/.claude/settings.json
  • typescript-language-server installed: /Users/sin/Library/Application Support/Herd/config/nvm/versions/node/v22.20.0/bin/typescript-language-server
  • TypeScript compiler installed: Available in PATH

Restarts

  • ✅ Claude Code restarted multiple times (4+ separate sessions)
  • ✅ Terminal restarted
  • ✅ Full system restart attempted

Steps to Reproduce

  1. Install Intelephense: npm install -g intelephense
  2. Install TypeScript language server: npm install -g typescript-language-server typescript
  3. Enable LSP tool: export ENABLE_LSP_TOOL=1 in ~/.zshrc
  4. Enable plugins in ~/.claude/settings.json:

``json
{
"enabledPlugins": {
"php-lsp@claude-plugins-official": true,
"typescript-lsp@claude-plugins-official": true
}
}
``

  1. Restart Claude Code
  2. Attempt LSP operation on any PHP or JS file

Actual Behavior

# Testing PHP LSP
LSP operation: documentSymbol
File: app/Models/User.php
Line: 1, Character: 1

Result: "No LSP server available for file type: .php"
# Testing TypeScript LSP
LSP operation: documentSymbol  
File: resources/js/app.js
Line: 1, Character: 1

Result: "No LSP server available for file type: .js"

Expected Behavior

LSP operations should return symbol information, definitions, references, hover documentation, etc. from the respective language servers.

Diagnostic Analysis

This is a system-wide LSP failure, not a plugin-specific issue:

  1. Both PHP and TypeScript LSP fail identically - suggests core LSP infrastructure issue
  2. All prerequisites are met - language servers installed, environment variable set, plugins enabled
  3. Multiple restarts have not resolved the issue - not a transient initialization problem
  4. No error messages or diagnostic output - LSP system fails silently

Possible Root Causes

  1. ENABLE_LSP_TOOL environment variable is read but not properly activating LSP functionality
  2. Fundamental bug in Claude Code's LSP manager preventing initialization of ANY language servers
  3. LSP tool requires additional undocumented configuration
  4. Race condition in plugin loading preventing LSP server registration

Impact

Without working LSP functionality, users cannot access:

  • Go-to-definition
  • Find references
  • Hover documentation
  • Symbol navigation
  • Call hierarchy
  • Code intelligence features

This severely limits Claude Code's effectiveness for large codebases where navigation is critical.

Workaround

Currently using traditional tools (Grep, Glob, Read) for code navigation, which is significantly less convenient than LSP-powered navigation.

Additional Context

This issue has been thoroughly investigated over 4+ separate Claude Code sessions with multiple restarts. The diagnostic testing (comparing PHP LSP vs TypeScript LSP) definitively shows this is a system-wide LSP infrastructure failure, not a plugin-specific bug.

Full diagnostic history available if needed.

View original on GitHub ↗

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