使用说明
VS代码的MCP服务器
一个VS Code扩展,它提供了一个模型上下文协议(MCP)服务器,使AI助手能够与您的VS Code环境进行交互,以实现语言智能、调试和代码执行。
特性
-
语言智能:访问VS Code的语言服务器功能,包括:
- 转到定义
- 查找引用
- 诊断(错误和警告)
- 符号搜索
- 调用层次结构
-
调试支持:以编程方式控制VS代码的调试器:
- 启动/停止调试会话
- 设置和管理断点
- 遍历代码(进入/结束/退出)
- 检查变量和调用堆栈
- 在调试上下文中计算表达式
安装
Alpha测试
步骤1:安装VS代码扩展
下载 .vsix 文件来自 发布 并安装:
- VS代码:扩展→
...menu → 从VSIX安装 - 或者通过命令行:
code --install-extension mcp-server-vscode-*.vsix
步骤2:配置Claude桌面
MCP服务器使用npx直接从GitHub运行。将此添加到您的Claude配置中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"vscode": {
"command": "npx",
"args": ["github:malvex/mcp-server-vscode"]
}
}
}
步骤3:重新启动克劳德桌面
就是这样!VS Code工具现在可以在Claude中使用。
配置克劳德代码(CLI)
对于Claude Code用户,运行以下命令行:
claude mcp add-json vscode '{"type":"stdio","command":"npx","args":["github:malvex/mcp-server-vscode"]}' -s user
用法
安装后,扩展程序在VS代码状态栏(右下角)中显示MCP服务器状态。
启动MCP服务器:点击状态栏中的“VS代码MCP:已停止”。运行时,它将变为“VS代码MCP:8991”。
状态栏显示:
- VS代码MCP:8991 -服务器正在端口8991上运行
- VS代码MCP:已停止 -服务器未运行
单击状态栏项以打开/关闭服务器。
运作原理
┌─────────────┐ stdio ┌──────────────────┐ HTTP ┌─────────────┐
│ Claude │ ◄────────────► │ MCP Standalone │ ◄───────────► │ VS Code │
│ Desktop │ │ Server │ :8991 │ Extension │
└─────────────┘ └──────────────────┘ └─────────────┘
- VS代码扩展 在端口8991上提供HTTP API
- MCP独立服务器 充当桥梁,转换stdio↔ 超文本传输协议
- 克劳德桌面 通过stdio与独立服务器通信
故障排除
如果Claude无法连接到VS Code:
- 检查VS代码是否正在运行 扩展处于活动状态
- 检查状态栏 显示“VS代码MCP:8991”
- 测试MCP服务器:运行
npx github:malvex/mcp-server-vscode在终端 - 检查防火墙 未阻止本地主机:8991
- 尝试手动启动 VS代码中的MCP服务器(Cmd/Ctrl+Shift+P→ “启动MCP服务器”)
可用工具
该扩展提供了25个工具,分为三大类:
语言智能工具(7个工具)
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| 悬停 | 按名称获取符号的悬停信息(类型信息、文档) | symbol (必填), uri (可选), format (可选) |
hover({ symbol: "calculateSum" }) |
| 定义 | 查找符号的定义位置。立即跳到声明 | symbol (必填), format (可选) |
definition({ symbol: "Calculator" }) |
| 参考文献 | 查找对符号的所有引用。优于grep-查找语义引用 | symbol (必填), includeDeclaration (可选), format (可选) |
references({ symbol: "process" }) |
| callHierarchy | 分析什么调用函数或函数调用什么 | symbol (必填), direction (必填:“传入” |
“传出” |
| symbol搜索 | 在整个工作空间中搜索符号(类、函数、变量) | query (必填), kind (可选), format (可选) |
symbolSearch({ query: "Controller", kind: "class" }) |
| 工作空间符号 | 获取工作区中所有符号的完整地图 | includeDetails (可选), filePattern (可选), maxFiles (可选), format (可选) |
workspaceSymbols({ filePattern: "**/*.ts" }) |
| 诊断 | 获取文件或工作区的所有错误和警告 | uri (可选), format (可选) |
diagnostics({}) |
重构工具(1个工具)
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| 重构器名称 | 重命名所有文件中的符号。自动更新所有引用和导入 | symbol (必填), newName (必填), uri (可选), format (可选) |
refactor_rename({ symbol: "OldName", newName: "NewName" }) |
调试工具(17个工具)
断点管理
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| debug_set断点 | 按符号名称或文件/行设置断点,并带有可选条件 | symbol 或(file 与 line), condition (可选), hitCondition (可选), logMessage (可选), format (可选) |
debug_setBreakpoint({ symbol: "processData", condition: "items.length > 100" }) |
| debug_toggle断点 | 在特定位置打开/关闭断点 | symbol 或(file 与 line), format (可选) |
debug_toggleBreakpoint({ file: "app.js", line: 25 }) |
| debug_list断点 | 列出工作区中的所有断点 | format (可选) |
debug_listBreakpoints({}) |
| debug_clear断点 | 清除工作区中的所有断点 | format (可选) |
debug_clearBreakpoints({}) |
会话管理
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| debug_status | 获取当前调试会话状态和活动线程 | format (可选) |
debug_status({}) |
| debug_listConfiguration | 从launch.json中列出可用的调试配置 | format (可选) |
debug_listConfigurations({}) |
| debug_startSession | 使用配置启动调试会话 | configuration (可选), format (可选) |
debug_startSession({ configuration: "Launch Program" }) |
| debug_stopSession | 停止活动调试会话 | format (可选) |
debug_stopSession({}) |
运行控制
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| debug_pause执行 | 暂停正在运行的程序 | threadId (可选), format (可选) |
debug_pauseExecution({}) |
| debug_继续执行 | 从当前断点继续执行 | threadId (可选), allThreads (可选), format (可选) |
debug_continueExecution({}) |
| debug_stepOver | 跳过当前代码行 | threadId (可选), format (可选) |
debug_stepOver({}) |
| debug_stepInto | 进入当前行的函数调用 | threadId (可选), format (可选) |
debug_stepInto({}) |
| debug_stepOut | 退出当前功能 | threadId (可选), format (可选) |
debug_stepOut({}) |
检查和评估
| 工具 | 说明 | 主要参数 | 示例 |
|---|---|---|---|
| debug_getCallStack | 获取包含源位置的当前调用堆栈 | threadId (可选), startFrame (可选), levels (可选), format (可选) |
debug_getCallStack({ levels: 10 }) |
| debug_inspectVariables | 调试期间检查当前范围内的变量 | threadId (可选), frameId (可选), scope (可选:“所有” |
“本地” |
| debug_evaluateExpression | 在调试上下文中计算表达式 | expression (必填), frameId (可选), context (可选), format (可选) |
debug_evaluateExpression({ expression: "user.permissions" }) |
| debug_getOutput | 获取调试控制台输出 | category (可选), filter (可选), limit (可选), format (可选) |
debug_getOutput({}) |
工具特性
所有工具支持:
- 紧凑格式 -针对AI代币效率进行了优化
- 详细格式 -用于复杂分析的完整数据
- 基于符号的导航 -使用名称而不是文件/行号
- 全工作区操作 -不限于单个文件
- 语言服务器集成 -准确的语义理解
AI助手的使用示例
当通过MCP连接时,AI助手可以使用这些工具来帮助用户完成开发任务:
查找和理解代码
User: "What does the handleRequest function do?"
AI uses: hover({ symbol: "handleRequest" })
→ Gets type signature and documentation without reading entire files
User: "Where is the DatabaseConnection class defined?"
AI uses: definition({ symbol: "DatabaseConnection" })
→ Instantly finds the file and line where it's declared
User: "Show me all places where processPayment is called"
AI uses: callHierarchy({ symbol: "processPayment", direction: "incoming" })
→ Gets complete list of callers with their locations
重构
User: "Rename the oldMethodName method to newMethodName everywhere"
AI uses: refactor_rename({ symbol: "oldMethodName", newName: "newMethodName" })
→ Safely renames across all files, updating imports and references
调试
User: "Help me debug why the server crashes"
AI uses: debug_listConfigurations({})
→ Shows available debug configurations
AI uses: debug_startSession({ configuration: "Debug Server" })
→ Starts the debug session
User: "Set a breakpoint where errors are handled"
AI uses: debug_setBreakpoint({ symbol: "handleError" })
→ Sets breakpoint on the function
User: "What's the value of the user object here?"
AI uses: debug_inspectVariables({ scope: "locals", filter: "user" })
→ Shows current value of user variable in debug context
User: "Why is this condition true?"
AI uses: debug_evaluateExpression({ expression: "users.length > 0 && isActive" })
→ Evaluates the expression in current debug scope
发展
从源头构建
# Clone the repository
git clone https://github.com/malvex/mcp-server-vscode.git
cd mcp-server-vscode
# Install dependencies
npm install
# Build everything
npm run compile
npm run package
# Package the VS Code extension
npx vsce package
测试本地更改
要测试本地开发版本,请执行以下操作:
- VS代码扩展:在VS Code中按F5启动扩展开发主机
- MCP服务器:更新Claude配置以使用本地路径:
{
"mcpServers": {
"vscode": {
"command": "node",
"args": ["/path/to/mcp-server-vscode/out/mcp/standalone-server.js"]
}
}
}
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。