A Visual Studio Code extension (available on the Marketplace) that allows Claude and other MCP clients to code directly in VS Code! Inspired by Serena, but using VS Code's built-in capabilities. Perfect for extending existing coding agents like Claude Code with VS Code-specific capabilities (symbol search, document outlines) without duplicating tools they already have. Note that this extension use
Add this skill
npx mdskills install juehang/vscode-mcp-serverComprehensive MCP server exposing VS Code's filesystem, editing, symbol search, and diagnostics capabilities with excellent documentation
1# VS Code MCP Server23A Visual Studio Code extension (available on the [Marketplace](https://marketplace.visualstudio.com/items?itemName=JuehangQin.vscode-mcp-server)) that allows Claude and other MCP clients to code directly in VS Code! Inspired by [Serena](https://github.com/oraios/serena), but using VS Code's built-in capabilities. Perfect for extending existing coding agents like Claude Code with VS Code-specific capabilities (symbol search, document outlines) without duplicating tools they already have. Note that this extension uses the streamable HTTP API, not the SSE API.45This extension can allow for execution of shell commands. This means that there is a potential security risk, so use with caution, and ensure that you trust the MCP client that you are using and that the port is not exposed to anything. Authentication would help, but as the MCP authentication spec is still in flux, this has not been implemented for now.67PRs are welcome!89## Demo Video10https://github.com/user-attachments/assets/20b87dfb-fc39-4710-a910-b9481dde1e901112## Installation13141. Install the extension from the [Marketplace](https://marketplace.visualstudio.com/items?itemName=JuehangQin.vscode-mcp-server) or clone this repository and run `npm install` and `npm run compile` to build it.1516## Claude Desktop Configuration1718Claude Desktop can be configured to use this extension as an MCP server. To do this, your `claude_desktop_config.json` file should look like this:19```20{21 "mcpServers": {22 "vscode-mcp-server": {23 "command": "npx",24 "args": ["mcp-remote@next", "http://localhost:3000/mcp"]25 }2627 }28}29```3031I also like to use this extension in a Claude project, as it allows me to specify additional instructions for Claude. I find the following prompt to work well:32```33You are working on an existing codebase, which you can access using your tools. These code tools interact with a VS Code workspace.3435WORKFLOW ESSENTIALS:361. Always start exploration with list_files_code on root directory (.) first372. CRITICAL: Run get_diagnostics_code after EVERY set of code changes before completing tasks383. For small edits (≤10 lines): use replace_lines_code with exact original content394. For large changes, new files, or uncertain content: use create_file_code with overwrite=true4041EXPLORATION STRATEGY:42- Start: list_files_code with path='.' (never recursive on root)43- Understand structure: read key files like package.json, README, main entry points44- Find symbols: use search_symbols_code for functions/classes, get_document_symbols_code for file overviews45- Before editing: read_file_code the target file to understand current content4647EDITING BEST PRACTICES:48- Small modifications: replace_lines_code (requires exact original content match)49- If replace_lines_code fails: read_file_code the target lines, then retry with correct content50- Large changes: create_file_code with overwrite=true is more reliable51- After any changes: get_diagnostics_code to check for errors5253PLANNING REQUIREMENTS:54Before making code modifications, present a comprehensive plan including:55- Confidence level (1-10) and reasoning56- Specific tools you'll use and why57- Files you'll modify and approach (small edits vs complete rewrites)58- How you'll verify the changes work (diagnostics, testing, etc.)5960ERROR HANDLING:61- Let errors happen naturally - don't add unnecessary try/catch blocks62- For tool failures: follow the specific recovery guidance in each tool's description63- If uncertain about file content: use read_file_code to verify before making changes6465APPROVAL PROCESS:66IMPORTANT: Only run code modification tools after presenting a plan and receiving explicit approval. Each change requires separate approval.6768Do not add tests unless specifically requested. If you believe testing is important, explain why and let the user decide.69```7071For context efficiency when exploring codebases, consider adding this to your CLAUDE.md:72```73## VS Code Symbol Tools for Context Efficiency74Use VS Code symbol tools to reduce context consumption:75- `get_document_symbols_code` for file structure overview instead of reading entire files76- `search_symbols_code` to find symbols by name across the project77- `get_symbol_definition_code` for type info and docs without full file context78- Workflow: get outline → search symbols → get definitions → read implementation only when needed79```80818283This extension serves as a Model Context Protocol (MCP) server, exposing VS Code's filesystem and editing capabilities to MCP clients.8485## Features8687The VS Code MCP Server extension implements an MCP-compliant server that allows AI models and other MCP clients to:8889- **List files and directories** in your VS Code workspace90- **Read file contents** with encoding support and size limits91- **Move files and directories** with proper refactoring support for imports92- **Rename files and directories** with automatic reference updates93- **Copy files** to new locations (files only, not directories)94- **Search for symbols** across your workspace95- **Get symbol definitions** and hover information by line and symbol name96- **Create new files** using VS Code's WorkspaceEdit API97- **Make line replacements** in files98- **Check for diagnostics** (errors and warnings) in your workspace99- **Execute shell commands** in the integrated terminal with shell integration100- **Toggle the server** on and off via a status bar item101102This extension enables AI assistants and other tools to interact with your VS Code workspace through the standardized MCP protocol.103104## How It Works105106The extension creates an MCP server that:1071081. Runs locally on a configurable port (when enabled)1092. Handles MCP protocol requests via HTTP1103. Exposes VS Code's functionality as MCP tools1114. Provides a status bar indicator showing server status, which can be clicked to toggle the server on/off112113## Supported MCP Tools114115### File Tools116- **list_files_code**: Lists files and directories in your workspace117 - Parameters:118 - `path`: The path to list files from119 - `recursive` (optional): Whether to list files recursively120121- **read_file_code**: Reads file contents122 - Parameters:123 - `path`: The path to the file to read124 - `encoding` (optional): File encoding (default: utf-8)125 - `maxCharacters` (optional): Maximum character count (default: 100,000)126127- **move_file_code**: Moves a file or directory to a new location using VS Code's WorkspaceEdit API128 - Parameters:129 - `sourcePath`: The current path of the file or directory to move130 - `targetPath`: The new path where the file or directory should be moved to131 - `overwrite` (optional): Whether to overwrite if target already exists (default: false)132133- **rename_file_code**: Renames a file or directory using VS Code's WorkspaceEdit API134 - Parameters:135 - `filePath`: The current path of the file or directory to rename136 - `newName`: The new name for the file or directory137 - `overwrite` (optional): Whether to overwrite if a file with the new name already exists (default: false)138139- **copy_file_code**: Copies a file to a new location using VS Code's file system API140 - Parameters:141 - `sourcePath`: The path of the file to copy142 - `targetPath`: The path where the copy should be created143 - `overwrite` (optional): Whether to overwrite if target already exists (default: false)144145### Edit Tools146- **create_file_code**: Creates a new file using VS Code's WorkspaceEdit API147 - Parameters:148 - `path`: The path to the file to create149 - `content`: The content to write to the file150 - `overwrite` (optional): Whether to overwrite if the file exists (default: false)151 - `ignoreIfExists` (optional): Whether to ignore if the file exists (default: false)152153- **replace_lines_code**: Replaces specific lines in a file154 - Parameters:155 - `path`: The path to the file to modify156 - `startLine`: The start line number (1-based, inclusive)157 - `endLine`: The end line number (1-based, inclusive)158 - `content`: The new content to replace the lines with159 - `originalCode`: The original code for validation160161### Diagnostics Tools162- **get_diagnostics_code**: Checks for warnings and errors in your workspace163 - Parameters:164 - `path` (optional): File path to check (if not provided, checks the entire workspace)165 - `severities` (optional): Array of severity levels to include (0=Error, 1=Warning, 2=Information, 3=Hint). Default: [0, 1]166 - `format` (optional): Output format ('text' or 'json'). Default: 'text'167 - `includeSource` (optional): Whether to include the diagnostic source. Default: true168169 This tool is particularly useful for:170 - Code quality checks before committing changes171 - Verifying fixes resolved all reported issues172 - Identifying problems in specific files or the entire workspace173174### Symbol Tools175- **search_symbols_code**: Searches for symbols across the workspace176 - Parameters:177 - `query`: The search query for symbol names178 - `maxResults` (optional): Maximum number of results to return (default: 10)179180 This tool is useful for:181 - Finding definitions of symbols (functions, classes, variables, etc.) across the codebase182 - Exploring project structure and organization183 - Locating specific elements by name184185- **get_symbol_definition_code**: Gets definition information for a symbol in a file186 - Parameters:187 - `path`: The path to the file containing the symbol188 - `line`: The line number of the symbol189 - `symbol`: The symbol name to look for on the specified line190191 This tool provides:192 - Type information, documentation, and source details for symbols193 - Code context showing the line where the symbol appears194 - Symbol range information195196 It's particularly useful for:197 - Understanding what a symbol represents without navigating away198 - Checking function signatures, type definitions, or documentation199 - Quick reference for APIs or library functions200201- **get_document_symbols_code**: Gets an outline of all symbols in a file, showing the hierarchical structure202 - Parameters:203 - `path`: The path to the file to analyze (relative to workspace)204 - `maxDepth` (optional): Maximum nesting depth to display205206 This tool provides:207 - Complete symbol tree for a document (similar to VS Code's Outline view)208 - Hierarchical structure showing classes, functions, methods, variables, etc.209 - Position information and symbol kinds for each symbol210 - Summary statistics by symbol type211212 It's particularly useful for:213 - Understanding file structure and organization at a glance214 - Getting an overview of all symbols in a document215 - Analyzing code architecture and relationships216 - Finding all symbols of specific types within a file217218### Shell Tools219- **execute_shell_command_code**: Executes a shell command in the VS Code integrated terminal with shell integration220 - Parameters:221 - `command`: The shell command to execute222 - `cwd` (optional): Optional working directory for the command (default: '.')223224 This tool is useful for:225 - Running CLI commands and build operations226 - Executing git commands227 - Performing any shell operations that require terminal access228 - Getting command output for analysis and further processing229230## Caveats/TODO231232Currently, only one workspace is supported. The extension also only works locally, to avoid exposing your VS Code instance to any network you may be connected to.233234## Extension Settings235236* `vscode-mcp-server.port`: The port number for the MCP server (default: 3000)237* `vscode-mcp-server.host`: Host address for the MCP server (default: 127.0.0.1)238* `vscode-mcp-server.defaultEnabled`: Whether the MCP server should be enabled by default on VS Code startup239* `vscode-mcp-server.enabledTools`: Configure which tool categories are enabled (file, edit, shell, diagnostics, symbol)240241**Selective Tool Configuration**: Useful for coding agents that already have certain capabilities. For example, with Claude Code you might disable file/edit tools and only enable symbol tools to add VS Code-specific symbol searching without tool duplication.242243## Using with MCP Clients244245To connect MCP clients to this server, configure them to use:246```247http://localhost:3000/mcp248```249250Or if you've configured a custom host:251```252http://[your-host]:3000/mcp253```254255Remember that you need to enable the server first by clicking on the status bar item!256257## Contributing258259Contributions are welcome! Feel free to submit issues or pull requests.260261## License262263[MIT](LICENSE)264
Full transparency — inspect the skill content before installing.