@mcptoolshop/file-forge 0.2.0 → 0.2.1

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/README.zh.md ADDED
@@ -0,0 +1,242 @@
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.md">English</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
+ <p align="center"><img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/mcp-file-forge/readme.png" alt="MCP File Forge" width="400"></p>
6
+
7
+ <p align="center">
8
+ Secure file operations and project scaffolding for AI agents.
9
+ <br />
10
+ Part of <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
11
+ </p>
12
+
13
+ <p align="center">
14
+ <a href="https://www.npmjs.com/package/@mcptoolshop/file-forge"><img alt="npm version" src="https://img.shields.io/npm/v/@mcptoolshop/file-forge"></a>
15
+ <a href="https://github.com/mcp-tool-shop-org/mcp-file-forge/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/badge/license-MIT-blue"></a>
16
+ <a href="https://mcp-tool-shop-org.github.io/mcp-file-forge/"><img alt="Landing Page" src="https://img.shields.io/badge/Landing_Page-live-blue"></a>
17
+ </p>
18
+
19
+ ---
20
+
21
+ ## 概要介绍
22
+
23
+ MCP File Forge 是一个 [模型上下文协议](https://modelcontextprotocol.io) (MCP) 服务器,它为人工智能代理提供在本地文件系统中进行隔离且受策略控制的访问。它包含 **17 个工具**,分为五个类别:
24
+
25
+ | 类别。 | 工具。 | 描述。 |
26
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
27
+ | **Reading** | `read_file`, `read_directory`, `read_multiple` | 读取文件和目录列表。 |
28
+ | **Writing** | `write_file`, `create_directory`, `copy_file`, `move_file`, `delete_file` | 创建、修改、复制、移动和删除。 |
29
+ | **Search** | `glob_search`, `grep_search`, `find_by_content` | 通过文件名模式或内容查找文件。 |
30
+ | **Metadata** | `file_stat`, `file_exists`, `get_disk_usage`, `compare_files` | 检查尺寸、时间戳和是否存在。 |
31
+ | **Scaffolding** | `scaffold_project`, `list_templates` | 从模板创建项目,并支持变量替换。 |
32
+
33
+ 主要特性:
34
+
35
+ - **沙盒模式:** 运行仅限于明确允许的目录。
36
+ - **只读模式:** 通过修改一个环境变量来禁用所有写入工具。
37
+ - **符号链接安全:** 默认情况下禁用符号链接跟踪,以防止沙盒逃逸。
38
+ - **以Windows为优先:** 专为Windows路径和约定设计,可在所有平台上使用。
39
+ - **模板引擎:** 支持 `{{var}}` / `${var}` 变量替换,以及在路径级别进行 `__var__` 重命名。
40
+
41
+ ---
42
+
43
+ ## 安装
44
+
45
+ ```bash
46
+ npm install -g @mcptoolshop/file-forge
47
+ ```
48
+
49
+ 或者,可以直接使用 npx 命令运行。
50
+
51
+ ```bash
52
+ npx @mcptoolshop/file-forge
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Claude 桌面配置
58
+
59
+ 请将以下内容添加到您的 `claude_desktop_config.json` 文件中:
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "file-forge": {
65
+ "command": "npx",
66
+ "args": ["-y", "@mcptoolshop/file-forge"],
67
+ "env": {
68
+ "MCP_FILE_FORGE_ALLOWED_PATHS": "C:/Projects,C:/Users/you/Documents"
69
+ }
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ 如果您是全局安装的,可以直接指定可执行文件的路径:
76
+
77
+ ```json
78
+ {
79
+ "mcpServers": {
80
+ "file-forge": {
81
+ "command": "mcp-file-forge",
82
+ "env": {
83
+ "MCP_FILE_FORGE_ALLOWED_PATHS": "C:/Projects"
84
+ }
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 工具参考
93
+
94
+ ### 阅读
95
+
96
+ | 工具。 | 描述。 | 关键参数。 |
97
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
98
+ | `read_file` | 读取文件内容。 | `path`, `encoding?`, `start_line?`, `end_line?`, `max_size_kb?` |
99
+ | `read_directory` | 列出目录条目。 | `path`, `recursive?`, `max_depth?`, `include_hidden?`, `pattern?` |
100
+ | `read_multiple` | 批量读取多个文件。 | `paths`, `encoding?`, `fail_on_error?` |
101
+
102
+ ### 写作
103
+
104
+ | 工具。 | 描述。 | 关键参数。 |
105
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
106
+ | `write_file` | 写入或覆盖文件。 | `path`, `content`, `encoding?`, `create_dirs?`, `overwrite?`, `backup?` |
107
+ | `create_directory` | 创建目录。 | `path`, `recursive?` |
108
+ | `copy_file` | 复制文件或目录。 | `source`, `destination`, `overwrite?`, `recursive?` |
109
+ | `move_file` | 移动或重命名。 | `source`, `destination`, `overwrite?` |
110
+ | `delete_file` | 删除文件或目录。 | `path`, `recursive?`, `force?` |
111
+
112
+ ### 搜索
113
+
114
+ | 工具。 | 描述。 | 关键参数。 |
115
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
116
+ | `glob_search` | 通过通配符模式查找文件。 | `pattern`, `base_path?`, `max_results?`, `include_dirs?` |
117
+ | `grep_search` | 使用正则表达式搜索文件内容。 | `pattern`, `path?`, `glob?`, `case_sensitive?`, `max_results?`, `context_lines?` |
118
+ | `find_by_content` | 精确文本搜索(不支持正则表达式)。 | `text`, `path?`, `file_pattern?`, `max_results?` |
119
+
120
+ ### 元数据
121
+
122
+ | 工具。 | 描述。 | 关键参数。 |
123
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
124
+ | `file_stat` | 文件/目录统计信息。 | `path` |
125
+ | `file_exists` | 检查是否存在以及类型。 | `path`: 路径
126
+ `type?`: 类型 (可选,默认为 "any",可选择 "file" 或 "directory") |
127
+ | `get_disk_usage` | 目录大小明细。 | `path`, `max_depth?` |
128
+ | `compare_files` | 比较两条路径。 | `path1`, `path2` |
129
+
130
+ ### 脚手架
131
+
132
+ | 工具。 | 描述。 | 关键参数。 |
133
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
134
+ | `scaffold_project` | 从模板创建项目。 | `template`, `destination`, `variables?`, `overwrite?` |
135
+ | `list_templates` | 列出可用的模板。 | `category?` |
136
+
137
+ 完整的参数说明、示例和错误代码请参考 [HANDBOOK.md] 文件。
138
+
139
+ ---
140
+
141
+ ## 环境变量
142
+
143
+ | 变量。 | 描述。 | 默认设置。 |
144
+ | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 | 好的,请提供需要翻译的英文文本。 |
145
+ | `MCP_FILE_FORGE_ALLOWED_PATHS` | 允许访问的根目录列表,目录之间用逗号分隔。 | `.` (当前工作目录) |
146
+ | `MCP_FILE_FORGE_DENIED_PATHS` | 用逗号分隔的、用于排除的文件路径模式。 | `**/node_modules/**`, `**/.git/**` |
147
+ | `MCP_FILE_FORGE_READ_ONLY` | 禁用所有写入操作。 | `false` |
148
+ | `MCP_FILE_FORGE_MAX_FILE_SIZE` | 文件最大尺寸(以字节为单位)。 | `104857600` (100 MB) |
149
+ | `MCP_FILE_FORGE_MAX_DEPTH` | 最大递归深度 | `20` |
150
+ | `MCP_FILE_FORGE_FOLLOW_SYMLINKS` | 允许跟踪沙箱外部的符号链接 | `false` |
151
+ | `MCP_FILE_FORGE_TEMPLATE_PATHS` | 逗号分隔的模板目录 | `./templates` |
152
+ | `MCP_FILE_FORGE_LOG_LEVEL` | 日志详细程度(`error`、`warn`、`info`、`debug`) | `info` |
153
+ | `MCP_FILE_FORGE_LOG_FILE` | 日志文件路径(除了标准错误输出) | _none_ |
154
+
155
+ ---
156
+
157
+ ## 配置文件
158
+
159
+ 在您的工作目录或其上级目录中创建 `mcp-file-forge.json`(或 `.mcp-file-forge.json`)文件:
160
+
161
+ ```json
162
+ {
163
+ "sandbox": {
164
+ "allowed_paths": ["C:/Projects", "C:/Users/you/Documents"],
165
+ "denied_paths": ["**/secrets/**", "**/.env"],
166
+ "follow_symlinks": false,
167
+ "max_file_size": 52428800,
168
+ "max_depth": 20
169
+ },
170
+ "templates": {
171
+ "paths": ["./templates", "~/.mcp-file-forge/templates"]
172
+ },
173
+ "logging": {
174
+ "level": "info",
175
+ "file": "./logs/mcp-file-forge.log"
176
+ },
177
+ "read_only": false
178
+ }
179
+ ```
180
+
181
+ 配置优先级(优先级最高的生效):
182
+
183
+ 1. 环境变量
184
+ 2. 配置文件
185
+ 3. 内置默认值
186
+
187
+ ---
188
+
189
+ ## 安全性
190
+
191
+ MCP File Forge 强制执行多层保护,以防止 AI 代理超出其指定的工作空间:
192
+
193
+ - **路径沙箱**:每个路径都会解析为绝对路径,并在任何 I/O 操作之前,与 `allowed_paths` 列表进行检查。
194
+ - **禁止路径**:glob 模式,即使在允许的目录中也会被阻止(例如 `**/secrets/**`)。
195
+ - **符号链接保护**:默认情况下,不跟踪符号链接;如果符号链接的目标位于沙箱外部,则操作将被拒绝。
196
+ - **路径遍历检测**:包含 `..` 序列,用于尝试逃离沙箱的路径将被拒绝。
197
+ - **大小限制**:大于 `max_file_size` 的文件将被拒绝,以防止内存耗尽。
198
+ - **深度限制**:递归操作的深度限制为 `max_depth` 层级。
199
+ - **只读模式**:设置 `MCP_FILE_FORGE_READ_ONLY=true` 以禁用 `write_file`、`create_directory`、`copy_file`、`move_file`、`delete_file` 和 `scaffold_project`。
200
+ - **空字节拒绝**:包含 `\0` 的路径将被拒绝。
201
+ - **Windows 路径长度限制**:超过 32,767 个字符的路径将被拒绝。
202
+
203
+ ---
204
+
205
+ ## 文档
206
+
207
+ | 文档 | 描述 |
208
+ | ---------- | ------------- |
209
+ | [HANDBOOK.md](HANDBOOK.md) | 深入了解:安全模型、工具参考、模板、架构、常见问题解答 |
210
+ | [CHANGELOG.md](CHANGELOG.md) | 版本历史(采用 Changelog 格式) |
211
+ | [docs/PLANNING.md](docs/PLANNING.md) | 内部规划和研究笔记 |
212
+
213
+ ---
214
+
215
+ ## 开发
216
+
217
+ ```bash
218
+ # Install dependencies
219
+ npm install
220
+
221
+ # Build
222
+ npm run build
223
+
224
+ # Watch mode
225
+ npm run dev
226
+
227
+ # Run tests
228
+ npm test
229
+
230
+ # Lint
231
+ npm run lint
232
+ ```
233
+
234
+ ---
235
+
236
+ ## 许可证
237
+
238
+ [MIT](LICENSE)
239
+
240
+ ---
241
+
242
+ 由 <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> 构建。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcptoolshop/file-forge",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server for file operations and project scaffolding - Windows-first, secure, sandboxed",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -46,11 +46,13 @@
46
46
  ],
47
47
  "dependencies": {
48
48
  "@modelcontextprotocol/sdk": "^1.0.0",
49
+ "express": "^5.2.1",
49
50
  "glob": "^11.0.0",
50
51
  "minimatch": "^10.0.0",
51
52
  "zod": "^3.23.0"
52
53
  },
53
54
  "devDependencies": {
55
+ "@types/express": "^5.0.6",
54
56
  "@types/node": "^22.0.0",
55
57
  "eslint": "^9.0.0",
56
58
  "rimraf": "^6.0.0",