
Lsp Setup
- 960 installs
- 37.1k repo stars
- Updated July 28, 2026
- github/awesome-copilot
lsp-setup installs Language Server Protocol servers for GitHub Copilot CLI.
About
The lsp-setup skill enables code intelligence features such as go-to-definition, find-references, hover, and type info for programming languages in GitHub Copilot CLI by installing and configuring appropriate Language Server Protocol servers. It detects OS, infers language from project files, and applies language-specific LSP install steps. Agents use the utility skill when Copilot CLI lacks symbols or navigation for a codebase. Successful setup unlocks IDE-like assistance inside CLI agent sessions. Install LSP servers for Copilot CLI code intelligence. Go-to-definition, references, hover, and type info. OS detection and language-specific server configuration. Utility skill when CLI lacks symbol navigation. Unlocks IDE-like assistance in Copilot CLI sessions. Install and configure LSP servers for Copilot CLI code intelligence in any language.
- Install LSP servers for Copilot CLI code intelligence.
- Go-to-definition, references, hover, and type info.
- OS detection and language-specific server configuration.
- Utility skill when CLI lacks symbol navigation.
- Unlocks IDE-like assistance in Copilot CLI sessions.
Lsp Setup by the numbers
- 960 all-time installs (skills.sh)
- +33 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #73 of 826 Skill Development skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
What lsp-setup says it does
Enable code intelligence (go-to-definition, find-references, hover, type info) for any programming language
npx skills add https://github.com/github/awesome-copilot --skill lsp-setupAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 960 |
|---|---|
| repo stars | ★ 37.1k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | github/awesome-copilot ↗ |
How do I get go-to-definition working in Copilot CLI for this language?
Install and configure LSP servers for Copilot CLI code intelligence in any language.
Who is it for?
Copilot CLI users missing code intelligence for their language.
Skip if: Skip when LSP is already working or IDE-only navigation suffices.
When should I use this skill?
User sets up LSP for Copilot CLI, code intelligence, or language server install.
What you get
Configured LSP server with definition, references, and hover in CLI.
- Per-OS LSP install commands
- lspServers JSON snippets
Files
LSP Setup for GitHub Copilot CLI
UTILITY SKILL — installs and configures Language Server Protocol servers for Copilot CLI. USE FOR: "setup LSP", "install language server", "configure LSP for Java", "add TypeScript LSP", "enable code intelligence", "I need go-to-definition", "find references not working", "need better code understanding" DO NOT USE FOR: general coding tasks, IDE/editor LSP configuration, non-Copilot-CLI setups
Workflow
1. Ask the language — use ask_user to ask which programming language(s) the user wants LSP support for 2. Detect the OS — run uname -s (or check for Windows via $env:OS / %OS%) to determine macOS, Linux, or Windows 3. Look up the LSP server — read references/lsp-servers.md for known servers, install commands, and config snippets 4. Ask scope — use ask_user to ask whether the config should be user-level (~/.copilot/lsp-config.json) or repo-level (lsp.json at the repo root or .github/lsp.json) 5. Install the server — run the appropriate install command for the detected OS 6. Write the config — merge the new server entry into the chosen config file (~/.copilot/lsp-config.json for user-level; lsp.json or .github/lsp.json for repo-level). If a repo-level config already exists, keep using that location; otherwise ask the user which repo-level location they prefer. Create the file if missing and preserve existing entries. 7. Verify — confirm the LSP binary is on $PATH and the config file is valid JSON
Configuration Format
Copilot CLI reads LSP configuration from user-level or repo-level locations, and repo-level config takes precedence over user-level config:
- User-level:
~/.copilot/lsp-config.json - Repo-level:
lsp.json(repo root) or.github/lsp.json
The JSON structure:
{
"lspServers": {
"<server-key>": {
"command": "<binary>",
"args": ["--stdio"],
"fileExtensions": {
".<ext>": "<languageId>",
".<ext2>": "<languageId>"
}
}
}
}Key rules
commandis the binary name (must be on$PATH) or an absolute path.argsalmost always includes"--stdio"to use standard I/O transport.fileExtensionsmaps each file extension (with leading dot) to a Language ID.- Multiple servers can coexist in
lspServers. - When merging into an existing file, never overwrite other server entries — only add or update the target language key.
Behavior
- Always use
ask_userwithchoiceswhen asking the user to pick a language or scope. - If the language is not listed in
references/lsp-servers.md, search the web for "<language> LSP server" and guide the user through manual configuration. - If a package manager is not available (e.g. no Homebrew on macOS), suggest alternative install methods from the reference file.
- After installation, run
which <binary>(orwhere.exeon Windows) to confirm the binary is accessible. - Show the user the final config JSON before writing it.
- If the config file already exists, read it first and merge — do not clobber.
Verification
After setup, tell the user:
1. Type /exit to quit Copilot CLI — this is required so the new LSP configuration is loaded on next launch 2. Re-launch copilot in a project with files of the configured language 3. Run /lsp to check the server status 4. Try code intelligence features like go-to-definition or hover
Known LSP Servers for Copilot CLI
Reference data for the lsp-setup skill. Each section contains install commands per OS and a ready-to-use config snippet.
Config snippet format: Each snippet below shows the object to insert as a value under the top-levellspServerskey. A complete config file looks like:{ "lspServers": { <snippet here> } }. When adding multiple languages, merge their snippets as sibling keys underlspServers.
---
TypeScript / JavaScript
Server: typescript-language-server
Install
| OS | Command |
|---|---|
| Any | npm install -g typescript typescript-language-server |
Config snippet
{
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact"
}
}
}---
Java
Server: Eclipse JDT Language Server (jdtls)
Requires Java 21+ on JAVA_HOME or $PATH.
Install
| OS | Command |
|---|---|
| macOS | brew install jdtls |
| Linux | Check distro repos for jdtls or eclipse.jdt.ls; alternatively download from https://download.eclipse.org/jdtls/milestones/ |
| Windows | Download from https://download.eclipse.org/jdtls/milestones/ and add bin/ to PATH |
On macOS with Homebrew, the binary is installed as jdtls on $PATH.
Config snippet
{
"java": {
"command": "jdtls",
"args": [],
"fileExtensions": {
".java": "java"
}
}
}Note: Thejdtlswrapper script handles--stdiomode internally. If using a manual install, you may need to invoke the launcher jar directly — see the jdtls README for details.
---
Python
Server: pyright
Install
| OS | Command |
|---|---|
| Any | npm install -g pyright |
| Any | pip install pyright |
Config snippet
{
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python"
}
}
}---
Go
Server: gopls
Install
| OS | Command |
|---|---|
| Any | go install golang.org/x/tools/gopls@latest |
| macOS | brew install gopls |
Config snippet
{
"go": {
"command": "gopls",
"args": ["serve"],
"fileExtensions": {
".go": "go"
}
}
}---
Rust
Server: rust-analyzer
Install
| OS | Command |
|---|---|
| Any | rustup component add rust-analyzer |
| macOS | brew install rust-analyzer |
| Linux | Distribution package or rustup |
| Windows | rustup component add rust-analyzer or download from GitHub releases |
Config snippet
{
"rust": {
"command": "rust-analyzer",
"args": [],
"fileExtensions": {
".rs": "rust"
}
}
}---
C / C++
Server: clangd
Install
| OS | Command |
|---|---|
| macOS | brew install llvm (clangd included) or Xcode command line tools |
| Linux | apt install clangd / dnf install clang-tools-extra |
| Windows | Download LLVM from https://releases.llvm.org/ |
Config snippet
{
"cpp": {
"command": "clangd",
"args": ["--background-index"],
"fileExtensions": {
".c": "c",
".h": "c",
".cpp": "cpp",
".cxx": "cpp",
".cc": "cpp",
".hpp": "cpp",
".hxx": "cpp"
}
}
}---
C# (.NET)
Server: Roslyn Language Server (via dotnet dnx)
Install
| OS | Command |
|---|---|
| Any | Requires the .NET SDK installed |
Config snippet
{
"csharp": {
"command": "dotnet",
"args": ["dnx", "roslyn-language-server", "--yes", "--prerelease", "--", "--stdio", "--autoLoadProjects"],
"fileExtensions": {
".cs": "csharp"
}
}
}---
Ruby
Server: solargraph
Install
| OS | Command |
|---|---|
| Any | gem install solargraph |
Config snippet
{
"ruby": {
"command": "solargraph",
"args": ["stdio"],
"fileExtensions": {
".rb": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}---
PHP
Server: intelephense
Install
| OS | Command |
|---|---|
| Any | npm install -g intelephense |
Config snippet
{
"php": {
"command": "intelephense",
"args": ["--stdio"],
"fileExtensions": {
".php": "php"
}
}
}---
Kotlin
Server: kotlin-language-server
Install
| OS | Command |
|---|---|
| macOS | brew install kotlin-language-server |
| Any | Download from GitHub releases and add to PATH |
Config snippet
{
"kotlin": {
"command": "kotlin-language-server",
"args": [],
"fileExtensions": {
".kt": "kotlin",
".kts": "kotlin"
}
}
}---
Swift
Server: sourcekit-lsp (bundled with Swift toolchain)
Install
| OS | Command |
|---|---|
| macOS | Included with Xcode; binary at xcrun sourcekit-lsp |
| Linux | Included with Swift toolchain; install from https://swift.org |
| Windows | Included with Swift toolchain; install from https://swift.org |
Config snippet
{
"swift": {
"command": "sourcekit-lsp",
"args": [],
"fileExtensions": {
".swift": "swift"
}
}
}On macOS you may need to use the full path:/usr/bin/sourcekit-lspor setcommandtoxcrunwithargs: ["sourcekit-lsp"].
---
Lua
Server: lua-language-server
Install
| OS | Command |
|---|---|
| macOS | brew install lua-language-server |
| Linux | Download from GitHub releases |
| Windows | Download from GitHub releases |
Config snippet
{
"lua": {
"command": "lua-language-server",
"args": [],
"fileExtensions": {
".lua": "lua"
}
}
}---
YAML
Server: yaml-language-server
Install
| OS | Command |
|---|---|
| Any | npm install -g yaml-language-server |
Config snippet
{
"yaml": {
"command": "yaml-language-server",
"args": ["--stdio"],
"fileExtensions": {
".yaml": "yaml",
".yml": "yaml"
}
}
}---
Bash / Shell
Server: bash-language-server
Install
| OS | Command |
|---|---|
| Any | npm install -g bash-language-server |
Config snippet
{
"bash": {
"command": "bash-language-server",
"args": ["start"],
"fileExtensions": {
".sh": "shellscript",
".bash": "shellscript",
".zsh": "shellscript"
}
}
}Related skills
How it compares
Use this when agent CLI tooling needs explicit LSP install and config steps rather than relying on a preconfigured IDE alone.
FAQ
What features does LSP enable?
Go-to-definition, find-references, hover, and type information.
Which CLI?
GitHub Copilot CLI utility LSP setup skill.
How is language chosen?
Inferred from project files with OS-aware install steps.
Is Lsp Setup safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.