fileditor-mcp 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1.exe +0 -0
- package/1.json +12 -0
- package/LICENSE +21 -21
- package/README.md +128 -128
- package/docs/MCP-INTERFACE.cn.md +975 -1061
- package/docs/MCP-INTERFACE.en.md +881 -974
- package/docs/README.cn.md +128 -128
- package/package.json +30 -31
- package/src/handlers/applyDiff.js +298 -324
- package/src/handlers/insertContent.js +179 -153
- package/src/handlers/listFiles.js +65 -54
- package/src/handlers/readFile.js +109 -109
- package/src/handlers/searchAndReplace.js +198 -217
- package/src/handlers/setWorkspace.js +26 -26
- package/src/handlers/writeFile.js +97 -91
- package/src/index.js +22 -22
- package/src/server.js +85 -85
- package/src/tools/toolDefinitions.js +291 -301
- package/src/utils/fileUtils.js +238 -716
- package/test/ApplyDiffHandler.test.js +754 -754
- package/test/InsertContentHandler.test.js +371 -369
- package/test/ListFilesHandler.test.js +302 -300
- package/test/ReadFileHandler.test.js +213 -213
- package/test/SearchAndReplaceHandler.test.js +505 -505
- package/test/SetWorkspaceHandler.test.js +290 -290
- package/test/WriteFileHandler.test.js +289 -289
- package/test/runAllTests.js +233 -233
package/docs/README.cn.md
CHANGED
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
# FileEditor MCP Server
|
|
2
|
-
|
|
3
|
-
[📖 English Interface Doc](./MCP-INTERFACE.en.md) | [📖 中文接口文档](./MCP-INTERFACE.cn.md) | [📋 English README](../README.md)
|
|
4
|
-
|
|
5
|
-
**专为 AI 编程助手优化的文件操作服务器** - 基于 Model Context Protocol 构建,针对代码编辑、重构、批量修改等AI编程场景深度优化,提供高精度、高效率的文件系统操作能力。
|
|
6
|
-
|
|
7
|
-
## 🎯 设计理念
|
|
8
|
-
|
|
9
|
-
**为 AI 编程而生** - 本项目专门针对 AI 模型的代码编辑需求进行设计,提供精确的块级操作、智能匹配算法和批量处理能力,让 AI 能够安全、高效地执行复杂的代码修改任务。
|
|
10
|
-
|
|
11
|
-
## 🚀 核心特性
|
|
12
|
-
|
|
13
|
-
### 📁 专业文件操作工具 (7个)
|
|
14
|
-
- **`set_workspace`** - 安全工作区管理 (强制隔离,防止误操作)
|
|
15
|
-
- **`read_files`** - 智能批量读取 (支持多文件、行范围、带行号定位)
|
|
16
|
-
- **`write_files`** - 高效文件创建 (批量写入、原子性保证)
|
|
17
|
-
- **`list_files`** - 完整目录遍历 (递归扫描、结构化输出)
|
|
18
|
-
- **`insert_contents`** - 精确内容插入 (多点插入、负索引、末尾追加)
|
|
19
|
-
- **`apply_diffs`** - **AI友好的差异应用** (智能空格处理、批量原子操作、容错匹配)
|
|
20
|
-
- **`search_and_replace`** - 强大模式替换 (正则支持、范围限定、大小写控制)
|
|
21
|
-
|
|
22
|
-
### 🛡️ 企业级安全保障
|
|
23
|
-
- **工作区强隔离**: 严格边界控制,防止目录穿透和文件泄露
|
|
24
|
-
- **路径智能解析**: 自动验证和标准化文件路径
|
|
25
|
-
- **原子事务**: 批量操作要么全部成功,要么完全回滚
|
|
26
|
-
|
|
27
|
-
### ⚡ AI 优化功能
|
|
28
|
-
- **批量处理引擎**: 单次 API 调用处理大量文件操作
|
|
29
|
-
- **智能匹配算法**: `trim` 模式处理代码格式差异,容错性强
|
|
30
|
-
- **详细操作反馈**: 完整的成功/失败信息,便于 AI 调试和决策
|
|
31
|
-
- **非阻塞错误处理**: 部分失败不影响其他操作继续执行
|
|
32
|
-
|
|
33
|
-
## 🛠️ 快速开始
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# 安装依赖 (推荐使用 pnpm)
|
|
37
|
-
pnpm install
|
|
38
|
-
|
|
39
|
-
# 启动生产服务器
|
|
40
|
-
pnpm start
|
|
41
|
-
|
|
42
|
-
# 开发模式 (文件变更自动重启)
|
|
43
|
-
pnpm dev
|
|
44
|
-
|
|
45
|
-
# 运行完整测试套件
|
|
46
|
-
pnpm test
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**环境要求**: Node.js ≥18, pnpm 包管理器
|
|
50
|
-
|
|
51
|
-
## 💡 典型使用场景
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
// 场景1: 工作区初始化 (必须首先执行)
|
|
55
|
-
{
|
|
56
|
-
"name": "set_workspace",
|
|
57
|
-
"arguments": { "path": "/path/to/your/project" }
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// 场景2: 批量代码文件分析
|
|
61
|
-
{
|
|
62
|
-
"name": "read_files",
|
|
63
|
-
"arguments": {
|
|
64
|
-
"path": ["src/main.js", "src/utils.js", "package.json"],
|
|
65
|
-
"line_range": "1-50" // 可选:仅读取前50行
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// 场景3: 智能代码重构 (容错空格差异)
|
|
70
|
-
{
|
|
71
|
-
"name": "apply_diffs",
|
|
72
|
-
"arguments": {
|
|
73
|
-
"path": "src/config.js",
|
|
74
|
-
"search_content": [
|
|
75
|
-
"const API_URL = 'localhost';",
|
|
76
|
-
"const PORT = 3000;"
|
|
77
|
-
],
|
|
78
|
-
"replace_content": [
|
|
79
|
-
"const API_URL = process.env.API_URL || 'localhost';",
|
|
80
|
-
"const PORT = process.env.PORT || 3000;"
|
|
81
|
-
],
|
|
82
|
-
"start_line": [5, 7],
|
|
83
|
-
"atomic": true, // 原子模式:全部成功或全部回滚
|
|
84
|
-
"trim": true // 智能模式:忽略空格差异
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 🏗️ 架构设计
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
src/
|
|
93
|
-
├── index.js # 服务启动入口
|
|
94
|
-
├── server.js # MCP 协议服务器
|
|
95
|
-
├── tools/
|
|
96
|
-
│ └── toolDefinitions.js # 工具定义和 JSON Schema
|
|
97
|
-
├── handlers/ # 核心处理器 (7个)
|
|
98
|
-
│ ├── applyDiff.js # 差异应用 (支持批量+原子+智能匹配)
|
|
99
|
-
│ ├── readFile.js # 文件读取器
|
|
100
|
-
│ ├── writeFile.js # 文件写入器
|
|
101
|
-
│ ├── listFiles.js # 目录扫描器
|
|
102
|
-
│ ├── insertContent.js # 内容插入器
|
|
103
|
-
│ ├── searchAndReplace.js # 模式替换器
|
|
104
|
-
│ └── setWorkspace.js # 工作区管理器
|
|
105
|
-
└── utils/
|
|
106
|
-
└── fileUtils.js # 通用文件操作库
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**架构优势**: 高度模块化、职责明确、易于维护、便于 AI 理解和调用
|
|
110
|
-
|
|
111
|
-
## 📊 质量保证
|
|
112
|
-
|
|
113
|
-
- ✅ **100% 测试覆盖率** - 7个完整的处理器测试套件
|
|
114
|
-
- ✅ **边界条件验证** - 异常输入和错误状态处理
|
|
115
|
-
- ✅ **批量操作验证** - 原子性和一致性保证
|
|
116
|
-
- ✅ **安全性测试** - 路径注入和权限验证
|
|
117
|
-
|
|
118
|
-
## 🎉 为什么选择 FileEditor MCP
|
|
119
|
-
|
|
120
|
-
1. **AI 原生设计** - 专门为 AI 编程助手的工作模式优化
|
|
121
|
-
2. **高性能批处理** - 减少 API 调用次数,提升处理效率
|
|
122
|
-
3. **智能容错** - 处理现实代码中的格式和空格差异
|
|
123
|
-
4. **企业级安全** - 严格的工作区隔离和权限控制
|
|
124
|
-
5. **完整测试覆盖** - 可靠性和稳定性保证
|
|
125
|
-
|
|
126
|
-
## 📄 开源协议
|
|
127
|
-
|
|
128
|
-
MIT License - 欢迎贡献和使用
|
|
1
|
+
# FileEditor MCP Server
|
|
2
|
+
|
|
3
|
+
[📖 English Interface Doc](./MCP-INTERFACE.en.md) | [📖 中文接口文档](./MCP-INTERFACE.cn.md) | [📋 English README](../README.md)
|
|
4
|
+
|
|
5
|
+
**专为 AI 编程助手优化的文件操作服务器** - 基于 Model Context Protocol 构建,针对代码编辑、重构、批量修改等AI编程场景深度优化,提供高精度、高效率的文件系统操作能力。
|
|
6
|
+
|
|
7
|
+
## 🎯 设计理念
|
|
8
|
+
|
|
9
|
+
**为 AI 编程而生** - 本项目专门针对 AI 模型的代码编辑需求进行设计,提供精确的块级操作、智能匹配算法和批量处理能力,让 AI 能够安全、高效地执行复杂的代码修改任务。
|
|
10
|
+
|
|
11
|
+
## 🚀 核心特性
|
|
12
|
+
|
|
13
|
+
### 📁 专业文件操作工具 (7个)
|
|
14
|
+
- **`set_workspace`** - 安全工作区管理 (强制隔离,防止误操作)
|
|
15
|
+
- **`read_files`** - 智能批量读取 (支持多文件、行范围、带行号定位)
|
|
16
|
+
- **`write_files`** - 高效文件创建 (批量写入、原子性保证)
|
|
17
|
+
- **`list_files`** - 完整目录遍历 (递归扫描、结构化输出)
|
|
18
|
+
- **`insert_contents`** - 精确内容插入 (多点插入、负索引、末尾追加)
|
|
19
|
+
- **`apply_diffs`** - **AI友好的差异应用** (智能空格处理、批量原子操作、容错匹配)
|
|
20
|
+
- **`search_and_replace`** - 强大模式替换 (正则支持、范围限定、大小写控制)
|
|
21
|
+
|
|
22
|
+
### 🛡️ 企业级安全保障
|
|
23
|
+
- **工作区强隔离**: 严格边界控制,防止目录穿透和文件泄露
|
|
24
|
+
- **路径智能解析**: 自动验证和标准化文件路径
|
|
25
|
+
- **原子事务**: 批量操作要么全部成功,要么完全回滚
|
|
26
|
+
|
|
27
|
+
### ⚡ AI 优化功能
|
|
28
|
+
- **批量处理引擎**: 单次 API 调用处理大量文件操作
|
|
29
|
+
- **智能匹配算法**: `trim` 模式处理代码格式差异,容错性强
|
|
30
|
+
- **详细操作反馈**: 完整的成功/失败信息,便于 AI 调试和决策
|
|
31
|
+
- **非阻塞错误处理**: 部分失败不影响其他操作继续执行
|
|
32
|
+
|
|
33
|
+
## 🛠️ 快速开始
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 安装依赖 (推荐使用 pnpm)
|
|
37
|
+
pnpm install
|
|
38
|
+
|
|
39
|
+
# 启动生产服务器
|
|
40
|
+
pnpm start
|
|
41
|
+
|
|
42
|
+
# 开发模式 (文件变更自动重启)
|
|
43
|
+
pnpm dev
|
|
44
|
+
|
|
45
|
+
# 运行完整测试套件
|
|
46
|
+
pnpm test
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**环境要求**: Node.js ≥18, pnpm 包管理器
|
|
50
|
+
|
|
51
|
+
## 💡 典型使用场景
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
// 场景1: 工作区初始化 (必须首先执行)
|
|
55
|
+
{
|
|
56
|
+
"name": "set_workspace",
|
|
57
|
+
"arguments": { "path": "/path/to/your/project" }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// 场景2: 批量代码文件分析
|
|
61
|
+
{
|
|
62
|
+
"name": "read_files",
|
|
63
|
+
"arguments": {
|
|
64
|
+
"path": ["src/main.js", "src/utils.js", "package.json"],
|
|
65
|
+
"line_range": "1-50" // 可选:仅读取前50行
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 场景3: 智能代码重构 (容错空格差异)
|
|
70
|
+
{
|
|
71
|
+
"name": "apply_diffs",
|
|
72
|
+
"arguments": {
|
|
73
|
+
"path": "src/config.js",
|
|
74
|
+
"search_content": [
|
|
75
|
+
"const API_URL = 'localhost';",
|
|
76
|
+
"const PORT = 3000;"
|
|
77
|
+
],
|
|
78
|
+
"replace_content": [
|
|
79
|
+
"const API_URL = process.env.API_URL || 'localhost';",
|
|
80
|
+
"const PORT = process.env.PORT || 3000;"
|
|
81
|
+
],
|
|
82
|
+
"start_line": [5, 7],
|
|
83
|
+
"atomic": true, // 原子模式:全部成功或全部回滚
|
|
84
|
+
"trim": true // 智能模式:忽略空格差异
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 🏗️ 架构设计
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
src/
|
|
93
|
+
├── index.js # 服务启动入口
|
|
94
|
+
├── server.js # MCP 协议服务器
|
|
95
|
+
├── tools/
|
|
96
|
+
│ └── toolDefinitions.js # 工具定义和 JSON Schema
|
|
97
|
+
├── handlers/ # 核心处理器 (7个)
|
|
98
|
+
│ ├── applyDiff.js # 差异应用 (支持批量+原子+智能匹配)
|
|
99
|
+
│ ├── readFile.js # 文件读取器
|
|
100
|
+
│ ├── writeFile.js # 文件写入器
|
|
101
|
+
│ ├── listFiles.js # 目录扫描器
|
|
102
|
+
│ ├── insertContent.js # 内容插入器
|
|
103
|
+
│ ├── searchAndReplace.js # 模式替换器
|
|
104
|
+
│ └── setWorkspace.js # 工作区管理器
|
|
105
|
+
└── utils/
|
|
106
|
+
└── fileUtils.js # 通用文件操作库
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**架构优势**: 高度模块化、职责明确、易于维护、便于 AI 理解和调用
|
|
110
|
+
|
|
111
|
+
## 📊 质量保证
|
|
112
|
+
|
|
113
|
+
- ✅ **100% 测试覆盖率** - 7个完整的处理器测试套件
|
|
114
|
+
- ✅ **边界条件验证** - 异常输入和错误状态处理
|
|
115
|
+
- ✅ **批量操作验证** - 原子性和一致性保证
|
|
116
|
+
- ✅ **安全性测试** - 路径注入和权限验证
|
|
117
|
+
|
|
118
|
+
## 🎉 为什么选择 FileEditor MCP
|
|
119
|
+
|
|
120
|
+
1. **AI 原生设计** - 专门为 AI 编程助手的工作模式优化
|
|
121
|
+
2. **高性能批处理** - 减少 API 调用次数,提升处理效率
|
|
122
|
+
3. **智能容错** - 处理现实代码中的格式和空格差异
|
|
123
|
+
4. **企业级安全** - 严格的工作区隔离和权限控制
|
|
124
|
+
5. **完整测试覆盖** - 可靠性和稳定性保证
|
|
125
|
+
|
|
126
|
+
## 📄 开源协议
|
|
127
|
+
|
|
128
|
+
MIT License - 欢迎贡献和使用
|
package/package.json
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fileditor-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "MCP server for file operations",
|
|
5
|
-
"main": "src/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"fileditor-mcp": "src/index.js"
|
|
8
|
-
},
|
|
9
|
-
"type": "module",
|
|
10
|
-
"scripts": {
|
|
11
|
-
"start": "node src/index.js",
|
|
12
|
-
"dev": "node --watch src/index.js",
|
|
13
|
-
"test": "node test/runAllTests.js"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"mcp",
|
|
17
|
-
"file-operations",
|
|
18
|
-
"server"
|
|
19
|
-
],
|
|
20
|
-
"author": "lansya",
|
|
21
|
-
"license": "MIT",
|
|
22
|
-
"dependencies": {
|
|
23
|
-
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
24
|
-
"path-is-inside": "^1.0.2"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "fileditor-mcp",
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "MCP server for file operations",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"fileditor-mcp": "src/index.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "node src/index.js",
|
|
12
|
+
"dev": "node --watch src/index.js",
|
|
13
|
+
"test": "node test/runAllTests.js"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"file-operations",
|
|
18
|
+
"server"
|
|
19
|
+
],
|
|
20
|
+
"author": "lansya",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
24
|
+
"path-is-inside": "^1.0.2"
|
|
25
|
+
},
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=18"
|
|
28
|
+
},
|
|
29
|
+
"packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac"
|
|
30
|
+
}
|