VS Code MCP
STDIOExtension allowing Claude and MCP clients to code directly in VS Code.
Extension allowing Claude and MCP clients to code directly in VS Code.
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 uses the streamable HTTP API, not the SSE API.
This 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.
PRs are welcome!
https://github.com/user-attachments/assets/20b87dfb-fc39-4710-a910-b9481dde1e90
npm install
and npm run compile
to build it.Claude 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:
{
"mcpServers": {
"vscode-mcp-server": {
"command": "npx",
"args": ["mcp-remote@next", "http://localhost:3000/mcp"]
}
}
}
I 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:
You are working on an existing codebase, which you can access using your tools. These code tools interact with a VS Code workspace.
WORKFLOW ESSENTIALS:
1. Always start exploration with list_files_code on root directory (.) first
2. CRITICAL: Run get_diagnostics_code after EVERY set of code changes before completing tasks
3. For small edits (≤10 lines): use replace_lines_code with exact original content
4. For large changes, new files, or uncertain content: use create_file_code with overwrite=true
EXPLORATION STRATEGY:
- Start: list_files_code with path='.' (never recursive on root)
- Understand structure: read key files like package.json, README, main entry points
- Find symbols: use search_symbols_code for functions/classes, get_document_symbols_code for file overviews
- Before editing: read_file_code the target file to understand current content
EDITING BEST PRACTICES:
- Small modifications: replace_lines_code (requires exact original content match)
- If replace_lines_code fails: read_file_code the target lines, then retry with correct content
- Large changes: create_file_code with overwrite=true is more reliable
- After any changes: get_diagnostics_code to check for errors
PLANNING REQUIREMENTS:
Before making code modifications, present a comprehensive plan including:
- Confidence level (1-10) and reasoning
- Specific tools you'll use and why
- Files you'll modify and approach (small edits vs complete rewrites)
- How you'll verify the changes work (diagnostics, testing, etc.)
ERROR HANDLING:
- Let errors happen naturally - don't add unnecessary try/catch blocks
- For tool failures: follow the specific recovery guidance in each tool's description
- If uncertain about file content: use read_file_code to verify before making changes
APPROVAL PROCESS:
IMPORTANT: Only run code modification tools after presenting a plan and receiving explicit approval. Each change requires separate approval.
Do not add tests unless specifically requested. If you believe testing is important, explain why and let the user decide.
For context efficiency when exploring codebases, consider adding this to your CLAUDE.md:
## VS Code Symbol Tools for Context Efficiency
Use VS Code symbol tools to reduce context consumption:
- `get_document_symbols_code` for file structure overview instead of reading entire files
- `search_symbols_code` to find symbols by name across the project
- `get_symbol_definition_code` for type info and docs without full file context
- Workflow: get outline → search symbols → get definitions → read implementation only when needed
This extension serves as a Model Context Protocol (MCP) server, exposing VS Code's filesystem and editing capabilities to MCP clients.
The VS Code MCP Server extension implements an MCP-compliant server that allows AI models and other MCP clients to:
This extension enables AI assistants and other tools to interact with your VS Code workspace through the standardized MCP protocol.
The extension creates an MCP server that:
list_files_code: Lists files and directories in your workspace
path
: The path to list files fromrecursive
(optional): Whether to list files recursivelyread_file_code: Reads file contents
path
: The path to the file to readencoding
(optional): File encoding (default: utf-8)maxCharacters
(optional): Maximum character count (default: 100,000)create_file_code: Creates a new file using VS Code's WorkspaceEdit API
path
: The path to the file to createcontent
: The content to write to the fileoverwrite
(optional): Whether to overwrite if the file exists (default: false)ignoreIfExists
(optional): Whether to ignore if the file exists (default: false)replace_lines_code: Replaces specific lines in a file
path
: The path to the file to modifystartLine
: The start line number (1-based, inclusive)endLine
: The end line number (1-based, inclusive)content
: The new content to replace the lines withoriginalCode
: The original code for validationget_diagnostics_code: Checks for warnings and errors in your workspace
path
(optional): File path to check (if not provided, checks the entire workspace)severities
(optional): Array of severity levels to include (0=Error, 1=Warning, 2=Information, 3=Hint). Default: [0, 1]format
(optional): Output format ('text' or 'json'). Default: 'text'includeSource
(optional): Whether to include the diagnostic source. Default: trueThis tool is particularly useful for:
search_symbols_code: Searches for symbols across the workspace
query
: The search query for symbol namesmaxResults
(optional): Maximum number of results to return (default: 10)This tool is useful for:
get_symbol_definition_code: Gets definition information for a symbol in a file
path
: The path to the file containing the symbolline
: The line number of the symbolsymbol
: The symbol name to look for on the specified lineThis tool provides:
It's particularly useful for:
get_document_symbols_code: Gets an outline of all symbols in a file, showing the hierarchical structure
path
: The path to the file to analyze (relative to workspace)maxDepth
(optional): Maximum nesting depth to displayThis tool provides:
It's particularly useful for:
execute_shell_command_code: Executes a shell command in the VS Code integrated terminal with shell integration
command
: The shell command to executecwd
(optional): Optional working directory for the command (default: '.')This tool is useful for:
Currently, 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.
vscode-mcp-server.port
: The port number for the MCP server (default: 3000)vscode-mcp-server.defaultEnabled
: Whether the MCP server should be enabled by default on VS Code startupvscode-mcp-server.enabledTools
: Configure which tool categories are enabled (file, edit, shell, diagnostics, symbol)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.
To connect MCP clients to this server, configure them to use:
http://localhost:3000/mcp
Remember that you need to enable the server first by clicking on the status bar item!
Contributions are welcome! Feel free to submit issues or pull requests.