Editors¶
passmcp-lsp is a stdio language server: an editor starts the passmcp-lsp
program and exchanges Language Server Protocol messages with it over stdin
and stdout. Any editor that can do that can use it, for JSON and
JSON-with-comments files. The server recognises the MCP artefacts among
those files and says nothing about the rest.
VS Code¶
The extension in editors/vscode starts the server for every JSON
document. It does not bundle the server; install passmcp-lsp first, then
build and install the extension from a checkout:
make vscode
code --install-extension editors/vscode/passmcp-lsp.vsix
| Setting | Default | Meaning |
|---|---|---|
passmcpLsp.path |
passmcp-lsp |
The server program: a path, or a name on PATH |
passmcpLsp.passmcpPath |
empty | The passmcp program hover asks for guidance |
passmcpLsp.trace.server |
off |
Trace the protocol in the output panel |
The two paths are machine-scoped settings. A workspace's
.vscode/settings.json cannot set them, so opening a repository cannot
choose which program the extension starts. Changing either restarts the
server.
The extension is not published to a marketplace.
Neovim¶
Neovim 0.11 or later has the configuration built in:
vim.lsp.config('passmcp_lsp', {
cmd = { 'passmcp-lsp' },
filetypes = { 'json', 'jsonc' },
root_markers = { '.git' },
})
vim.lsp.enable('passmcp_lsp')
To name the passmcp program for hover, add
init_options = { passmcpPath = '/path/to/passmcp' }, or start the server
with cmd = { 'passmcp-lsp', '--passmcp', '/path/to/passmcp' }.
Any other editor¶
| What the editor needs | Value |
|---|---|
| Command | passmcp-lsp (it accepts --stdio, which some clients add) |
| Transport | stdio |
| Languages | json, jsonc |
| Initialization options | optional: {"passmcpPath": "/path/to/passmcp"} |
The server asks for whole-document sync and applies incremental changes as
well when a client sends them. It advertises diagnostics (pushed with
textDocument/publishDiagnostics) and hover.