local-file-operation-mcp
Version:
本地文件操作 MCP 服务器:安全的读写、编辑、搜索、比较、哈希、权限、压缩、监控、命令与任务管理工具集。
602 lines (504 loc) • 13.7 kB
Markdown
# 本地文件操作 MCP 服务器 v2.0.1
一个功能强大的 MCP (Model Context Protocol) 服务器,为大模型应用提供安全的本地文件操作、行级编辑、文件搜索、文件比较、文件哈希、文件权限、文件压缩、文件监控、命令执行和任务管理功能。
## ✨ 功能特性
### 📁 文件操作工具
- **读取文件** - 安全读取本地文件内容
- **写入文件** - 创建或更新文件内容
- **列出目录** - 查看目录结构和文件列表
- **创建目录** - 创建新的目录结构
- **删除文件/目录** - 安全删除文件和目录
### ✏️ 文件编辑工具 (v1.1.0 新增)
- **删除行** - 删除指定行号范围的内容
- **插入行** - 在指定位置插入新内容
- **替换行** - 替换指定行号范围的内容
- **追加行** - 在文件末尾追加新内容
### 🔍 文件搜索工具 (v1.2.0 新增)
- **内容搜索** - 在文件中搜索指定内容
- **正则表达式** - 支持正则表达式搜索
- **文件类型过滤** - 按文件类型过滤搜索结果
- **大小写控制** - 支持区分/不区分大小写搜索
### 📊 文件比较工具 (v1.2.0 新增)
- **差异对比** - 比较两个文件的差异
- **行级对比** - 显示具体的行级差异
- **多种输出格式** - 支持文本和JSON格式输出
### 🔐 文件哈希工具 (v1.2.0 新增)
- **多种算法** - 支持MD5、SHA1、SHA256、SHA512
- **文件完整性** - 验证文件完整性
- **快速计算** - 高效的文件哈希计算
### 🛡️ 文件权限工具 (v1.2.0 新增)
- **权限修改** - 修改文件权限
- **递归应用** - 支持递归应用权限
- **权限显示** - 显示详细的权限信息
### 📦 文件压缩工具 (v1.2.0 新增)
- **多种格式** - 支持ZIP、TAR、GZ、TAR.GZ格式
- **压缩解压** - 支持压缩和解压操作
- **批量处理** - 支持目录批量压缩
### 👁️ 文件监控工具 (v1.2.0 新增)
- **实时监控** - 监控文件变化
- **事件类型** - 支持创建、删除、修改事件
- **定时监控** - 可设置监控时长
### 📋 任务管理工具 (v2.0.1 新增)
- **任务分解** - 支持创建复杂任务和子任务
- **优先级管理** - 支持低、中、高、紧急四个优先级
- **进度跟踪** - 实时跟踪任务完成进度
- **排期管理** - 支持设置截止日期
- **状态管理** - 待处理、进行中、已完成、已取消
- **模型隔离** - 不同模型拥有独立的任务列表
### ⚡ 命令执行工具
- **执行本地命令** - 在指定工作目录下执行系统命令
- **安全限制** - 自动过滤危险命令,保护系统安全
### 🔒 安全特性
### 🕒 时间工具 (v2.0.2 新增)
- **当前时间** - 获取当前真实时间
- **多种格式** - ISO、RFC3339、UNIX(秒/毫秒)、本地格式
- **时区支持** - 指定 IANA 时区(如 `Asia/Shanghai`)
- **路径限制** - 禁止访问敏感系统目录
- **命令过滤** - 阻止执行危险的系统命令
- **权限控制** - 确保操作在安全范围内
## 🚀 快速开始
### 环境要求
- Node.js >= 18.0.0
- npm 或 yarn
### 安装依赖
```bash
cd /Users/abc/research/mcp
npm install
```
## 📋 配置说明
### LM Studio 配置
```json
{
"mcpServers": {
"file_operation": {
"command": "/Users/abc/.nvm/versions/node/v22.16.0/bin/node",
"args": ["/Users/abc/research/mcp/index.js"],
"env": {
"PATH": "/Users/abc/.nvm/versions/node/v22.16.0/bin:/usr/local/bin:/usr/bin:/bin",
"NODE_PATH": "/Users/abc/research/mcp"
}
}
}
}
### 注意这里的 "/Users/abc/research/mcp" 是下载到的文件夹的位置.要改成自己的路径.
```
### Qwen 配置
```json
{
"mcpServers": {
"file_operation": {
"command": "npx",
"args": [
"-y",
"local-file-operation-mcp@file:/Users/abc/research/mcp"
]
}
}
}
### 注意这里的 "local-file-operation-mcp@file:/Users/abc/research/mcp" @file: 后面是下载到的文件夹的位置.要改成自己的路径.
```
## 🛠️ 工具使用
### 文件操作工具
#### 工作目录概念
为了安全性和灵活性,MCP服务器支持工作目录概念:
- **工作目录**:通过 `working_directory` 参数指定一个安全的基础目录
- **相对路径**:在 `path` 参数中使用相对路径,会自动基于工作目录解析
- **智能检测**:自动识别常见的项目目录模式,支持直接使用绝对路径
- **安全限制**:只有在允许的项目目录下的操作才被允许
- **跨平台兼容**:不硬编码特定路径,适用于不同用户和系统
#### 允许的项目目录模式
系统自动识别以下目录模式,允许直接使用绝对路径:
- `/isoftstone/` - 项目目录
- `/Desktop/` - 桌面
- `/Documents/` - 文档
- `/Downloads/` - 下载
- `/Projects/` - 项目
- `/Workspace/` - 工作空间
- `/Code/` - 代码
- `/Development/` - 开发
- `/Work/` - 工作
- `/Study/` - 学习
- `/Research/` - 研究
#### 读取文件
```json
{
"name": "file_operation",
"arguments": {
"operation": "read",
"path": "/path/to/file.txt"
}
}
```
#### 写入文件
```json
{
"name": "file_operation",
"arguments": {
"operation": "write",
"path": "/path/to/file.txt",
"content": "文件内容"
}
}
```
#### 列出目录
```json
{
"name": "file_operation",
"arguments": {
"operation": "list",
"path": "/path/to/directory"
}
}
```
#### 创建目录
```json
{
"name": "file_operation",
"arguments": {
"operation": "create_dir",
"path": "/path/to/new/directory"
}
}
```
#### 使用工作目录(推荐)
```json
{
"name": "file_operation",
"arguments": {
"operation": "create_dir",
"path": "售前类业务/自动HMI",
"working_directory": "/Users/abc/isoftstone"
}
}
```
#### 删除文件/目录
```json
{
"name": "file_operation",
"arguments": {
"operation": "delete",
"path": "/path/to/file_or_directory"
}
}
```
### 文件编辑工具
#### 删除行
```json
{
"name": "file_edit",
"arguments": {
"operation": "delete_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"end_line": 5
}
}
```
#### 插入行
```json
{
"name": "file_edit",
"arguments": {
"operation": "insert_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"content": "新插入的内容"
}
}
```
#### 替换行
```json
{
"name": "file_edit",
"arguments": {
"operation": "replace_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"end_line": 5,
"content": "替换后的内容"
}
}
```
#### 追加行
```json
{
"name": "file_edit",
"arguments": {
"operation": "append_lines",
"path": "/path/to/file.txt",
"content": "追加到文件末尾的内容"
}
}
```
### 命令执行工具
#### 执行命令
```json
{
"name": "execute_command",
"arguments": {
"command": "ls -la",
"working_directory": "/path/to/working/dir"
}
}
```
### 文件搜索工具
#### 搜索文件内容
```json
{
"name": "file_search",
"arguments": {
"search_path": "/path/to/search",
"pattern": "function.*\\(",
"file_types": "js,ts",
"case_sensitive": false,
"max_results": 50
}
}
```
### 文件比较工具
#### 比较两个文件
```json
{
"name": "file_compare",
"arguments": {
"file1": "/path/to/file1.txt",
"file2": "/path/to/file2.txt",
"output_format": "text"
}
}
```
### 文件哈希工具
#### 计算文件哈希
```json
{
"name": "file_hash",
"arguments": {
"path": "/path/to/file.txt",
"algorithm": "sha256"
}
}
```
### 文件权限工具
#### 修改文件权限
```json
{
"name": "file_permissions",
"arguments": {
"path": "/path/to/file.txt",
"mode": "755",
"recursive": false
}
}
```
### 文件压缩工具
#### 压缩文件
```json
{
"name": "file_archive",
"arguments": {
"operation": "compress",
"source": "/path/to/source",
"destination": "/path/to/archive.zip",
"format": "zip"
}
}
```
#### 解压文件
```json
{
"name": "file_archive",
"arguments": {
"operation": "extract",
"source": "/path/to/archive.zip",
"destination": "/path/to/extract"
}
}
```
### 文件监控工具
#### 监控文件变化
```json
{
"name": "file_watch",
"arguments": {
"path": "/path/to/watch",
"events": "create,delete,modify",
"duration": 60,
"output_format": "text"
}
}
```
### 任务管理工具
### 时间工具
#### 获取当前时间(ISO,含毫秒)
```json
{
"name": "time_tool",
"arguments": {
"format": "iso",
"include_milliseconds": true
}
}
```
#### 获取 UNIX 时间戳(秒)
```json
{
"name": "time_tool",
"arguments": {
"format": "unix"
}
}
```
#### 获取本地时间并指定时区
```json
{
"name": "time_tool",
"arguments": {
"format": "locale",
"time_zone": "Asia/Shanghai",
"include_milliseconds": false
}
}
```
#### 创建任务
```json
{
"name": "task_manager",
"arguments": {
"operation": "create",
"model_name": "claude-3.5-sonnet",
"title": "完成项目文档",
"description": "编写API文档和使用说明",
"priority": "high",
"due_date": "2024-01-15T10:00:00Z",
"subtasks": ["编写API文档", "创建使用示例", "更新README"]
}
}
```
#### 列出任务
```json
{
"name": "task_manager",
"arguments": {
"operation": "list",
"model_name": "claude-3.5-sonnet",
"status": "pending"
}
}
```
#### 更新任务
```json
{
"name": "task_manager",
"arguments": {
"operation": "update",
"model_name": "claude-3.5-sonnet",
"task_id": "task_1758140089301_bi4kwqkcl",
"status": "in_progress",
"progress": 50
}
}
```
#### 完成任务
```json
{
"name": "task_manager",
"arguments": {
"operation": "complete",
"model_name": "claude-3.5-sonnet",
"task_id": "task_1758140089301_bi4kwqkcl"
}
}
```
## 🔧 工作原理
### MCP 协议通信
1. **大模型应用启动** - 根据配置自动启动 MCP 服务器进程
2. **建立连接** - 通过 stdio 协议建立通信连接
3. **工具发现** - 大模型应用发送 `ListTools` 请求获取可用工具
4. **工具调用** - 当需要文件操作时,发送工具调用请求
5. **自动管理** - 大模型应用负责管理 MCP 服务器的生命周期
### 安全机制
- **路径检查** - 禁止访问 `/`, `/Users/<username>`, `/etc`, `/bin` 等敏感目录
- **命令过滤** - 阻止执行 `rm -rf`, `sudo`, `chmod 777` 等危险命令
- **权限验证** - 确保所有操作在安全范围内
## 📁 项目结构
```
mcp/
├── index.js # MCP 服务器主文件
├── package.json # Node.js 项目配置
├── mcp_config.json # LM Studio 配置
├── qwen_config_final.json # Qwen 配置
├── mcp_config_template.json # 配置模板
├── tools/ # 工具模块目录
│ ├── fileOperation.js # 文件操作工具
│ ├── fileEdit.js # 文件编辑工具
│ ├── fileSearch.js # 文件搜索工具
│ ├── fileCompare.js # 文件比较工具
│ ├── fileHash.js # 文件哈希工具
│ ├── filePermissions.js # 文件权限工具
│ ├── fileArchive.js # 文件压缩工具
│ ├── fileWatch.js # 文件监控工具
│ ├── commandExecution.js # 命令执行工具
│ ├── taskManager.js # 任务管理工具
│ └── securityValidator.js # 安全验证模块
├── temps/ # 临时文件目录(自动创建)
│ └── todo_<model_name>.json # 任务数据存储(运行时生成)
├── share4u.md # 中文分享文档
├── share4u_en.md # 英文分享文档
├── share4u_jp.md # 日文分享文档
└── README.md # 项目文档
```
## 🎯 支持的大模型应用
- ✅ **LM Studio** - 使用直接 node 执行
- ✅ **Qwen** - 使用 npx 本地包
- ✅ **其他支持 MCP 协议的应用**
## 🔍 故障排除
### 常见问题
1. **连接失败** - 检查 Node.js 路径和文件权限
2. **工具不可用** - 确认 MCP 服务器正常启动
3. **权限错误** - 检查文件系统权限
### 调试方法
1. **手动测试** - 运行 `npx -y local-file-operation-mcp@file:/Users/abc/research/mcp`
2. **检查日志** - 查看大模型应用的错误日志
3. **验证配置** - 确认配置文件格式正确
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
---
**享受强大的本地文件操作能力!** 🚀✨
---
## 📦 安装与使用(无需下载源码)
支持通过 npm 全局安装或直接使用 npx 运行,无需手动克隆仓库或修改本地路径。
### 全局安装
```bash
npm install -g local-file-operation-mcp
```
安装后,可在支持 MCP 的客户端中直接引用可执行文件 `local-file-operation-mcp`。
### 直接使用 npx
无需安装,直接启动:
```bash
npx -y local-file-operation-mcp
```
### 在 LM Studio 中使用
将可执行文件设置为 `local-file-operation-mcp`(无需绝对路径):
```json
{
"mcpServers": {
"file_operation": {
"command": "local-file-operation-mcp"
}
}
}
```
### 在 Qwen 中使用
使用 npx 直接调用(无需本地源码路径):
```json
{
"mcpServers": {
"file_operation": {
"command": "npx",
"args": ["-y", "local-file-operation-mcp"]
}
}
}
```
> 提示:若公司网络限制 npm,亦可发布到 GitHub Packages 或设置内部 npm 镜像,详见 `dev.md` 发布章节。