返回市场
MCP服务器-vscode

MCP服务器-vscode

作者:microsoft372 星标更新:2025-11-15

项目介绍

VSCode MCP 服务器

概述

VSCode MCP 服务器 是一个 VSCode 扩展,它作为模型上下文协议(MCP)服务器直接集成在 VSCode 内。其主要目的是提供一个编码诊断工具——即 code_checker,该工具聚合诊断消息(类似于 VSCode 的问题面板中显示的消息),并通过服务器发送事件(SSE)使这些消息对外部 AI 助手可用。这使得您的助手能够调用 MCP 方法并从您的工作区获取及时的诊断信息。

特性

  • 自动启动: 扩展在 VSCode 启动时自动激活(通过 package.json 中的 "activationEvents": ["*"]),确保 MCP 服务器始终运行而无需手动干预。

  • MCP 服务器集成: 使用 MCP TypeScript SDK (@modelcontextprotocol/sdk) 构建,扩展实例化一个 MCP 服务器,注册诊断工具并处理 MCP 协议消息。

  • 诊断工具 (code_checker): 注册的 code_checker 工具收集来自 VSCode 内置语言服务的诊断信息,过滤掉没有错误的文件。当被调用时,它返回一个包含诊断信息的格式化 JSON 对象(仅针对有问题的文件)。

  • 焦点编辑器工具 (focus_editor): 在 VSCode 编辑器中打开特定文件,并导航到指定的行和列。这对于将文件带入用户的视觉焦点非常有用,但不包括文件内容在工具调用结果中。

  • 搜索符号工具 (search_symbol): 在工作区中搜索符号,主要使用“转到定义”,如果找不到则回退到文本搜索(类似于 Ctrl+Shift+F)。可以可选地使用 focus_editor 工具在编辑器中打开结果。

  • 调试会话管理工具: 扩展提供了直接使用 MCP 管理 VSCode 调试会话的工具:

    • list_debug_sessions:检索工作区中的所有活动调试会话。
    • start_debug_session:根据提供的配置启动新的调试会话。
    • stop_debug_session:停止与特定会话名称匹配的调试会话。
    • restart_debug_session:通过先停止再根据提供的配置重新启动调试会话来重启调试会话(新功能!)。
  • SSE 通信: 基于 Express 的 HTTP 服务器运行在一个可配置的端口上(默认:6010),并动态处理端口冲突。它暴露了:

    • 一个 GET /sse 端点,用于建立长期的服务器发送事件(SSE)连接。如果默认端口(6010)不可用,用户可以通过他们的 VSCode 设置配置一个新的端口(参见动态端口配置)。
    • 一个 POST /messages 端点,用于接收来自外部客户端(如您的 AI 助手)的 MCP 消息。 特别注意正确处理请求体——感谢传递已解析的 req.body 来避免流相关错误。
  • 详细日志记录: 所有活动,包括服务器启动、SSE 连接状态和消息处理事件,都被记录到名为 "VSCode MCP 服务器" 的输出通道中,以帮助调试和透明度。

从 Claude Desktop(MCP 客户端)使用扩展

要使用 VSCode MCP 服务器与 Claude Desktop,您需要配置 Claude Desktop 以连接到在 VSCode 中运行的 MCP 服务器。由于 MCP 服务器的实现使用 SSE 传输,而 Claude Desktop 只支持 stdio 传输,因此您需要使用 mcp-proxy 来桥接两者之间的通信。

  1. 安装 MCP 代理:

    • 选项 1:使用 uv(推荐)

      uv tool install mcp-proxy
      
    • 选项 2:使用 pipx(替代方案)

      pipx install mcp-proxy
      
  2. 配置 Claude Desktop:

    • 打开 Claude Desktop 并导航至 文件 > 设置 > 开发者 标签。

    • 点击 编辑配置 打开配置文件,启动您选择的编辑器以修改配置文件内容。

    • mcpServers 中添加一个新条目,如下所示:

      {
          "mcpServers": {
              "vscode": {
                  "command": "mcp-proxy",
                  "args": ["http://127.0.0.1:6010/sse"]
              }
          }
      }
      
  3. 重启 Claude Desktop:

    • 您必须使用 文件 > 退出 选项重启 Claude Desktop,以便更改生效。
    • 注意:这不同于仅仅关闭窗口或使用 文件 > 关闭,后者会让应用程序在后台继续运行。
    • 退出后再次启动,Claude Desktop 应该现在能够连接到在 VSCode 中运行的 MCP 服务器。

MCP 服务器管理

现在可以直接从命令面板管理 MCP 服务器的状态:

  1. 停止 MCP 服务器 (mcpServer.stopServer):停止当前正在运行的 MCP 服务器。
  2. 启动 MCP 服务器 (mcpServer.startServer):在配置的或下一个可用端口上启动服务器。

这些命令有助于动态管理服务器生命周期,而无需重启 VSCode。

动态端口配置

