Expose VSCode features such as file viewing and editing as MCP, enabling the LLM to access these functionalities.
This server exposes 11 tools across VSCode editor and debug capabilities. Tool naming is generally action-oriented (execute_command, code_checker, focus_editor), but there are duplicate tool definitions (list_debug_sessions vs listDebugSessions, start_debug_session vs startDebugSession) indicating inconsistent registration. Most descriptions are present but vary in quality, some are thorough (execute_command with 250+ chars), others minimal (list_debug_sessions with only 46 chars). All tools have input schemas in JSON Schema format with proper type definitions. However, several parameters lack detailed descriptions, and output schemas are not explicitly documented in the provided code. Error handling guidance is present in some tools (e.g., startDebugSession validates workspace folder) but inconsistent across the board. The text_editor tool is multi-operation (view, str_replace, create, insert, undo_edit) which violates single-responsibility, though it's defensible as a unified file manipulation interface.
Retrieve diagnostics from VSCode's language services for the active workspace. Use this tool after making changes to any code in the filesystem to ensure no new errors were introduced, or when requested by the user.
Execute a command in a VSCode integrated terminal with proper shell integration. This tool provides detailed output and exit status information, and supports: - Custom working directory - Shell integration for reliable output capture - Output compression for large outputs - Detailed exit status reporting - Flag for potentially destructive commands (modifySomething: false to skip confirmation for read-only commands) When running commands that might prompt for user input, include appropriate flags like '-y' or '--yes' to prevent interactive prompts from blocking execution.
Execute any VSCode command with optional parameters.
Open the specified file in the VSCode editor and navigate to a specific line and column. Use this tool to bring a file into focus and position the editor's cursor where desired. Note: This tool operates on the editor visual environment so that the user can see the file. It does not return the file contents in the tool call result.
Get the output from the VSCode integrated terminal.
Duplicate tool definitions with inconsistent naming. list_debug_sessions (snake_case) and listDebugSessions (camelCase), start_debug_session and startDebugSession, stop_debug_session and stopDebugSession. This creates confusion for LLM tool selection and violates the single-name convention per capability.
Minimal description for list_debug_sessions (46 chars: 'List all active debug sessions in the workspace.'). Baselines show descriptions should average 194 chars (p10=34, p90=392). Descriptions under 50 chars lack LLM context for selection. Needs WHEN/WHY guidance.
text_editor tool violates single-responsibility principle. It handles 5 distinct operations (view, str_replace, create, insert, undo_edit) via a single 'command' enum parameter. Should split into separate tools: read_file, update_file, create_file, insert_file, undo_edit_file for independent composition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 11 | 2025-06-18+ | v2 |
| 2026-03-09 | C | 61 | - | v1 |
List all active debug sessions in the workspace. Exposes debug session information, including each session's ID, name, and associated launch configuration.
List contents of a directory in the workspace.
List all available VSCode commands.
Preview a URL in VSCode's preview pane.
Restart a debug session by stopping it and then starting it with the provided configuration.
Start a new debug session using the provided configuration.
Stop all debug sessions that match the provided session name.
A text editor tool that provides file manipulation capabilities using VSCode's native APIs: - view: Read file contents with optional line range - str_replace: Replace text in file - create: Create new file - insert: Insert text at specific line - undo_edit: Restore from backup Code Editing Tips: - VSCode may automatically prune unused imports when saving. To prevent this, make sure the imported type is actually used in your code before adding the import.
No output schema documentation visible in source. Tool descriptions and parameters are documented, but return types are inferred from implementations (e.g., startDebugSession returns 'content' with text/json, isError). LLMs cannot plan downstream calls without explicit schema declarations.
code_checker description lacks specificity. States tool 'retrieves diagnostics' but does not explain what 'active workspace' means, whether it includes node_modules, or how results are filtered. Description reads as generic API wrapper rather than LLM-optimized guidance.
restart_debug_session and stop_debug_session have minimal descriptions (50 chars each). No guidance on semantics: does restart guarantee the old session is stopped before new one starts? What if restart fails mid-way? Error recovery path is unclear.
text_editor's 'skip_dialog' parameter is undocumented in the description field (visible in schema only). Descriptions state parameters should be self-documenting; this one exposes internal test logic ('for testing') rather than agent-facing intent.