You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stops the recurring re-assembly of the Rust LSP every session.
## What
- `lsp-mcp` `lsp_start` now accepts `{"preset":"rust"}` → resolves to
the canonical pinned rust-analyzer
(`/dev/tools/.../cargo-home/bin/rust-analyzer`). Backward compatible:
explicit `command` still wins.
- Root cause of the recurring pain: that path was a rustup *proxy with
no component installed*. Installed it (rust-analyzer 1.95.0).
- `cartridges/lsp-mcp/presets.json` — pinned presets (only
verified-installed servers; no unresolved entries).
- `.machine_readable/dev-toolchain.a2ml` — single source of truth for
the whole standing loop (rust lsp/build/lint/test, zig, julia, idris)
with verified paths. LSP wired now; bsp-mcp/dap-mcp adopt the same
pattern (declared, honest).
- `cartridge.json` schema updated (`preset` input; one of
command|preset).
## Verified
`deno check` clean; functional: preset rust→200 starts rust-analyzer,
bad preset→helpful 400, no-args→400, explicit command→200 (compat).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: cartridges/lsp-mcp/cartridge.json
+7-5Lines changed: 7 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -29,23 +29,25 @@
29
29
"properties": {
30
30
"command": {
31
31
"type": "string",
32
-
"description": "Language server executable (e.g. 'rust-analyzer', 'affinescript server --stdio', 'clangd')"
32
+
"description": "Language server executable (e.g. 'rust-analyzer', 'affinescript server --stdio', 'clangd'). Optional when `preset` is given."
33
+
},
34
+
"preset": {
35
+
"type": "string",
36
+
"description": "Permanent pinned toolchain preset from presets.json (e.g. 'rust' → the canonical rust-analyzer at /dev/tools). Use this instead of re-specifying the command/path every session. One of `command` or `preset` is required; an explicit `command` overrides the preset."
33
37
},
34
38
"args": {
35
39
"type": "array",
36
40
"items": {
37
41
"type": "string"
38
42
},
39
-
"description": "Additional command arguments"
43
+
"description": "Additional command arguments (appended after any preset args)"
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
5
+
"_doc": "Permanent, pinned LSP server presets. lsp_start accepts {\"preset\":\"rust\"} instead of re-specifying the command/path every time. Absolute paths point at the canonical /dev/tools toolchain. Only presets whose server binary is actually installed and verified are listed here — do NOT add a preset for a server that is not present (an unresolved preset is worse than no preset).",
0 commit comments