article
README
🚀 文件系统 MCP 服务端 SSE
这是一个基于 Node.js 的文件系统 SSE 服务端,实现了模型上下文协议(MCP),可用于文件系统操作,如文件的读写、目录的管理等。
✨ 主要特性
- 支持读取和写入文件。
- 能够创建、列出和删除目录。
- 可移动文件和目录。
- 支持文件搜索功能。
- 能获取文件的元数据。
⚠️ 重要提示
服务器仅允许在通过
args参数指定的目录内执行操作。
📄 API 文档
资源路径
file://system:文件系统操作接口
工具方法
read_file
- 功能:读取文件的完整内容。
- 输入参数:
path(字符串) - 说明:使用 UTF-8 编码读取整个文件内容。
read_multiple_files
- 功能:同时读取多个文件。
- 输入参数:
paths(字符串数组) - 说明:读取失败不会终止整个操作。
write_file
- 功能:创建新文件或覆盖现有文件(使用时需谨慎)。
- 输入参数:
path(字符串):文件路径content(字符串):文件内容
edit_file
- 功能:使用高级模式匹配和格式化进行选择性编辑。
- 特性:
- 支持行级及多行内容匹配。
- 自动检测缩进并保留缩进样式。
- 支持同时执行多个编辑操作并正确定位。
- 自动生成带有上下文的 Git 风格 diff 输出。
- 干运行模式下可以预览更改(默认:false)。
- 输入参数:
path(字符串):要编辑的文件路径edits(数组):编辑操作列表oldText(字符串):搜索匹配的文本(可以是子字符串)newText(字符串):替换的文本
dryRun(布尔值):预览更改而不实际应用(默认:false)
- 说明:返回详细 diff 和匹配信息( dryRun 模式),否则应用更改。最佳实践是始终使用干运行模式预览更改,确认无误后再执行。
create_directory
- 功能:创建新目录或确保目录存在。
- 输入参数:
path(字符串) - 说明:如果需要自动创建父级目录,此方法会成功创建;如果目录已存在,则静默成功。
list_directory
- 功能:列出目录内容,文件前缀为 [FILE],目录前缀为 [DIR]。
- 输入参数:
path(字符串)
move_file
- 功能:移动或重命名文件和目录。
- 输入参数:
source(字符串):源路径destination(字符串):目标路径
- 说明:如果目标已存在,则操作失败。
search_files
- 功能:递归搜索文件/目录。
- 输入参数:
path(字符串):起始目录pattern(字符串):搜索模式excludePatterns(字符串数组):排除的模式列表,支持 glob 格式
- 说明:不区分大小写匹配,返回完整的匹配文件路径。
get_file_info
- 功能:获取文件/目录的详细元数据。
- 输入参数:
path(字符串) - 返回结果:
name(字符串):名称type(字符串):"file" 或 "directory"size(数字):大小(字节)mtime(时间戳):最后修改时间ctime(时间戳):创建时间
get_file_list
- 功能:获取指定目录下的所有文件和子目录。
- 输入参数:
path(字符串):要列出的目录路径recursive(布尔值,默认:false):是否递归遍历子目录
- 返回结果:包含文件和目录信息的数组
💻 使用示例
[基础用法]
本地运行示例
- 安装依赖:
npm install
- 启动服务:
node index.js
- 使用 curl 测试接口:
curl -X POST http://localhost:3000/file-system/read-file \
-H "Content-Type: application/json" \
-d '{"path": "/test.txt"}'
[高级用法]
Docker 运行示例
- 打包镜像:
docker build -t file-system-mcp .
- 启动容器:
docker run -p 3000:3000 --name file-system-service file-system-mcp
📚 详细文档
注意事项
- 所有文件操作均需处理可能的异常情况,例如权限不足、文件不存在等。
- 默认情况下,服务器会对所有请求进行基本的身份验证和授权检查。
- 支持设置最大上传文件大小限制和并发连接数限制。
📄 许可证
本项目遵循 MIT 许可证协议。更多信息请查看项目仓库中的 LICENSE 文件。
扫码联系在线客服