2025-5-12
Words 1123Read Time 3 min
Score:85

提供基于LSP的MCP工具,支持AI代理通过标准化MCP工具调用分析和编辑TypeScript/JavaScript代码。

VSC-MCP

本项目提供了一系列工具,将 Language Server Protocol (LSP) 的功能作为 MCP (Model Context Protocol) 工具暴露出来。它使得 AI 代理能够通过标准化的 MCP 工具调用,以编程方式分析和编辑 TypeScript/JavaScript 代码。

功能

  • 支持 单文件模式项目模式(自动检测 tsconfig.json)。
  • 通过 LSP API 实现与语言无关的代码操作。

安装

前置条件

  • Bun(用于包管理和构建)
  • Node.js(用于运行服务器)

设置

  1. 克隆仓库
  1. 安装依赖:

    在 Claude (macOS) 中配置

    要与 Claude Desktop 一起使用,请将服务器配置添加到 Claude Desktop 的配置文件中:
    • 在 MacOS 上:~/Library/Application Support/Claude/claude_desktop_config.json
    • 在 Windows 上:%APPDATA%/Claude/claude_desktop_config.json
    在配置文件的 mcp_servers 部分添加以下配置:
    我们需要 repomix 这个 MCP 服务器依赖。
    /path/to/your/vsc-mcp 替换为你克隆的 vsc-mcp 目录的实际路径。

    安全特性

    路径限制

    VSC-MCP 工具包含一个安全特性,用于将文件操作限制在特定目录中:
    • ALLOWED_DIRECTORIES:一个环境变量,指定允许进行文件操作的目录列表,用逗号分隔。
      • 示例:
    • 如果未设置此环境变量,操作默认仅限于当前工作目录。
    • 所有文件操作(读取、写入、编辑)都会检查目标路径是否在允许的目录中。
    • 尝试访问允许目录之外的文件将导致“访问被拒绝”错误。
    此特性有助于防止对系统敏感文件和目录的未授权访问。

    工作原理

    • --stdio 模式启动 typescript-language-server
    • 发送 LSP 的 initializedidOpen 通知。
    • 使用 workspace/symboltextDocument/documentSymbol 请求查找符号。
    • 如果未找到,则回退到 textDocument/implementation 进行额外符号发现。
    • 使用 applyWorkspaceEdit 工具直接对文件进行编辑。
    • 将操作结果返回给调用者。

    可用工具

    目前,以下工具可用:
    • editSymbol:通过 LSP 编辑指定文件中的符号(函数、类、方法等)。
      • 支持多种符号类型:函数、方法、类、接口、变量、常量、属性、字段
      • 使用 LSP 的 workspace/symboltextDocument/documentSymbol 请求查找符号
      • 直接对文件应用编辑
    • readSymbol:通过 LSP 读取指定文件中的符号(函数、类、方法等)。
      • 支持与 editSymbol 相同的符号类型
      • 使用 LSP 定位符号并提取其内容
      • 返回符号内容及其位置信息
    • readFile:读取文件内容。
      • 根据文件扩展名返回带有适当 MIME 类型的文件内容
      • 处理多种文件格式,包括代码、文本和配置文件
      • 提供常见问题的详细错误信息(文件未找到、目录访问等)
    • writeFile:创建新文件或覆盖现有文件。
      • 如果父目录不存在,则自动创建
      • 支持任何文件类型
      • 返回文件操作信息(创建/覆盖、文件大小)
    • searchReplaceFile:在文件中搜索内容并替换为新内容。
      • 搜索时忽略空格差异(空格、制表符、换行符)
      • 支持灵活的内容模式匹配
      • 返回替换次数
    • get_errors:使用 LSP 的 textDocument/diagnostic API 获取指定文件的代码错误和问题。
      • 提供详细的诊断信息,包括错误消息、严重性和位置
      • 使用 TypeScript 语言服务器验证代码
      • 返回有关代码问题的结构化信息
    • find_references:通过 LSP 查找指定文件中符号(函数、类等)的所有引用。
      • 支持多种符号类型:函数、方法、类、接口、变量、常量、属性、字段
      • 使用 LSP 的 textDocument/reference API 查找符号的所有引用
      • 返回带有文件路径和位置的引用列表
      • 有助于代码分析、重构和理解代码使用情况
    上一篇
    mcp-supabase
    下一篇
    alibabacloud-polardb-mcp-server