使用说明
最小文件系统MCP服务器
fs_server.py 是一个简单但功能强大的服务器,它将文件系统操作(创建、读取、写入、编辑、移动、复制、删除)作为 MCP(基于消息的通信协议) 服务。它的设计非常强调通过工作区沙盒的安全性,确保所有操作都限制在指定的根目录中。
此服务器还包括一个直接HTTP端点,用于从工作区提供静态文件,这为需要直接文件访问的场景(例如,用于提供web资产或查看生成的文件)提供了便利。
特性
- 工作区沙盒:所有文件系统操作都严格限制在可配置的根目录中,防止未经授权访问系统的其他部分。
- 交互式工作区选择:启动时,服务器智能地确定工作区根:
- 优先考虑
FS_WORKSPACE环境变量。 - 尝试使用图形文件夹选择器(Tkinter)进行用户友好的选择。
- 回到控制台提示,进行基于文本的交互式选择。
- 如果没有交互式选择其他选项,则使用当前工作目录作为默认目录。
- 优先考虑
- 全面的文件系统工具:通过MCP接口显示一组丰富的操作:
workspace_root():返回当前工作区根的绝对路径。make_dir(path, parents, exist_ok):创建新目录。list_dir(path, recursive, pattern):列出目录的内容,包括递归和glob模式的选项。read_text(path, encoding, max_bytes):读取文本文件的内容,有截断限制。write_text(path, content, overwrite, create_dirs, encoding):将内容写入文本文件,并提供覆盖和创建父目录的选项。append_text(path, content, create_dirs, encoding):将内容附加到现有文件(如果缺少,则创建它)。replace_text(path, pattern, replacement, regex, count, encoding):在文本文件中执行搜索和替换,支持文字和正则表达式模式。move_path(src, dest, overwrite):移动或重命名文件或目录。copy_path(src, dest, overwrite):复制文件或目录。delete_path(path, recursive):删除文件或整个目录(如果recursive是真的)。read_json(path):读取并解析JSON文件。write_json(path, data, overwrite, create_dirs, indent):将Python字典作为JSON写入文件。
- 直接文件访问HTTP端点:工作区中的文件可以直接通过以下方式提供
http://0.0.0.0:8765/files/{path:path},允许轻松访问静态资产或生成的内容。 - 基于现代Python Web堆栈构建:利用
Starlette对于web应用程序和Uvicorn作为ASGI服务器,确保高性能和健壮性。
设置和安装
-
先决条件:
- Python 3.7+
- (GUI选择可选)
tkinter(通常包含在Python中或可通过以下方式安装sudo apt-get install python3-tk在Debian/Ubuntu上)。
-
克隆存储库(如果适用):
git clone <Jalalkhan912/File_MCP_Server> cd <File_MCP_Server> -
再进行:
pip install fastmcp starlette uvicorn
用法
-
运行服务器: 直接执行Python脚本。
python fs_server.py -
工作空间选择: 运行后,如果出现以下情况,服务器将提示您选择工作区目录
FS_WORKSPACE未设置环境变量。- 环境变量:设置
FS_WORKSPACE在运行脚本之前,请将其添加到所需的根路径:export FS_WORKSPACE="/path/to/your/workspace" python fs_server.py - GUI选择:如果
tkinter如果可用,将出现一个文件对话框,让您选择一个目录。 - 控制台提示:如果无法或取消GUI选择,您可以在控制台中键入路径。
- 环境变量:设置
-
访问服务器: 启动后,服务器将监听
http://0.0.0.0:8765.-
健康检查: 您可以在以下网址检查服务器的运行状况
http://0.0.0.0:8765/healthz。它应该返回“ok”。 -
MCP工具: MCP工具可通过SSE(服务器发送事件)端点访问,通常由MCP客户端使用。基本SSE端点为
http://0.0.0.0:8765/sse. (注意:与MCP工具的交互需要MCP客户端库或兼容系统。) -
直接文件访问: 要直接从所选工作区访问文件,请使用
/files/终点。例如,如果您的工作区是/home/user/my_project你有一个文件/home/user/my_project/data/report.txt,您可以在以下网址访问它:http://0.0.0.0:8765/files/data/report.txt
-
开发/高级使用
您还可以使用以下命令运行服务器 uvicorn 直接用于更多控制,包括用于开发的热重新加载:
uvicorn --app-dir . fs_server:app --host 0.0.0.0 --port 8765 --reload --log-level debug
(注意:如果您从重命名文件 fs_server_n8n.py 向 fs_server.py,相应地调整命令。)
安全考虑
主要的安全机制是工作区沙盒。至关重要的是 FS_WORKSPACE 仔细选择目录,因为通过MCP工具执行的任何操作都将仅限于此目录。与此服务器交互的用户应该明白,它的功能仅限于指定的工作区。
