概述
安装
工具列表
内容详情
替代品
什么是Vulcan File Ops?
Vulcan File Ops是一个基于Model Context Protocol (MCP)的文件操作服务器,它充当AI助手(如Claude Desktop、ChatGPT Desktop等)与您本地文件系统之间的安全桥梁。通过这个服务器,AI助手可以像在IDE中一样读取、写入、编辑和管理您的文件,但所有操作都在您设定的安全边界内进行。如何使用Vulcan File Ops?
使用Vulcan File Ops非常简单:首先通过npx或npm安装服务器,然后在您的AI客户端配置文件中添加服务器配置。启动后,您可以指示AI助手注册需要访问的目录,然后AI就可以在该目录内执行文件操作了。整个过程您都保持完全控制权。适用场景
Vulcan File Ops特别适合以下场景: • 代码开发和重构:让AI助手帮助编写、修改和优化代码 • 文档管理:创建、编辑和管理各种文档(包括PDF、Word等) • 项目维护:批量重命名、移动、复制文件 • 内容搜索:在多个文件中搜索特定内容 • 自动化任务:通过shell命令执行自动化脚本主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": ["@n0zer0d4y/vulcan-file-ops"]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops"
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "./node_modules/.bin/vulcan-file-ops"
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": ["--approved-folders", "/path/to/your/allowed/directories"]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"C:/Users/username/projects",
"C:/Users/username/documents"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": [
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--ignored-folders",
"node_modules,dist,.git,.next"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--enabled-tool-categories",
"read,filesystem"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--enabled-tools",
"read_file,list_directory,grep_files"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"C:/Users/username/projects",
"C:/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": [
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}🚀 Vulcan File Ops MCP 服务器
Vulcan File Ops MCP 服务器可将桌面 AI 助手转变为强大的开发伙伴。它架起了对话式 AI 与本地文件系统之间的桥梁,让 AI 具备如专业 AI 编程助手般强大的文件操作能力。同时,通过企业级安全控制,用户能完全掌控 AI 助手的操作。
🚀 快速开始
本服务器需要 Node.js,可全局安装、本地安装,或直接使用 npx 运行。大多数用户建议使用 npx,无需安装即可立即执行。
快速启动(推荐给大多数用户)
无需安装,直接运行:
npx @n0zer0d4y/vulcan-file-ops --help
对于想要贡献代码或修改代码的开发者,请参考下面的选项 4:本地仓库执行(适用于开发者)。
全局安装
全局安装以实现系统范围的访问:
npm install -g @n0zer0d4y/vulcan-file-ops
本地安装
在特定项目中安装:
npm install @n0zer0d4y/vulcan-file-ops
前提条件
系统必须安装 Node.js(版本 14 或更高),它提供了运行此包所需的 npm 和 npx。
- 下载 Node.js:https://nodejs.org/
- 检查安装情况:运行
node --version和npm --version
依赖项
该服务器没有外部服务依赖,完全在本地运行。使用 npx 时,所有必需的包会自动下载。
✨ 主要特性
- 动态目录访问:通过对话命令在运行时注册目录
- 文档支持:读写 PDF、DOCX、PPTX、XLSX、ODT 等文档,支持 HTML 到文档的转换
- 批量操作:可同时读取、写入、编辑、复制、移动或重命名多个文件
- 高级文件编辑:基于模式的修改,具有灵活的匹配和差异预览功能
- 灵活的读取模式:支持全量读取、读取文件头部/尾部或任意行范围
- 图像视觉支持:附加图像供 AI 分析和描述
- 目录过滤:从列表中排除不需要的文件夹(如 node_modules、dist、.git)
- 选择性工具激活:仅启用特定的工具或工具类别
- 高性能:优化的搜索算法,具有智能递归检测功能
- 安全控制:路径验证、访问限制和 shell 命令审批
- 本地控制:完全本地安装,无外部依赖
📦 安装指南
基本配置
将其添加到 MCP 客户端配置中(例如 claude_desktop_config.json):
选项 1:使用 npx(推荐 - 无需安装)
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": ["@n0zer0d4y/vulcan-file-ops"]
}
}
}
选项 2:使用全局安装
在运行 npm install -g @n0zer0d4y/vulcan-file-ops 之后:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops"
}
}
}
选项 3:使用本地安装
在项目中运行 npm install @n0zer0d4y/vulcan-file-ops 之后:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "./node_modules/.bin/vulcan-file-ops"
}
}
}
选项 4:本地仓库执行(适用于开发者)
如果你克隆了此仓库并想从源代码运行:
git clone https://github.com/n0zer0d4y/vulcan-file-ops.git
cd vulcan-file-ops
npm install
npm run build
然后配置你的 MCP 客户端:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": ["--approved-folders", "/path/to/your/allowed/directories"]
}
}
}
注意:构建后,vulcan-file-ops 命令将在你的 PATH 中可用,或者你可以使用完整路径:./dist/cli.js
高级配置
预批准文件夹
在服务器启动时预配置特定目录以实现立即访问:
macOS/Linux(npx):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents"
]
}
}
}
Windows(npx):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"C:/Users/username/projects",
"C:/Users/username/documents"
]
}
}
}
替代方案:本地仓库执行
对于从克隆仓库运行的用户(在 npm run build 之后):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": [
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents"
]
}
}
}
路径格式注意事项:
- Windows:包含驱动器号(例如
C:/、D:/)。在 JSON 中使用正斜杠以避免转义反斜杠。 - macOS/Linux:绝对路径以
/开头,或使用~表示主目录。
好处:
- 即时访问:服务器启动时,目录会立即验证并准备好使用
- 安全性:仅可访问指定的目录(除非使用 MCP Roots 协议)
- 便利性:无需通过对话手动注册目录
- AI 可见性:预批准的目录会动态嵌入到
register_directory和list_allowed_directories工具描述中,确保 AI 助手知道哪些目录已预先批准,避免重复注册尝试
AI 助手如何查看预批准文件夹:
当你配置 --approved-folders 时,服务器会将此信息动态注入到 register_directory 和 list_allowed_directories 工具描述中。这确保:
- ✅ AI 助手可以看到哪些目录已经可以访问
- ✅ AI 知道不要重新注册预批准的目录或其子目录
- ✅ 无需 AI 先调用
list_allowed_directories即可清晰可见 - ✅ 在所有 MCP 客户端(包括 Cursor、Claude Desktop 等)上都能可靠工作
AI 在工具描述中看到的示例:
预批准目录(已可访问,请勿注册这些目录):
- C:\Users\username\projects
- C:\Users\username\documents
重要提示:这些目录及其子目录已可被所有文件系统工具访问。请勿对这些路径使用 register_directory。
注意事项:
- 路径必须为绝对路径:Windows 需要驱动器号(
C:/path),Unix/Mac 以/或~开头 - 目录以逗号分隔(除非路径中包含空格)
- 目录在启动时进行验证;如果任何路径无效,服务器将退出
- 可与运行时的
register_directory工具一起使用以获得额外的访问权限 - 如果客户端使用 MCP Roots 协议,将用工作区根目录替换预批准的文件夹
目录过滤
从目录列表中排除特定文件夹:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--ignored-folders",
"node_modules,dist,.git,.next"
]
}
}
}
工具选择
仅启用特定的工具类别:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--enabled-tool-categories",
"read,filesystem"
]
}
}
}
或者启用单个工具:
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--enabled-tools",
"read_file,list_directory,grep_files"
]
}
}
}
组合配置
所有配置选项可以组合使用:
Windows 示例(npx):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"C:/Users/username/projects",
"C:/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
macOS/Linux 示例(npx):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
替代方案:本地仓库执行
对于从克隆仓库运行的用户(在 npm run build 之后):
{
"mcpServers": {
"vulcan-file-ops": {
"command": "vulcan-file-ops",
"args": [
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
目录注册
要访问特定目录,指示 AI 代理:
"请注册目录 C:\path\to\your\folder 以进行访问,然后列出其内容。"
AI 将使用 register_directory 工具获得访问权限,然后在该目录内执行操作。
💻 使用示例
基础用法
# 快速启动示例
npx @n0zer0d4y/vulcan-file-ops --help
高级用法
{
"mcpServers": {
"vulcan-file-ops": {
"command": "npx",
"args": [
"@n0zer0d4y/vulcan-file-ops",
"--approved-folders",
"/Users/username/projects",
"/Users/username/documents",
"--ignored-folders",
"node_modules,dist,.git",
"--approved-commands",
"npm,node,git,ls,pwd,cat,echo",
"--enabled-tool-categories",
"read,filesystem,shell",
"--enabled-tools",
"read_file,attach_image,read_multiple_files,write_file,write_multiple_files,edit_file,make_directory,list_directory,move_file,file_operations,delete_files,get_file_info,register_directory,list_allowed_directories,glob_files,grep_files,execute_shell"
]
}
}
}
📚 详细文档
API 文档
按类别提供的工具
读取操作
read_file
以灵活的模式读取文件内容(全量、头部、尾部、范围)
注意:此工具仅支持单文件操作。推荐:使用 read_multiple_files,它支持单文件和批量文件操作,更具灵活性。
输入:
path(字符串):文件路径mode(字符串,可选):读取模式full- 读取整个文件(默认)head- 读取前 N 行tail- 读取后 N 行range- 读取任意行范围(例如,第 50 - 100 行)
lines(数字,可选):头部/尾部模式的行数startLine(数字,可选):范围模式的起始行endLine(数字,可选):范围模式的结束行
输出:文件内容作为文本。支持文本文件和文档(PDF、DOCX、PPTX、XLSX、ODT、ODP、ODS)
attach_image
附加图像供 AI 视觉分析
输入:
path(字符串 | 字符串数组):图像文件的路径,或用于一次附加多个图像的路径数组
输出:MCP 格式的图像内容,用于视觉模型处理。支持 PNG、JPEG、GIF、WebP、BMP、SVG
read_multiple_files
并发批量读取多个文件
输入:
files(数组):具有路径和可选模式设置的文件对象列表
输出:所有文件的内容。读取失败不会停止操作
写入操作
write_file
创建或替换文件内容
注意:此工具仅支持单文件操作。推荐:使用 write_multiple_files,它支持单文件和批量文件操作,更具灵活性。
输入:
path(字符串):文件路径content(字符串):文件内容(文本或用于 PDF/DOCX 转换的 HTML)
输出:成功确认。支持 HTML 到 PDF/DOCX 的转换,具有丰富的格式
write_multiple_files
并发创建或替换多个文件
输入:
files(数组):具有路径和内容的文件对象列表
输出:每个文件的状态。写入失败不会停止其他文件的操作
edit_file
对文本和代码文件进行精确修改,具有智能匹配功能。支持单文件和多文件操作。
单文件输入(模式:'single'):
mode(字符串,可选):设置为"single"(如果省略,为向后兼容默认为此值)path(字符串):文件路径edits(数组):编辑操作列表,每个操作包含:oldText(字符串):要搜索的文本(包含 3 - 5 行上下文)newText(字符串):要替换的文本instruction(字符串,可选):此编辑的描述expectedOccurrences(数字,可选):预期匹配次数(默认:1)
matchingStrategy(字符串,可选):匹配策略exact- 逐字符匹配(最快、最安全)flexible- 不区分空格的匹配,保留缩进fuzzy- 基于标记的正则表达式匹配(最宽松)auto- 尝试精确 → 灵活 → 模糊(默认)
dryRun(布尔值,可选):预览更改而不写入(默认:false)failOnAmbiguous(布尔值,可选):当匹配不明确时失败(默认:true)
多文件输入(模式:'multiple'):
mode(字符串):设置为"multiple"files(数组):文件编辑请求数组(最多 50 个),每个请求包含:path(字符串):文件路径edits(数组):此文件的编辑操作列表(与上述结构相同)matchingStrategy(字符串,可选):每个文件的匹配策略dryRun(布尔值,可选):每个文件的预览模式failOnAmbiguous(布尔值,可选):每个文件的歧义处理
failFast(布尔值,可选):在第一次失败时停止并回滚(true,默认)或继续(false)
特性:
- 多文件操作的并发处理
- 失败时自动回滚的原子操作(当 failFast: true 时)
- 跨平台行尾保留
- 带有统计信息的详细差异输出
输出:带有统计信息的详细差异。对于多文件操作,包括每个文件的结果和汇总统计信息,以及原子操作的回滚信息。
重要提示:在 oldText/newText 中使用实际的换行符,而不是转义序列(如 \n)。
文件系统操作
make_directory
创建单个或多个目录(类似于 Unix 的 mkdir -p)
输入:
paths(字符串 | 数组):单个路径或路径数组
输出:成功确认。递归创建父目录,具有幂等性
list_directory
以多种输出格式列出目录内容
输入:
path(字符串):目录路径format(字符串,可选):输出格式simple- 基本的 [DIR]/[FILE] 列表(默认)detailed- 带有大小、时间戳和统计信息tree- 分层文本树视图json- 带有完整元数据的结构化数据
sortBy(字符串,可选):排序顺序name- 按字母顺序(默认)size- 从大到小
excludePatterns(数组,可选):要排除的 glob 模式(例如['*.log', 'temp*'])
输出:指定格式的目录列表,带有元数据
move_file
重新定位或重命名文件和目录
注意:此工具仅支持单文件操作。推荐:使用 file_operations,它支持移动、复制和重命名操作,适用于单文件和批量文件,更具灵活性。
输入:
source(字符串):源路径destination(字符串):目标路径
输出:成功确认
file_operations
批量文件操作(移动、复制、重命名)
输入:
operation(字符串):操作类型move- 重新定位文件copy- 复制文件rename- 重命名文件
files(数组):源 - 目标对列表onConflict(字符串,可选):冲突解决方式skip- 跳过现有文件overwrite- 替换现有文件error- 冲突时失败(默认)
输出:每个操作的状态。每次操作最多处理 100 个文件
delete_files
删除单个或多个文件和目录
输入:
paths(数组):要删除的路径列表recursive(布尔值,可选):启用递归删除force(布尔值,可选):强制删除只读文件
输出:每个删除操作的状态。默认情况下不进行递归删除以确保安全
get_file_info
检索文件和目录的元数据
输入:
path(字符串):文件或目录路径
输出:大小、时间戳、权限和类型信息
register_directory
在运行时启用对新目录的访问
输入:
path(字符串):要注册的目录路径
输出:成功确认。该目录可用于操作
list_allowed_directories
显示当前可访问的目录路径
输入:无
输出:所有允许的目录列表
搜索操作
glob_files
使用 glob 模式匹配查找文件
输入:
path(字符串):要搜索的目录pattern(字符串):glob 模式(例如**/*.ts)excludePatterns(数组,可选):要排除的模式
输出:匹配的文件路径列表
grep_files
在文件中搜索文本模式
输入:
pattern(字符串):要搜索的正则表达式模式path(字符串,可选):要搜索的目录-i(布尔值,可选):不区分大小写-A/-B/-C(数字,可选):匹配前后的上下文行数type(字符串,可选):文件类型过滤器(js、py、ts 等)output_mode(字符串,可选):输出格式content- 带有行号的匹配行(默认)files_with_matches- 仅文件路径count- 每个文件的匹配计数
head_limit(数字,可选):限制结果
输出:带有上下文的匹配行、文件路径或匹配计数
shell 操作
execute_shell
使用安全控制执行 shell 命令
输入:
command(字符串):要执行的 shell 命令description(字符串,可选):命令目的workdir(字符串,可选):工作目录(必须在允许的目录内)。如果未提供,则使用 process.cwd() 并进行验证timeout(数字,可选):超时时间(毫秒)(默认:30000)
输出:退出代码、标准输出、标准错误和执行元数据
安全措施:
- 在执行 shell 命令之前,必须至少配置一个批准的目录
- 工作目录(无论是显式的还是默认的 process.cwd())始终根据允许的目录进行验证
- 命令参数中的所有文件/目录路径都会自动提取并根据允许的目录进行验证
- 引用批准目录之外路径的命令将被阻止,防止绕过目录限制
多文件编辑示例
跨多个文件的批量重构:
{
files: [
{
path: "src/utils.ts",
edits: [{
instruction: "更新弃用的函数调用",
oldText: "oldApi.getData()",
newText: "newApi.fetchData()"
}]
},
{
path: "src/components/Button.tsx",
edits: [{
instruction: "更新组件属性",
oldText: "onClick={oldHandler}",
newText: "onClick={newHandler}"
}]
},
{
path: "src/hooks/useData.ts",
edits: [{
instruction: "更新钩子实现",
oldText: "const data = oldApi.getData()",
newText: "const data = newApi.fetchData()"
}]
}
],
failFast: true // 原子操作 - 如果任何一个失败则回滚所有操作
}
每个文件的配置:
{
files: [
{
path: "config.json",
edits: [{
oldText: '"version": "1.0.0"',
newText: '"version": "1.1.0"'
}],
matchingStrategy: "exact" // JSON 需要精确匹配
},
{
path: "src/app.py",
edits: [{
oldText: "def old_function():",
newText: "def new_function():"
}],
matchingStrategy: "flexible" // Python 缩进可能会有所不同
},
{
path: "README.md",
edits: [{
oldText: "## Old Section",
newText: "## New Section"
}],
matchingStrategy: "auto" // 让 AI 决定最佳策略
}
],
failFast: false // 即使某些文件失败也继续执行
}
更多详细的使用示例,请参阅 工具使用指南。
🔧 技术细节
模型上下文协议
模型上下文协议(MCP)使 AI 助手能够安全地访问外部资源和服务。此服务器实现了用于文件系统操作的 MCP,允许 AI 代理在受控目录边界内读取、写入和管理文件。
目录访问模型
此服务器支持多种灵活的目录访问方法:
- 预配置访问:在服务器启动时使用
--approved-folders指定目录以实现立即访问 - 运行时注册:用户可以在对话中指示 AI 代理通过
register_directory工具注册目录 - MCP Roots 协议:客户端应用程序可以动态提供工作区目录
- 灵活的权限:结合多种方法 - 从批准的文件夹开始,在运行时添加更多
- 安全边界:无论使用何种访问方法,所有操作都将根据注册的目录进行验证
安全措施
此 MCP 服务器实现了企业级安全控制,以防范常见的文件系统漏洞。所有安全措施均基于行业最佳实践,并针对已知的 CVE 模式进行了处理。
防范的漏洞
- 路径遍历和目录绕过(CWE - 22):防范 CVE - 2025 - 54794 / CVE - 2025 - 53110 等模式,通过规范路径验证和路径分隔符要求防止前缀冲突攻击
- 命令注入(CWE - 78):防范 CVE - 2025 - 54795 等模式,通过多层验证(包括命令替换检测、根命令提取和危险模式匹配)来阻止危险命令
- Shell 命令目录绕过(CWE - 22):防止通过 shell 命令中的绝对路径绕过路径限制,通过提取和验证命令参数中的所有文件/目录路径来实现
- 符号链接攻击(CWE - 59 / CWE - 61):防范 CVE - 2025 - 53109 等模式,在验证前通过
realpath()解析所有路径以跟踪符号链接到实际目标 - 目录遍历:通过严格的路径规范化和仅针对批准目录的验证来防止
../遍历尝试
安全控制
- 路径验证:规范路径解析、路径分隔符要求、符号链接解析和父目录验证
- 命令执行:命令白名单、模式检测、命令替换阻止、根命令提取和路径参数验证
- 访问控制:目录白名单、运行时注册、原子验证和跨平台安全处理
安全最佳实践
- 最小化批准目录:仅批准需要 AI 访问的目录
- 使用目录过滤:从列表中排除敏感文件夹(例如
.git、node_modules) - 限制工具访问:通过
--enabled-tools或--enabled-tool-categories仅启用必要的工具 - 命令审批:通过
--approved-commands预先批准安全命令;其他命令需要审批 - 监控操作:审查 MCP 客户端日志以发现意外的访问尝试
- 定期更新:保持服务器更新以接收安全补丁
安全审计
此服务器已针对已知漏洞和静态分析结果进行了全面审计:
- CVE 保护状态:
- ✅ CVE - 2025 - 54794(路径限制绕过) - 已修复
- ✅ CVE - 2025 - 54795(命令注入) - 已防范
- ✅ CVE - 2025 - 53109(符号链接攻击) - 已防范
- ✅ CVE - 2025 - 53110(目录包含绕过) - 已防范
- ✅ Shell 执行目录绕过 - 2024 年 11 月已修复
- 最新安全审计报告:
- Snyk 漏洞审计报告 - 2025 年 11 月
- CVE 手动审计 - 2025 年 11 月
- Shell 命令目录绕过审计 - 2025 年 11 月
- 安全测试覆盖摘要
支持的文件类型
文本文件操作
读取工具(read_file、read_multiple_files):
- 文本文件:以 UTF - 8 编码读取任何文件(源代码、配置文件、markdown、JSON、XML、CSV、日志)
- 文档文件:自动检测并解析 PDF、Word、PowerPoint、Excel、OpenDocument 等文档
写入工具(write_file、write_multiple_files、edit_file):
- 写入 UTF - 8 编码的文本内容
- 支持 HTML 到 PDF/DOCX 的转换,具有丰富的格式
- 可以创建源代码、配置文件、markdown、JSON、XML、CSV、文本文档、从 HTML 生成的格式化 PDF/DOCX
图像文件操作
附加图像工具(attach_image):
- 附加图像供 AI 视觉分析(需要具有视觉功能的 MCP 客户端)
- 支持 PNG、JPEG、GIF、WebP、BMP、SVG 格式
- 支持批量附加图像
- 返回 MCP 标准格式的图像,供客户端视觉处理
文件系统操作
文件操作工具(file_operations、move_file):
- 适用于任何文件类型(文本或二进制)
- 支持移动、复制、重命名操作
- 处理文件和目录,操作过程中保留文件内容不变
文件编辑
编辑文件工具(edit_file):
- 智能文件修改,具有自动匹配策略(精确 → 灵活 → 模糊)
- 支持一次操作中的多个顺序编辑
- 提供带有统计信息的详细差异输出
- 可选的预览模式(
dryRun: true) - 保留缩进和行尾
开发设置
# 克隆仓库
git clone https://github.com/n0zer0d4y/vulcan-file-ops.git
cd vulcan-file-ops
# 安装依赖
npm install
# 运行测试
npm test
# 构建项目
npm run build
# 启动开发服务器
npm start
测试
项目包含全面的测试覆盖。使用以下命令运行测试:
npm test
📄 许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
贡献说明
本项目暂不接受拉取请求。
欢迎通过 GitHub 问题提交 bug 报告和功能请求。请包含以下信息:
- 对于 bug:重现步骤、预期行为与实际行为的对比、环境详细信息
- 对于功能:清晰描述你需要的功能及其使用场景
请先搜索现有问题,因为可能已有相关话题被提及。
替代品







