{"_id":"@axivo/mcp-lsp","_rev":"6-ba98be5eb7cefce630485a3656b44c95","name":"@axivo/mcp-lsp","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@axivo/mcp-lsp","version":"1.0.0","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"author":{"name":"AXIVO"},"license":"BSD-3-Clause","_id":"@axivo/mcp-lsp@1.0.0","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"homepage":"https://github.com/axivo/mcp-lsp","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"bin":{"mcp-lsp":"dist/index.js"},"dist":{"shasum":"f0f80216f23ca5b69dcbc7a7acddda1afd6c62e9","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.0.tgz","fileCount":13,"integrity":"sha512-Q1/VKdB4FtpmNcfp7JsuNs7RAwCml9nmFZ5uBZGhOzoVUSZAKIJ2P69iqCufrlP0FyWJWOZxHx2jNHl6Y3JB9w==","signatures":[{"sig":"MEYCIQDOfFHO6bZiQvVu/1GFtkjrMmPzKHiQV47HaFUbb/Be+gIhAPvlKYLIiP4cvegZY6eHycArX47AVlLs2sodd7J1rWa3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243887},"main":"index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3907d4c6df94cd27cb2880a85c806ee5620f0995","scripts":{"build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"fmunteanu","email":"versed_04ruses@icloud.com"},"repository":{"url":"git+https://github.com/axivo/mcp-lsp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Language Server Protocol integration","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4.1.0","p-limit":"^7.1.0","fast-glob":"^3.3.0","graceful-fs":"^4.2.0","deepmerge-ts":"^7.1.0","find-process":"^2.0.0","vscode-jsonrpc":"^8.2.0","@modelcontextprotocol/sdk":"^1.20.0","vscode-languageserver-protocol":"^3.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":">=5.0.0","@types/node":"^24.0.0","@types/graceful-fs":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-lsp_1.0.0_1761328139430_0.2719836911568201","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@axivo/mcp-lsp","version":"1.0.1","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"author":{"name":"AXIVO"},"license":"BSD-3-Clause","_id":"@axivo/mcp-lsp@1.0.1","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"homepage":"https://github.com/axivo/mcp-lsp","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"bin":{"mcp-lsp":"dist/index.js"},"dist":{"shasum":"b3b30d07ee512d0f9c9a9ce2dfecfc4967da6a72","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.1.tgz","fileCount":13,"integrity":"sha512-QJihnyOPNwrVhqNPVhJMLrbbhZ3lZQylVHgxgg+Y0iasbSwgeWPYdQPO7oat9PdmC2LaOPh1BAHSgwnXhorAyA==","signatures":[{"sig":"MEUCIQCEIWXh8EjY8r1TYaXZGswZl6PU2jAGy4sZzJHJlvnGOQIgQaOSpgVl+L5yiro9elhJW5a5AIplIF9EPkwGlQkwqb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axivo%2fmcp-lsp@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":244027},"main":"index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4b45a80755db20d9224359e366bff6a847253e60","scripts":{"build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a84fc5d-4f6a-4735-9731-10764873b24a"}},"repository":{"url":"git+https://github.com/axivo/mcp-lsp.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for Language Server Protocol integration","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4.1.0","p-limit":"^7.1.0","fast-glob":"^3.3.0","graceful-fs":"^4.2.0","deepmerge-ts":"^7.1.0","find-process":"^2.0.0","vscode-jsonrpc":"^8.2.0","@modelcontextprotocol/sdk":"^1.20.0","vscode-languageserver-protocol":"^3.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":">=5.0.0","@types/node":"^24.0.0","@types/graceful-fs":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-lsp_1.0.1_1761330895363_0.6655361715304322","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@axivo/mcp-lsp","version":"1.0.2","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"author":{"name":"AXIVO"},"license":"BSD-3-Clause","_id":"@axivo/mcp-lsp@1.0.2","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"homepage":"https://github.com/axivo/mcp-lsp","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"bin":{"mcp-lsp":"dist/index.js"},"dist":{"shasum":"b64922369bafbc97f12cb29d2c2df7e4347a4125","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.2.tgz","fileCount":13,"integrity":"sha512-/FUOnHEeE07QyfFhfDUKPuPcg2FxqFWSS2Jzu5UVRPt08wKAZ0xLeUnFjjabItxuv8hDO+QmIhiT3ZtIBGvSEg==","signatures":[{"sig":"MEQCIH1k8Dj7nVVft5i1ck9qN4U7QzYt7uEZgTKRd4weG1LkAiBXntFV30t4pix9LqxXwNXSn8FO3OLEhrBQZvyBlLD2vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axivo%2fmcp-lsp@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233563},"main":"index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"70862c21cb2fd1cf7b48edb9d1948afed983eb25","scripts":{"build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a84fc5d-4f6a-4735-9731-10764873b24a"}},"repository":{"url":"git+https://github.com/axivo/mcp-lsp.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for Language Server Protocol integration","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4.1.0","p-limit":"^7.1.0","fast-glob":"^3.3.0","graceful-fs":"^4.2.0","deepmerge-ts":"^7.1.0","find-process":"^2.0.0","vscode-jsonrpc":"^8.2.0","@modelcontextprotocol/sdk":"^1.20.0","vscode-languageserver-protocol":"^3.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":">=5.0.0","@types/node":"^24.0.0","@types/graceful-fs":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-lsp_1.0.2_1761519337123_0.07730193077433878","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@axivo/mcp-lsp","version":"1.0.3","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"author":{"name":"AXIVO"},"license":"BSD-3-Clause","_id":"@axivo/mcp-lsp@1.0.3","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"homepage":"https://github.com/axivo/mcp-lsp","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"bin":{"mcp-lsp":"dist/index.js"},"dist":{"shasum":"db595d98ae044f72e5b9a940e933ad21eb8cbf85","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.3.tgz","fileCount":13,"integrity":"sha512-v+3RdlS42V79kVfRTXjKlxXn5vV68FJU9MwHPTbTcIi96YrvQ8lYGwM6/A28JUiY+u/k2Nd2PRRy0WX/Esf3rw==","signatures":[{"sig":"MEUCIQCLgjwGgJ5kr2Bhyj1lUNFKy+Ji9hHCFcnLHrhxZWvduQIgXx7OIs5pbDCt5QZsl71R3YQa6+6oMvWKLmtDf9hJMB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axivo%2fmcp-lsp@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236492},"main":"index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"40a834843108c7d521a3f2fd8d127b4fe6f97154","scripts":{"build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a84fc5d-4f6a-4735-9731-10764873b24a"}},"repository":{"url":"git+https://github.com/axivo/mcp-lsp.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for Language Server Protocol integration","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4.1.0","p-limit":"^7.1.0","fast-glob":"^3.3.0","graceful-fs":"^4.2.0","deepmerge-ts":"^7.1.0","find-process":"^2.0.0","vscode-jsonrpc":"^8.2.0","@modelcontextprotocol/sdk":"^1.20.0","vscode-languageserver-protocol":"^3.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":">=5.0.0","@types/node":"^24.0.0","@types/graceful-fs":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-lsp_1.0.3_1761629994242_0.6143932126453013","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@axivo/mcp-lsp","version":"1.0.4","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"author":{"name":"AXIVO"},"license":"BSD-3-Clause","_id":"@axivo/mcp-lsp@1.0.4","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"homepage":"https://github.com/axivo/mcp-lsp","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"bin":{"mcp-lsp":"dist/index.js"},"dist":{"shasum":"2fa5fcfc5ed2f0515446f4f32329137e9ebd6987","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.4.tgz","fileCount":13,"integrity":"sha512-LFYxJW12+EpvV/IkQc6ZA+yb3wQIMSiWKxER5YpOvYacthVcLyVY4U8Gkn03mZAZTRqVe6Nf7T1MXB+RqvpF8Q==","signatures":[{"sig":"MEYCIQCx410qLTTK9UXIJzETnmt7gEbIu2sIYMuU1BdoJCZ+QQIhAMEITWmhje67l2gAjJy699Kd7zeDW9E5dUk+s6oKxvJb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axivo%2fmcp-lsp@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":232629},"main":"index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d091c2a378f43172702e9a74132c4d58073965fe","scripts":{"build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a84fc5d-4f6a-4735-9731-10764873b24a"}},"repository":{"url":"git+https://github.com/axivo/mcp-lsp.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for Language Server Protocol integration","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^4.1.0","p-limit":"^7.1.0","fast-glob":"^3.3.0","graceful-fs":"^4.2.0","deepmerge-ts":"^7.1.0","find-process":"^2.0.0","vscode-jsonrpc":"^8.2.0","@modelcontextprotocol/sdk":"^1.20.0","vscode-languageserver-protocol":"^3.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":">=5.0.0","@types/node":"^24.0.0","@types/graceful-fs":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-lsp_1.0.4_1761864028733_0.5561819373740584","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@axivo/mcp-lsp","version":"1.0.5","type":"module","description":"MCP server for Language Server Protocol integration","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"license":"BSD-3-Clause","author":{"name":"AXIVO"},"bin":{"mcp-lsp":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/axivo/mcp-lsp.git"},"scripts":{"build":"tsc","clean":"rm -rf dist"},"dependencies":{"@modelcontextprotocol/sdk":"^1.20.0","deepmerge-ts":"^7.1.0","fast-glob":"^3.3.0","find-process":"^2.0.0","graceful-fs":"^4.2.0","p-limit":"^7.1.0","vscode-jsonrpc":"^8.2.0","vscode-languageserver-protocol":"^3.17.0","zod":"^4.1.0"},"devDependencies":{"@types/graceful-fs":"^4.1.0","@types/node":"^24.0.0","typescript":">=5.0.0"},"engines":{"node":">=24.0.0"},"publishConfig":{"access":"public"},"main":"index.js","bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"homepage":"https://github.com/axivo/mcp-lsp","gitHead":"6ddae555de104ca31e1cd60aed955a096800deef","_id":"@axivo/mcp-lsp@1.0.5","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-e/LmLT+TOyH899CYEHsLXY2urdnIEXqhZxS2IusvUh1k3qQ43V+v/z7hHvIp85pHYrkyLzhd93hJT/CXuNim4g==","shasum":"303bd7adba0bf6936656ab58a1e1a114887dfcfb","tarball":"https://registry.npmjs.org/@axivo/mcp-lsp/-/mcp-lsp-1.0.5.tgz","fileCount":13,"unpackedSize":232644,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axivo%2fmcp-lsp@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRlpxj/dSfvtEq4EFQVPw3g7xy9qXTrPS4S5VSb/LyQgIgf2+NRQQx2gG77Pfe6pLyzV5v0fHAD7Dd5Je6RWubmQI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a84fc5d-4f6a-4735-9731-10764873b24a"}},"directories":{},"maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-lsp_1.0.5_1761865607004_0.80567228257024"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-24T17:48:59.367Z","modified":"2025-10-30T23:06:47.798Z","1.0.0":"2025-10-24T17:48:59.617Z","1.0.1":"2025-10-24T18:34:55.567Z","1.0.2":"2025-10-26T22:55:37.321Z","1.0.3":"2025-10-28T05:39:54.430Z","1.0.4":"2025-10-30T22:40:28.954Z","1.0.5":"2025-10-30T23:06:47.268Z"},"bugs":{"url":"https://github.com/axivo/mcp-lsp/issues"},"author":{"name":"AXIVO"},"license":"BSD-3-Clause","homepage":"https://github.com/axivo/mcp-lsp","keywords":["code-intelligence","lsp","language-server-protocol","mcp","model-context-protocol","server"],"repository":{"type":"git","url":"git+https://github.com/axivo/mcp-lsp.git"},"description":"MCP server for Language Server Protocol integration","maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"readme":"# Language Server Protocol MCP Server\n\n[![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg?style=flat&logo=opensourceinitiative&logoColor=white)](https://github.com/axivo/mcp-lsp/blob/main/LICENSE)\n[![npm](https://img.shields.io/npm/v/@axivo/mcp-lsp.svg?style=flat&logo=npm&logoColor=white)](https://www.npmjs.com/package/@axivo/mcp-lsp)\n[![Node.js](https://img.shields.io/badge/Node.js->=24.0.0-339933?style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript->=5.0.0-3178C6?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![LSP](https://img.shields.io/badge/LSP->=3.17.0-FF6B6B?style=flat&logo=microsoft&logoColor=white)](https://microsoft.github.io/language-server-protocol/)\n\nA comprehensive MCP (Model Context Protocol) server that bridges Language Server Protocol (LSP) capabilities with Claude, enabling intelligent code analysis, navigation, and development assistance across multiple programming languages.\n\n## Features\n\n### Core Capabilities\n\n- **Multi-Language Support**: Go, Helm, Kotlin, Python, Terraform, TypeScript, and [more](https://microsoft.github.io/language-server-protocol/implementors/servers/)\n- **Intelligent Code Analysis**: Symbol definitions, references, implementations, and type hierarchies\n- **Advanced Navigation**: Call hierarchies, document symbols, and workspace-wide symbol search\n- **Code Intelligence**: Hover information, completions, signature help, and inlay hints\n- **Formatting & Refactoring**: Document formatting, range formatting, and code action suggestions\n- **Project Management**: Multi-project workspace support with comprehensive file indexing\n\n### Security & Performance\n\n- **Process Isolation**: Each language server runs in isolated processes with proper lifecycle management\n- **Rate Limiting**: Configurable request throttling (default: 100 requests/minute)\n- **Resource Management**: Concurrent file read limits and graceful shutdown handling\n- **Error Recovery**: Robust error handling with automatic server restart capabilities\n\n## Language Server Setup\n\n### Prerequisites\n\nThe MCP server foundation is built on battle-tested `vscode-jsonrpc` and `vscode-languageserver-protocol` libraries, providing compatibility with all VSCode [language servers](https://microsoft.github.io/language-server-protocol/implementors/servers/). Example installation for [`Kotlin`](https://github.com/Kotlin/kotlin-lsp) language server:\n\n```bash\nbrew install JetBrains/utils/kotlin-lsp\n```\n\n### Configuration File\n\nCreate an MCP server configuration file, defining your language servers and projects.\n\n> [!NOTE]\n> A [`lsp.json`](.claude/lsp.json) configuration sample with popular development languages and multiple projects is provided as a starter guide.\n\nA language server configuration has the following format:\n\n```json\n{\n  \"servers\": {\n    \"language-id\": {                                # Required unique language identifier\n      \"command\": \"language-server-binary\",          # Required language server binary\n      \"args\": [                                     # Optional language server arguments\n        \"--stdio\"\n      ],\n      \"configuration\": {},                          # Optional language server configuration\n      \"env\": {},                                    # Optional environment variables\n      \"extensions\": [                               # Required language server extensions\n        \".extension\"\n      ],\n      \"init\": [],                                   # Optional language server initialization commands\n      \"projects\": [                                 # Required language server list of projects\n        {\n          \"name\": \"project-name\",                   # Required unique project name\n          \"description\": \"A description\",           # Optional description\n          \"url\": \"https://github.com/org/project\",  # Optional project URL\n          \"path\": \"/Users/username/github/project\"  # Required project local path\n          \"patterns\": {                             # Optional exclude or include patterns\n            \"exclude\": [\n              \"**/directory\",\n              \"**/file.extension\"\n            ],\n            \"include\": [\n              \"**/directory\",\n              \"**/file.extension\"\n            ],\n          }\n        }\n      ],\n      \"settings\": {                                 # Optional language server settings\n        \"maxConcurrentFileReads\": 10,\n        \"messageRequest\": true,\n        \"preloadFiles\": true,\n        \"rateLimitMaxRequests\": 100,\n        \"rateLimitWindowMs\": 60000,\n        \"registrationRequest\": true,\n        \"shutdownGracePeriodMs\": 100,\n        \"timeoutMs\": 600000,\n        \"workspace\": true\n      }\n    }\n  }\n}\n```\n\n#### Optional Language Server Configuration\n\nLanguage servers often require a specific configuration to function optimally. Configuration requirements are documented in each server's [official repository](https://microsoft.github.io/language-server-protocol/implementors/servers/). \n\nFor example, `pyright-langserver` requires the following settings:\n\n```json\n\"configuration\": {\n  \"settings\": {\n    \"python\": {\n      \"analysis\": {\n        \"autoSearchPaths\": true,\n        \"diagnosticMode\": \"workspace\"\n      }\n    }\n  }\n}\n```\n\n#### Optional Language Server Settings\n\nThese settings control LSP protocol behavior and server compatibility:\n\n- `maxConcurrentFileReads` - maximum number of files to read concurrently when opening project files, controls memory usage and performance during project initialization (default: `10`)\n- `messageRequest` - controls whether the language server can send `window/showMessage` requests to display user dialogs, disable for headless operation or automated environments (default: `true`)\n- `preloadFiles` - controls whether project files are loaded during or after project initialization (default: `true`)\n- `rateLimitMaxRequests` - maximum number of requests allowed per rate limit window, prevents overwhelming the language server with too many concurrent requests (default: `100`)\n- `rateLimitWindowMs` - time window in milliseconds for rate limiting, requests are counted within this sliding window (default: `60000` - 1 minute)\n- `registrationRequest` - controls whether the language server can send `client/registerCapability` requests to dynamically register capabilities, disable for servers that ignore client capability declarations (default: `true`)\n- `shutdownGracePeriodMs` - time in milliseconds to wait after sending shutdown request before forcing process termination, allows language server to complete cleanup operations (default: `100`)\n- `timeoutMs` - maximum time in milliseconds to wait for language server initialization, prevents hanging on unresponsive servers (default: `600000` - 10 minutes)\n- `workspace` - controls whether the language server initialization sends `workspace/symbol` requests to test workspace capabilities, disable for servers that don't support workspace operations or cause initialization failures (default: `true`)\n\n#### Optional Language Server Project File Patterns\n\nFile patterns use [`fast-glob`](https://www.npmjs.com/package/fast-glob) syntax. By default, the `.` dot prefix, `__` double underscore prefix, `bin`, `build`, `cache`, `coverage`, `dist`, `docs`, `excludes`, `log`, `node_modules`, `obj`, `out`, `target`, `temp`, `tests`, `tmp`, `vendor` and `venv` directories are excluded. Use `include` or `exclude` patterns to manage specific directories or files (e.g., `**/dist`, `**/dist/**/*.d.ts`, `**/*.test.js`).\n\n## MCP Server Configuration\n\nAdd to your `mcp.json` MCP servers configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"language-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@axivo/mcp-lsp\"\n      ],\n      \"env\": {\n        \"LSP_FILE_PATH\": \"/Users/username/github/mcp-lsp/.claude/lsp.json\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variables\n\n- `LSP_FILE_PATH` - Absolute path to your LSP server configuration JSON file\n\n## Multiple Language Servers Usage\n\nRun multiple language servers simultaneously to analyze different projects:\n\n```\n✅ ansible (k3s-cluster) + typescript (k3s-cluster-actions)\n✅ go (helm) + kotlin (ktor) + python (fastapi)\n```\n\nA language server can run only **one project at a time**:\n\n```\n❌ typescript (mcp-lsp) + typescript (typescript-sdk)\n```\n\nTo switch projects, restart the language server with the desired project name.\n\n## Getting Started\n\nAsk Claude to explain how the LSP tools work:\n\n- *Start the TypeScript language server with `typescript-sdk` project and check the server capabilities.*\n- *Please explain how LSP tools help you understand and review source code.*\n\nTo start performing a code review, ask Claude to:\n\n- *Start the TypeScript language server with `typescript-sdk` project and check the server capabilities.*\n- *Read the `/Users/username/github/mcp-lsp/.claude/templates/code-review.md` template prior code review.*\n- *Perform a detailed review of project source code using the LSP tools and let me know your findings.*\n\n> [!NOTE]\n> Language server start time varies by language and project size, typically few seconds for a project with thousands of files. Some language servers like `Kotlin` may take several minutes to initialize large projects. Increase `timeoutMs` value accordingly, if default timeout is reached.\n\n### Claude's Review\n\nA [public session](https://claude.ai/share/d6a5809d-0703-4f16-9c2b-a4e8d639f227) using the [DEVELOPER](https://github.com/axivo/claude) profile demonstrates LSP tool capabilities and explains how semantic analysis provides compiler-accurate understanding compared to traditional text-based search methods.\n\n### Workflow Templates\n\nSee the available [templates](.claude/templates) Claude can use for systematic development workflows.\n\n## MCP Tools\n\n### Server Management Tools\n\n1. **`start_server`**\n   - Start language server with project selection\n   - Inputs: `language_id`, `project` (optional)\n   - Returns: Server startup confirmation with process information\n\n2. **`stop_server`**\n   - Stop running language server gracefully\n   - Inputs: `language_id`\n   - Returns: Shutdown confirmation with cleanup details\n\n3. **`restart_server`**\n   - Restart language server with optional project selection\n   - Inputs: `language_id`, `project`\n   - Returns: Restart confirmation with new process information\n\n4. **`get_server_status`**\n   - Check running status of language servers\n   - Inputs: `language_id` (optional)\n   - Returns: Detailed status including uptime, project associations, and health\n\n5. **`get_server_capabilities`**\n   - Get language server capabilities and tool mappings\n   - Inputs: `language_id`\n   - Returns: Comprehensive capability list with available MCP tool mappings\n\n6. **`get_server_projects`**\n   - List available projects for a language server\n   - Inputs: `language_id`\n   - Returns: Array of configured projects with paths and descriptions\n\n### Project & Workspace Tools\n\n7. **`get_project_files`**\n   - List all files in the project workspace with pagination\n   - Inputs: `language_id`, `project`, `limit` (optional), `offset` (optional)\n   - Returns: Paginated list of project files with paths\n\n8. **`get_project_symbols`**\n   - Search for symbols across entire project workspace with pagination\n   - Inputs: `language_id`, `project`, `query`, `limit` (optional), `offset` (optional), `timeout` (optional)\n   - Returns: Paginated workspace symbol search results\n\n### Code Analysis Tools\n\n9. **`get_hover`**\n    - Show type information and documentation at cursor position\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Type information, documentation, and contextual details\n\n10. **`get_symbol_definitions`**\n    - Navigate to where symbol is originally defined\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of definition locations with file paths and positions\n\n11. **`get_symbol_references`**\n    - Find all locations where symbol is used or referenced\n    - Inputs: `file_path`, `line`, `character`, `include_declaration` (optional)\n    - Returns: Array of reference locations throughout workspace\n\n12. **`get_implementations`**\n    - Find all locations where interface or abstract method is implemented\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of concrete implementation locations\n\n13. **`get_type_definitions`**\n    - Navigate to where symbol type is defined\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of type definition locations\n\n### Navigation Tools\n\n14. **`get_call_hierarchy`**\n    - Build call hierarchy showing caller and callee relationships\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Call hierarchy preparation data\n\n15. **`get_incoming_calls`**\n    - Show all functions that call this symbol\n    - Inputs: `item` (from get_call_hierarchy)\n    - Returns: Array of incoming call relationships\n\n16. **`get_outgoing_calls`**\n    - Show all functions that this symbol calls\n    - Inputs: `item` (from get_call_hierarchy)\n    - Returns: Array of outgoing call relationships\n\n17. **`get_type_hierarchy`**\n    - Build type hierarchy showing inheritance relationships\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Type hierarchy preparation data\n\n18. **`get_supertypes`**\n    - Find all parent types that this type inherits from\n    - Inputs: `item` (from get_type_hierarchy)\n    - Returns: Array of parent type items\n\n19. **`get_subtypes`**\n    - Find all subtypes that inherit from this type\n    - Inputs: `item` (from get_type_hierarchy)\n    - Returns: Array of derived type items\n\n### Code Intelligence Tools\n\n20. **`get_completions`**\n    - Get completions and auto-suggestions at cursor position\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of completion suggestions with documentation\n\n21. **`get_resolves`**\n    - Resolve additional details for a completion item\n    - Inputs: `file_path`, `item` (from get_completions)\n    - Returns: Extended completion information and documentation\n\n22. **`get_signature`**\n    - Show function parameters and signature help at cursor position\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Function signature information and parameter details\n\n23. **`get_inlay_hints`**\n    - Show inline type annotations and parameter hints in code range\n    - Inputs: `file_path`, `start_line`, `start_character`, `end_line`, `end_character`\n    - Returns: Array of inline type hints and annotations\n\n24. **`get_inlay_hint`**\n    - Resolve additional details for an inlay hint item\n    - Inputs: `file_path`, `item` (from get_inlay_hints)\n    - Returns: Extended inlay hint information\n\n### Document Tools\n\n25. **`get_symbols`**\n    - List all symbols in document with pagination\n    - Inputs: `file_path`, `limit` (optional), `offset` (optional)\n    - Returns: Paginated document outline with functions, classes, variables\n\n26. **`get_highlights`**\n    - Highlight all occurrences of symbol at cursor position\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of symbol highlight ranges\n\n27. **`get_folding_ranges`**\n    - Identify collapsible code sections for code editor folding\n    - Inputs: `file_path`\n    - Returns: Array of foldable code ranges\n\n28. **`get_colors`**\n    - Extract color definitions and references from document\n    - Inputs: `file_path`\n    - Returns: Array of color values and their locations\n\n29. **`get_diagnostics`**\n    - Get errors, warnings, and diagnostics from document\n    - Inputs: `file_path`\n    - Returns: Array of diagnostics with severity, message, and location\n\n30. **`get_links`**\n    - Extract clickable links and references from document\n    - Inputs: `file_path`\n    - Returns: Array of document links and references\n\n31. **`get_link_resolves`**\n    - Resolve target URL for a document link item\n    - Inputs: `file_path`, `item` (from get_links)\n    - Returns: Resolved link target information\n\n32. **`get_semantic_tokens`**\n    - Extract detailed syntax tokens for advanced highlighting and analysis\n    - Inputs: `file_path`\n    - Returns: Semantic token data with types and modifiers\n\n### Formatting & Editing Tools\n\n33. **`get_format`**\n    - Format entire document using language server rules\n    - Inputs: `file_path`\n    - Returns: Formatted document text with applied style rules\n\n34. **`get_range_format`**\n    - Format specific code range using language server rules\n    - Inputs: `file_path`, `start_line`, `start_character`, `end_line`, `end_character`\n    - Returns: Formatted range with style rules applied\n\n35. **`get_code_actions`**\n    - Get automated code fixes and refactoring suggestions at cursor position\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of available code actions and quick fixes\n\n36. **`get_code_resolves`**\n    - Resolve additional details for a code action item\n    - Inputs: `file_path`, `item` (from get_code_actions)\n    - Returns: Complete code action with workspace edits\n\n37. **`get_selection_range`**\n    - Expand selection to logical code boundaries\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Array of expanded selection ranges\n\n38. **`get_linked_editing_range`**\n    - Find related ranges that should be edited simultaneously\n    - Inputs: `file_path`, `line`, `character`\n    - Returns: Linked editing ranges for synchronized updates\n\n39. **`get_symbol_renames`**\n    - Preview all locations that would be renamed with symbol\n    - Inputs: `file_path`, `line`, `character`, `new_name`\n    - Returns: Workspace edit preview for symbol renaming\n","readmeFilename":"README.md"}