该项目提供了工具,将语言服务器协议(LSP)功能作为**MCP(模型上下文协议)**工具公开。它使AI客户端能够通过标准化的MCP工具调用来程序化地分析和编辑代码。
该项目最初是一个专注于TypeScript编码的简单项目,然后演变为一个支持VS Code所支持的所有语言的全功能MCP服务器。
有关最新更改和迁移到无头VC Code的详细信息,请参阅这里
VSC-MCP可以运行在两种模式下:
3000(IDE UI)和5007(LSP桥接)。bun install
PROJECT_PATH=/path/to/your/project docker-compose up
settings.json)
{
"mcpServers": {
"vsc-mcp": {
"command": "bun",
"args": ["<vsc_mcp_cloned_dir>/src/index.ts"],
"env": {
"USE_VSCODE_LSP": "true",
"LOG_DIR": "<vsc_mcp_cloned_dir>/logs",
"ALLOWED_DIRECTORIES": "/path/to/your/project"
}
}
}
}
| 变量 | 目的 |
|---|---|
USE_VSCODE_LSP | 设置为true启用Docker/VS Code LSP模式。 MCP将把LSP请求转发给VS Code(端口5007),而不是启动本地语言服务器。 |
ALLOWED_DIRECTORIES | 将直接文件操作限制在指定的目录中。 |
LOG_DIR | MCP写入调试日志的位置。 |
注意:默认情况下,
USE_VSCODE_L_是false(独立模式)。将其设置为true以使用Docker/VS Code LSP集成。
目前最佳的工作流程是使用Claude Desktop作为AI客户端,它支持MCP服务器,并提供每月20美元的计划。通过使用VSC-MCP工具,我们可以“聊天”并处理我们的代码库。
~/Library/Application Support/Claude/claude_desktop_config.json在配置文件的mcp_servers部分添加以下配置:
{
"mcpServers": {
"repomix": {
"command": "npx",
"args": [
"-y",
"repomix",
"--mcp"
]
},
"vsc-mcp": {
"command": "bun",
"args": [
"<vsc_mcp_cloned_dir>/src/index.ts"
],
"env": {
"USE_VSCODE_LSP": "true",
"LOG_DIR": "<vsc_mcp_cloned_dir>/logs",
1. "ALLOWED_DIRECTORIES": "/path/to/your/project"
}
}
}
}
我们建议添加repomix mcp服务器依赖,了解原因,请阅读这篇博客文章。
用实际的vsc-mcp克隆目录路径替换<vsc_mcp_cloned_dir>。
当我们启动docker时,需要指定工作区目录。
PROJECT_PATH=/path/to/your/project docker-compose up
VSC-MCP工具只能访问工作区目录中的文件。
VSC-MCP工具包含一个安全特性,用于限制操作系统文件操作(读取和写入磁盘上的文件)到特定目录:
ALLOWED_DIRECTORIES:一个环境变量,指定允许进行文件操作的目录列表,用逗号分隔。
示例:
ALLOWED_DIRECTORIES=/home/user/projects,/tmp/workspace
如果未设置此环境变量,则操作默认仅限于当前工作目录。
所有文件操作(读取、写入、编辑)都会检查目标路径是否在允许的目录内。
尝试访问允许目录之外的文件将导致“访问被拒绝”的错误。
此功能有助于防止未经授权访问系统中的敏感文件和目录。
目前,以下工具可用:
edit_symbol:通过名称和类型在给定文件中使用LSP编辑符号(函数、类、方法等)。
read_symbol:通过名称和类型在给定文件中使用LSP读取符号(函数、类、方法等)。
read_file:读取文件的内容。
write_file:使用提供的内容创建新文件或覆盖现有文件。
search_replace_file:在文件中搜索内容并用新内容替换它。
get_errors:使用LSP的textDocument/diagnostic API获取特定文件的代码错误和问题。
find_references:通过名称和类型在给定文件中使用LSP查找符号(函数、类等)的所有引用。