scheme-langserver-bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCHEME_BRIDGE_LOGLEVEL | No | Bridge log level: DEBUG / INFO / WARNING / ERROR | INFO |
| SCHEME_LANGSERVER_PATH | No | Path to the scheme-langserver executable | auto-discover |
| SCHEME_BRIDGE_REPORT_DIR | No | Default directory for debug crash reports | current working dir |
| SCHEME_LANGSERVER_TIMEOUT | No | Request timeout in seconds | 30.0 |
| SCHEME_LANGSERVER_LOG_PATH | No | Log file path | .scheme-langserver.log |
| SCHEME_LANGSERVER_CACHE_PATH | No | Directory for workspace FASL cache | .scheme-langserver-cache |
| SCHEME_LANGSERVER_AUTO_UPDATE | No | Allow auto-download when no executable is found | true |
| SCHEME_LANGSERVER_MULTI_THREAD | No | Multi-threading enable / disable | enable |
| SCHEME_LANGSERVER_MAX_MEMORY_MB | No | Sub-process memory limit in MB | 2048 |
| SCHEME_LANGSERVER_TYPE_INFERENCE | No | Type inference enable / disable | enable |
| SCHEME_LANGSERVER_MAX_CPU_SECONDS | No | Sub-process CPU time limit in seconds | 180 |
| SCHEME_LANGSERVER_TOP_ENVIRONMENT | No | Top-level environment: R6RS / R7RS / s7 / goldfish / fluent | R6RS |
| SCHEME_LANGSERVER_COMPLETION_TIMEOUT | No | Completion request timeout in seconds | 30.0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lsp_initializeA | Initialize the scheme-langserver connection. Must be called before any other LSP tool. Provides the project root directory so the language server can resolve imports and analyze the codebase. Args: root_dir: Project root directory. langserver_path: Optional path to a specific scheme-langserver executable. If provided, it overrides environment variables and project config. This is useful for switching between scheme-langserver builds at runtime, e.g. when debugging a local development build. |
| lsp_export_debug_reportA | Export a debug report for scheme-langserver upstream issue reporting. The report contains the LSP traffic log, open project files, environment info, and server stderr. Review before sharing publicly — it includes source code. When to use: scheme-langserver crashed or returned clearly wrong results, and you want to help debug by generating a report for the upstream issue tracker (https://github.com/ufo5260987423/scheme-langserver/issues). |
| lsp_shutdownB | Gracefully shut down the scheme-langserver connection. |
| lsp_restartA | Restart the scheme-langserver connection and reopen tracked documents. Use this when you want scheme-langserver to pick up configuration changes
(e.g. a new Args: root_dir: Project root directory. If omitted, the previously used root_dir is reused; if there is none, it is inferred from open documents or the current working directory. langserver_path: Optional path to a specific scheme-langserver executable. If provided, it overrides environment variables and project config. This lets you instantly switch to a local build for debugging or comparison. |
| lsp_openA | Open a file in the language server (like opening a tab in an editor). The server needs to know file contents before it can provide hover, completion, or diagnostics for that file. When to use: When you start working on a Scheme file. Keep the file open for the duration of the session; do NOT open and close repeatedly. |
| lsp_changeA | Notify the language server that a file has changed (like pressing Save). Send the new full text of the file. This keeps the server's internal state in sync with the actual file contents. When to use: IMMEDIATELY after you modify a Scheme file via filesystem tools (WriteFile/StrReplaceFile). If you skip this step, subsequent diagnostics and queries will operate on stale content. |
| lsp_closeA | Close a file in the language server. When to use: When you are completely done with a file or at session end. Do NOT close files just because you paused editing; frequent open/close wastes server resources. |
| lsp_hoverA | Show hover tooltip (type, docs) for the symbol under the cursor. Like hovering the mouse over an identifier in an IDE. Confidence: MEDIUM. Type inference is experimental; info about macro-expanded identifiers may be inaccurate. Cross-check with your knowledge. Args: file_path: Absolute path to the file. line: Zero-based line number. character: Zero-based character (column) position. |
| lsp_completeA | Trigger auto-completion at the cursor position. Like pressing Ctrl+Space in an IDE. Returns identifiers available in the current scope, including local bindings (let, lambda parameters) that may not be obvious from a simple text search. Confidence: MEDIUM. The list may miss identifiers generated by macros. |
| lsp_definitionB | Go to Definition: jump to where the symbol is defined. Like pressing F12 in an IDE. Returns file URI, line, and column. Confidence: HIGH. Reliable for locating definitions across files. |
| lsp_referencesB | Find All References: list every usage of the symbol across the workspace. Like Shift+F12 in an IDE. Confidence: HIGH. Reliable for assessing impact before refactoring. Args: include_declaration: Whether to include the definition site in the results. |
| lsp_renameA | Compute workspace edits to rename a symbol. Returns a set of text document edits that can be applied to safely rename the symbol across all files. Limitation: rename is on the scheme-langserver roadmap and may return -32601 "method not found". If so, fall back to manual renaming. |
| lsp_signatureA | Get signature help for a function call. Shows parameter names and types for the function being called at the given position. Limitation: signatureHelp is on the scheme-langserver roadmap and may return -32601 "method not found". If so, fall back to your own knowledge. |
| lsp_document_symbolA | Show the file's symbol outline (functions, variables, macros). Like the Outline / Structure panel in an IDE. Confidence: MEDIUM. Symbols generated by macros may be missing. |
| lsp_workspace_symbolA | Search symbols across the entire workspace. Like Ctrl+T / Go to Symbol in an IDE. Returns all symbols matching the query string across all indexed files. Confidence: MEDIUM. Accuracy depends on index completeness. Requires scheme-langserver >= 2.1.0. |
| lsp_code_actionB | Get code actions (quick fixes, refactorings) for a range. Limitation: codeAction is on the scheme-langserver roadmap and may return -32601 "method not found" or behave incompletely. |
| lsp_diagnosticsA | Get diagnostic messages (errors, warnings) from the language server. When to use: After lsp_change to check for errors, like IDE real-time linting. Also useful before finishing a task to ensure no errors were introduced. Why this matters for Scheme: S-expressions are catastrophically sensitive to
bracket balance. A single missing or extra parenthesis can render the entire file
unparseable. Diagnostics will catch unmatched brackets, tokenizer errors, and
structural syntax failures with high reliability — things LLMs often miss by eye.
scheme-langserver 2.1.2+ restored clear bracket-mismatch diagnostics
( Confidence: HIGH for basic syntax (brackets, undefined ids). MEDIUM/LOW for semantic errors and implementation-specific extensions (Chez-specific forms may be falsely flagged). Args: file_path: If provided, returns diagnostics for that file only. If omitted, returns diagnostics for all open files. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Each tool maps to a distinct LSP operation or lifecycle event, so there is no meaningful overlap: open/change/close manage document state, hover/complete/definition/references/signature query different perspectives, and document_symbol vs workspace_symbol are explicitly scoped to file vs workspace. The few related pairs are differentiated clearly by name and description.
All 17 tools follow the same lsp_ snake_case prefix and mostly mirror standard LSP method names, making the set predictable and easy to navigate. Even though some names are nouns rather than verb_noun phrases, the convention is uniform across the whole server.
17 tools is at the upper end of comfortable scope, but nearly every one corresponds to a distinct LSP feature or lifecycle step needed by a language-server bridge. The count feels justified rather than bloated; it is only slightly above the typical well-scoped range.
The set covers the full editing loop: initialize, open/change/close documents, query symbols/references/hover/completion, and fetch diagnostics, plus shutdown/restart and troubleshooting. Minor gaps remain (e.g., formatting, document highlighting) and a few exposed features (rename/signature/code_action) are documented as possibly unsupported by the server, but there are no critical dead ends for the core workflow.