VS Code模型上下文协议服务器

一个VS Code扩展,提供模型上下文协议(MCP)服务器,使AI助手能够与VS Code环境交互,实现语言智能、调试和代码执行功能。

  • by malvex
  • TypeScript
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 malvex/mcp-server-vscode

使用说明

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  │
└─────────────┘                └──────────────────┘               └─────────────┘
  1. VS代码扩展 在端口8991上提供HTTP API
  2. MCP独立服务器 充当桥梁,转换stdio↔ 超文本传输协议
  3. 克劳德桌面 通过stdio与独立服务器通信

故障排除

如果Claude无法连接到VS Code:

  1. 检查VS代码是否正在运行 扩展处于活动状态
  2. 检查状态栏 显示“VS代码MCP:8991”
  3. 测试MCP服务器:运行 npx github:malvex/mcp-server-vscode 在终端
  4. 检查防火墙 未阻止本地主机:8991
  5. 尝试手动启动 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

测试本地更改

要测试本地开发版本,请执行以下操作:

  1. VS代码扩展:在VS Code中按F5启动扩展开发主机
  2. MCP服务器:更新Claude配置以使用本地路径:
{
  "mcpServers": {
    "vscode": {
      "command": "node",
      "args": ["/path/to/mcp-server-vscode/out/mcp/standalone-server.js"]
    }
  }
}

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。