如果端口已被占用,扩展将建议下一个可用端口并动态应用。所选端口的日志可以在 MCP 服务器日志 输出通道中找到。

用户可以在运行时使用命令面板配置或更改 MCP 服务器的端口:

  1. 打开命令面板 (Ctrl+Shift+P 或 macOS 上的 Cmd+Shift+P)。
  2. 搜索 设置 MCP 服务器端口
  3. 在输入框中输入所需的端口号并确认。

服务器将在新选定的端口上动态重启,并且配置将更新以供未来会话使用。

HTTP 服务器端口也可以通过 VSCode 设置进行设置:

  1. 打开 VSCode 设置 (文件 > 首选项 > 设置Ctrl+,)。
  2. 搜索 mcpServer.port
  3. 设置您所需的端口号。
  4. 重启 VSCode 以使更改生效。

MCP 服务器自动启动

MCP 服务器默认会在 VSCode 激活时自动启动。要禁用此功能:

  1. 打开 VSCode 设置 (文件 > 首选项 > 设置Ctrl+,)。
  2. 搜索 mcpServer.startOnActivate
  3. 将设置切换为 false

如果您希望手动使用 启动 MCP 服务器 命令来启动服务器,这可能会很有用。

扩展开发

开发和调试扩展的步骤,源代码可在 GitHub 获取。

先决条件

  1. 克隆仓库: 将语义工作台仓库克隆到本地机器:

    git clone https://github.com/microsoft/semanticworkbench.git
    
  2. 导航到项目目录:

    cd semanticworkbench/mcp-servers/mcp-server-vscode
    
  3. 安装依赖项: 确保您已安装 Node.js(v16 或更高版本)和 pnpm。然后,在项目目录中运行:

    pnpm install
    
  4. 打包扩展: 要打包扩展,请执行:

    pnpm run package-extension
    

    这将在项目根目录生成一个 .vsix 文件。

本地安装扩展

  1. 打开您的主 VSCode 实例:

    启动您的主 VSCode(在扩展开发主机之外)。

  2. 安装 VSIX 包:

    • 按下 Ctrl+Shift+P(或 macOS 上的 Cmd+Shift+P)打开命令面板。
    • 输入并选择 "Extensions: 从 VSIX 安装..."。
    • 导航并选择生成的 .vsix 文件。
  3. 重新加载并验证:

    安装后,通过命令面板中的 "Developer: 重新加载窗口" 重新加载 VSCode,并验证扩展是否处于活动状态。检查 "MCP 服务器日志" 输出通道以查看确认 MCP 服务器已启动并在配置的端口(默认:6010,或下一个可用端口)上监听的日志。

调试扩展

  1. 开始调试: 在 VSCode 中打开项目,然后按 F5 启动扩展开发主机。这将基于 "activationEvents": ["*"] 设置自动激活扩展。

  2. MCP 服务器操作: 激活时,扩展:

    • 启动 MCP 服务器,注册 code_checker 工具。
    • 在端口 6010 上设置 Express HTTP 服务器,具有:
      • GET /sse: 建立 SSE 连接(外部客户端连接到这里)。
      • POST /messages: 处理传入的 MCP 协议消息。
    • 将所有活动输出到 "MCP 服务器日志" 通道(将自动显示)。

本地安装扩展

  1. 打开您的主 VSCode 实例:

    启动您的主 VSCode(在扩展开发主机之外)。

  2. 安装 VSIX 包:

    • 按下 Ctrl+Shift+P(或 macOS 上的 Cmd+Shift+P)打开命令面板。
    • 输入并选择 "Extensions: 从 VSIX 安装..."。
    • 导航并选择生成的 .vsix 文件。
  3. 重新加载并验证:

    安装后,通过命令面板中的 "Developer: 重新加载窗口" 重新加载 VSCode,并验证扩展是否处于活动状态。检查 "MCP 服务器日志" 输出通道以查看确认 MCP 服务器已启动并在端口 6010 上监听的日志。

测试 MCP 服务器

您可以使用 curl 来测试服务:

第一步:建立 SSE 连接

打开终端 1 并运行:

curl -N http://127.0.0.1:6010/sse

您应该看到类似以下的输出:

event: endpoint
data: /messages?sessionId=your-session-id

第二步:发送初始化请求

在终端 2 中,使用从终端 1 获得的会话 ID(如有必要),发送一个 POST 请求(如有需要,包括工作区等所需字段):

curl -X POST "http://127.0.0.1:6010/messages?sessionId=your-session-id" \
-H "Content-Type: application/json" \
-d '{
  "jsonrpc": "2.0",
  "method": "initialize",
  "id": 0,
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "roots": { "listChanged": true }
    },
    "clientInfo": {
      "name": "mcp",
      "version": "0.1.0"
    },
    "workspace": {
      "folders": []
    }
  }
}'

如果一切配置正确,MCP 服务器应无误地处理您的初始化消息。