orchestra-mcp / lsp
Orchestra MCP Lsp Plugin
Fund package maintenance!
fadymondy
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/orchestra-mcp/lsp
Requires
- php: ^8.2
- orchestra-mcp/plugins: v0.0.1
Requires (Dev)
- carthage-software/mago: ^1.0
- laravel/pint: ^1.24
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
This package is auto-updated.
Last update: 2026-02-11 13:16:28 UTC
README
LSP
Language Server Protocol manager for Orchestra MCP. Manages 22 pre-configured language servers with auto-restart, binary detection, and full lifecycle control. An Orchestra MCP plugin that provides 6 MCP tools and 5 Artisan commands for server management.
How It Works
The LSP plugin maintains a registry of language server definitions loaded from config. Each server tracks its own runtime state (stopped, starting, running, crashed). The service handles binary detection, lifecycle transitions, and automatic restart with configurable cooldown and limits.
Config (22 server definitions)
↓ boot()
ServerRegistry (definitions + instances)
↓
LspService (lifecycle management)
↓ start / stop / restart
ServerInstance (runtime state)
↓ events
ServerStarted / ServerStopped / ServerCrashed / ServerRestarted
Installation
composer require orchestra-mcp/lsp
The service provider is auto-discovered. No manual registration needed.
Configuration
Publish the config:
php artisan vendor:publish --tag=orchestra-lsp-config
| Option | Env | Default | Description |
|---|---|---|---|
auto_start |
ORCHESTRA_LSP_AUTO_START |
true |
Auto-start servers on file open |
auto_restart |
ORCHESTRA_LSP_AUTO_RESTART |
true |
Auto-restart crashed servers |
max_restarts |
ORCHESTRA_LSP_MAX_RESTARTS |
5 |
Max restart attempts per server |
restart_cooldown |
ORCHESTRA_LSP_RESTART_COOLDOWN |
3 |
Seconds between restarts |
start_timeout |
ORCHESTRA_LSP_START_TIMEOUT |
30 |
Server init timeout |
log_level |
ORCHESTRA_LSP_LOG_LEVEL |
info |
Logging verbosity |
Pre-configured Servers (22)
| Language | Server | Binary |
|---|---|---|
| PHP | Intelephense, Phpactor | intelephense, phpactor |
| TypeScript/JS | TypeScript Language Server | typescript-language-server |
| Python | Pyright, Python LSP | pyright-langserver, pylsp |
| Rust | Rust Analyzer | rust-analyzer |
| Go | gopls | gopls |
| C/C++ | clangd | clangd |
| CSS/SCSS | CSS Language Server | vscode-css-language-server |
| HTML | HTML Language Server | vscode-html-language-server |
| JSON | JSON Language Server | vscode-json-language-server |
| Vue | Volar | vue-language-server |
| Svelte | Svelte Language Server | svelteserver |
| Bash | Bash Language Server | bash-language-server |
| YAML | YAML Language Server | yaml-language-server |
| Docker | Dockerfile Language Server | docker-langserver |
| Tailwind | Tailwind CSS Language Server | tailwindcss-language-server |
| Lua | Lua Language Server | lua-language-server |
| Kotlin | Kotlin Language Server | kotlin-language-server |
| Java | Eclipse JDT | jdtls |
| Ruby | Ruby LSP | ruby-lsp |
| Markdown | Marksman | marksman |
| ESLint | ESLint Language Server | vscode-eslint-language-server |
Usage
Facade
use OrchestraMcp\Lsp\Facades\Lsp; Lsp::startServer('intelephense'); Lsp::findServersByLanguage('php'); Lsp::getStatus();
Custom Server Registration
use OrchestraMcp\Lsp\Data\ServerDefinition; use OrchestraMcp\Lsp\Facades\Lsp; Lsp::registerServer(new ServerDefinition( id: 'my-lsp', name: 'My Custom LSP', binary: 'my-lsp', args: ['--stdio'], languages: ['custom'], extensions: ['.cst'], ));
Artisan Commands
php artisan lsp:list # List all servers php artisan lsp:list --language=php # Filter by language php artisan lsp:status # Service status php artisan lsp:start intelephense # Start a server php artisan lsp:stop intelephense # Stop a server
MCP Tools
| Tool | Annotation | Description |
|---|---|---|
lsp-status |
#[IsReadOnly] |
Service status, server counts, uptime |
lsp-server-list |
#[IsReadOnly] |
List servers with optional language filter |
lsp-server-info |
#[IsReadOnly] |
Detailed info about a specific server |
lsp-server-start |
#[IsIdempotent] |
Start a server |
lsp-server-stop |
#[IsIdempotent] |
Stop a running server |
lsp-server-restart |
#[IsIdempotent] |
Restart with cooldown limits |
Testing
# Run LSP tests php artisan test --compact --filter=Lsp # From package directory cd packages/orchestra-mcp/lsp composer test
49 tests, 138 assertions covering plugin registration, service lifecycle, data types, and registry operations.
Documentation
Full documentation is available in the docs/ directory:
- Getting Started — Installation, configuration, quick start
- Architecture — Design overview, server lifecycle
- Tools — MCP tool reference
- Commands — Artisan command reference
- Configuration — Config key reference
- Testing — Test guide
- API Reference — Services, events, data types
Development
# Install dependencies composer install # Run tests composer test # Format code composer format # Static analysis composer check # Lint composer lint
License
MIT
