{"id":46742432,"url":"https://github.com/malvex/mcp-server-vscode","last_synced_at":"2026-03-09T17:51:50.790Z","repository":{"id":303288230,"uuid":"1014068513","full_name":"malvex/mcp-server-vscode","owner":"malvex","description":"Give Claude Code direct access to VS Code's code navigation, error checking, and debugging tools through the Model Context Protocol.","archived":false,"fork":false,"pushed_at":"2025-09-29T10:40:16.000Z","size":290,"stargazers_count":7,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-02T17:57:01.486Z","etag":null,"topics":["claude-code","claude-code-mcp","debugging","mcp-server","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/malvex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-05T01:52:38.000Z","updated_at":"2025-09-28T00:31:26.000Z","dependencies_parsed_at":"2025-07-06T20:49:53.347Z","dependency_job_id":null,"html_url":"https://github.com/malvex/mcp-server-vscode","commit_stats":null,"previous_names":["malvex/mcp-server-vscode"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/malvex/mcp-server-vscode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fmcp-server-vscode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fmcp-server-vscode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fmcp-server-vscode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fmcp-server-vscode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/malvex","download_url":"https://codeload.github.com/malvex/mcp-server-vscode/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fmcp-server-vscode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30305302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T17:35:44.120Z","status":"ssl_error","status_checked_at":"2026-03-09T17:35:43.707Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-code-mcp","debugging","mcp-server","vscode-extension"],"created_at":"2026-03-09T17:51:50.131Z","updated_at":"2026-03-09T17:51:50.782Z","avatar_url":"https://github.com/malvex.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCP Server for VS Code\n\nA VS Code extension that provides a Model Context Protocol (MCP) server, enabling AI assistants to interact with your VS Code environment for language intelligence, debugging, and code execution.\n\n## Features\n\n- **Language Intelligence**: Access VS Code's language server features including:\n\n  - Go to definition\n  - Find references\n  - Diagnostics (errors and warnings)\n  - Symbol search\n  - Call hierarchy\n\n- **Debugging Support**: Control VS Code's debugger programmatically:\n\n  - Start/stop debug sessions\n  - Set and manage breakpoints\n  - Step through code (into/over/out)\n  - Inspect variables and call stacks\n  - Evaluate expressions in debug context\n\n## Installation\n\n### Alpha Testing\n\n**Step 1: Install VS Code Extension**\n\nDownload the `.vsix` file from [Releases](https://github.com/malvex/mcp-server-vscode/releases) and install:\n- In VS Code: Extensions → `...` menu → Install from VSIX\n- Or via command line: `code --install-extension mcp-server-vscode-*.vsix`\n\n**Step 2: Configure Claude Desktop**\n\nThe MCP server runs directly from GitHub using npx. Add this to your Claude config:\n\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"vscode\": {\n      \"command\": \"npx\",\n      \"args\": [\"github:malvex/mcp-server-vscode\"]\n    }\n  }\n}\n```\n\n**Step 3: Restart Claude Desktop**\n\nThat's it! The VS Code tools are now available in Claude.\n\n### Configure Claude Code (CLI)\n\nFor Claude Code users, run this one-liner:\n\n```bash\nclaude mcp add-json vscode '{\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"github:malvex/mcp-server-vscode\"]}' -s user\n```\n\n## Usage\n\nOnce installed, the extension shows the MCP server status in the VS Code status bar (bottom right).\n\n**To start the MCP server**: Click on \"VS Code MCP: Stopped\" in the status bar. It will change to \"VS Code MCP: 8991\" when running.\n\nThe status bar indicates:\n- **VS Code MCP: 8991** - Server is running on port 8991\n- **VS Code MCP: Stopped** - Server is not running\n\nClick the status bar item to toggle the server on/off.\n\n### How It Works\n\n```\n┌─────────────┐     stdio      ┌──────────────────┐     HTTP      ┌─────────────┐\n│   Claude    │ ◄────────────► │  MCP Standalone  │ ◄───────────► │   VS Code   │\n│   Desktop   │                │      Server      │    :8991      │  Extension  │\n└─────────────┘                └──────────────────┘               └─────────────┘\n```\n\n1. **VS Code Extension** provides an HTTP API on port 8991\n2. **MCP Standalone Server** acts as a bridge, converting stdio ↔ HTTP\n3. **Claude Desktop** communicates with the standalone server via stdio\n\n### Troubleshooting\n\nIf Claude can't connect to VS Code:\n\n1. **Check VS Code is running** with the extension active\n2. **Check the status bar** shows \"VS Code MCP: 8991\"\n3. **Test the MCP server**: Run `npx github:malvex/mcp-server-vscode` in terminal\n4. **Check firewall** isn't blocking localhost:8991\n5. **Try manually starting** the MCP server in VS Code (Cmd/Ctrl+Shift+P → \"Start MCP Server\")\n\n### Available Tools\n\nThe extension provides 25 tools organized into three main categories:\n\n#### Language Intelligence Tools (7 tools)\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **hover** | Get hover information (type info, documentation) for a symbol by name | `symbol` (required), `uri` (optional), `format` (optional) | `hover({ symbol: \"calculateSum\" })` |\n| **definition** | Find where a symbol is defined. Instantly jumps to declarations | `symbol` (required), `format` (optional) | `definition({ symbol: \"Calculator\" })` |\n| **references** | Find all references to a symbol. Superior to grep - finds semantic references | `symbol` (required), `includeDeclaration` (optional), `format` (optional) | `references({ symbol: \"process\" })` |\n| **callHierarchy** | Analyze what calls a function or what a function calls | `symbol` (required), `direction` (required: 'incoming'\\|'outgoing'\\|'both'), `uri` (optional), `format` (optional) | `callHierarchy({ symbol: \"initialize\", direction: \"incoming\" })` |\n| **symbolSearch** | Search for symbols (classes, functions, variables) across the workspace | `query` (required), `kind` (optional), `format` (optional) | `symbolSearch({ query: \"Controller\", kind: \"class\" })` |\n| **workspaceSymbols** | Get a complete map of all symbols in the workspace | `includeDetails` (optional), `filePattern` (optional), `maxFiles` (optional), `format` (optional) | `workspaceSymbols({ filePattern: \"**/*.ts\" })` |\n| **diagnostics** | Get all errors and warnings for a file or workspace | `uri` (optional), `format` (optional) | `diagnostics({})` |\n\n#### Refactoring Tools (1 tool)\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **refactor_rename** | Rename a symbol across all files. Automatically updates all references and imports | `symbol` (required), `newName` (required), `uri` (optional), `format` (optional) | `refactor_rename({ symbol: \"OldName\", newName: \"NewName\" })` |\n\n#### Debug Tools (17 tools)\n\n##### Breakpoint Management\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **debug_setBreakpoint** | Set breakpoints by symbol name or file/line with optional conditions | `symbol` OR (`file` AND `line`), `condition` (optional), `hitCondition` (optional), `logMessage` (optional), `format` (optional) | `debug_setBreakpoint({ symbol: \"processData\", condition: \"items.length \u003e 100\" })` |\n| **debug_toggleBreakpoint** | Toggle a breakpoint on/off at a specific location | `symbol` OR (`file` AND `line`), `format` (optional) | `debug_toggleBreakpoint({ file: \"app.js\", line: 25 })` |\n| **debug_listBreakpoints** | List all breakpoints in the workspace | `format` (optional) | `debug_listBreakpoints({})` |\n| **debug_clearBreakpoints** | Clear all breakpoints from the workspace | `format` (optional) | `debug_clearBreakpoints({})` |\n\n##### Session Management\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **debug_status** | Get current debug session status and active threads | `format` (optional) | `debug_status({})` |\n| **debug_listConfigurations** | List available debug configurations from launch.json | `format` (optional) | `debug_listConfigurations({})` |\n| **debug_startSession** | Start a debug session using a configuration | `configuration` (optional), `format` (optional) | `debug_startSession({ configuration: \"Launch Program\" })` |\n| **debug_stopSession** | Stop the active debug session | `format` (optional) | `debug_stopSession({})` |\n\n##### Runtime Control\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **debug_pauseExecution** | Pause the running program | `threadId` (optional), `format` (optional) | `debug_pauseExecution({})` |\n| **debug_continueExecution** | Continue execution from current breakpoint | `threadId` (optional), `allThreads` (optional), `format` (optional) | `debug_continueExecution({})` |\n| **debug_stepOver** | Step over the current line of code | `threadId` (optional), `format` (optional) | `debug_stepOver({})` |\n| **debug_stepInto** | Step into the function call at current line | `threadId` (optional), `format` (optional) | `debug_stepInto({})` |\n| **debug_stepOut** | Step out of the current function | `threadId` (optional), `format` (optional) | `debug_stepOut({})` |\n\n##### Inspection and Evaluation\n\n| Tool | Description | Main Parameters | Example |\n|------|-------------|-----------------|---------|\n| **debug_getCallStack** | Get the current call stack with source locations | `threadId` (optional), `startFrame` (optional), `levels` (optional), `format` (optional) | `debug_getCallStack({ levels: 10 })` |\n| **debug_inspectVariables** | Inspect variables in the current scope during debugging | `threadId` (optional), `frameId` (optional), `scope` (optional: 'all'\\|'locals'\\|'globals'\\|'closure'), `filter` (optional), `format` (optional) | `debug_inspectVariables({ scope: \"locals\" })` |\n| **debug_evaluateExpression** | Evaluate an expression in the debug context | `expression` (required), `frameId` (optional), `context` (optional), `format` (optional) | `debug_evaluateExpression({ expression: \"user.permissions\" })` |\n| **debug_getOutput** | Get debug console output | `category` (optional), `filter` (optional), `limit` (optional), `format` (optional) | `debug_getOutput({})` |\n\n### Tool Features\n\nAll tools support:\n\n- **Compact format** - Optimized for AI token efficiency\n- **Detailed format** - Full data for complex analysis\n- **Symbol-based navigation** - Work with names instead of file/line numbers\n- **Workspace-wide operations** - Not limited to single files\n- **Language server integration** - Accurate semantic understanding\n\n### Usage Examples for AI Assistants\n\nWhen connected via MCP, AI assistants can use these tools to help users with development tasks:\n\n#### Finding and Understanding Code\n\n```\nUser: \"What does the handleRequest function do?\"\nAI uses: hover({ symbol: \"handleRequest\" })\n→ Gets type signature and documentation without reading entire files\n\nUser: \"Where is the DatabaseConnection class defined?\"\nAI uses: definition({ symbol: \"DatabaseConnection\" })\n→ Instantly finds the file and line where it's declared\n\nUser: \"Show me all places where processPayment is called\"\nAI uses: callHierarchy({ symbol: \"processPayment\", direction: \"incoming\" })\n→ Gets complete list of callers with their locations\n```\n\n#### Refactoring\n\n```\nUser: \"Rename the oldMethodName method to newMethodName everywhere\"\nAI uses: refactor_rename({ symbol: \"oldMethodName\", newName: \"newMethodName\" })\n→ Safely renames across all files, updating imports and references\n```\n\n#### Debugging\n\n```\nUser: \"Help me debug why the server crashes\"\nAI uses: debug_listConfigurations({})\n→ Shows available debug configurations\n\nAI uses: debug_startSession({ configuration: \"Debug Server\" })\n→ Starts the debug session\n\nUser: \"Set a breakpoint where errors are handled\"\nAI uses: debug_setBreakpoint({ symbol: \"handleError\" })\n→ Sets breakpoint on the function\n\nUser: \"What's the value of the user object here?\"\nAI uses: debug_inspectVariables({ scope: \"locals\", filter: \"user\" })\n→ Shows current value of user variable in debug context\n\nUser: \"Why is this condition true?\"\nAI uses: debug_evaluateExpression({ expression: \"users.length \u003e 0 \u0026\u0026 isActive\" })\n→ Evaluates the expression in current debug scope\n```\n\n## Development\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/malvex/mcp-server-vscode.git\ncd mcp-server-vscode\n\n# Install dependencies\nnpm install\n\n# Build everything\nnpm run compile\nnpm run package\n\n# Package the VS Code extension\nnpx vsce package\n```\n\n### Testing Local Changes\n\nTo test your local development version:\n\n1. **VS Code Extension**: Press F5 in VS Code to launch Extension Development Host\n2. **MCP Server**: Update Claude config to use local path:\n\n```json\n{\n  \"mcpServers\": {\n    \"vscode\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-server-vscode/out/mcp/standalone-server.js\"]\n    }\n  }\n}\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalvex%2Fmcp-server-vscode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalvex%2Fmcp-server-vscode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalvex%2Fmcp-server-vscode/lists"}