Filesystem MCP Server 使用说明
项目简介
Filesystem MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为大型语言模型 (LLM) 应用提供安全的文件系统访问能力。它允许 LLM 通过标准化的 MCP 协议调用预定义的文件操作工具,从而实现与本地文件系统的交互,例如读取文件内容、写入文件、创建目录、移动文件等。为了保障安全性,服务器严格限制了 LLM 客户端可以访问的文件目录范围,仅允许操作在预先配置的允许目录列表下的文件和目录。
主要功能点
- 受限目录访问: 通过环境变量 'MCP_ALLOWED_DIRS' 配置允许访问的根目录,所有文件操作都限制在这些目录内,防止路径遍历攻击,保障安全性。
- 文件读写工具: 提供 'read_file', 'read_multiple_files', 'write_file', 'append_to_file', 'prepend_to_file' 等工具,支持读取单个或多个文件内容,创建、覆盖、追加、前置内容到文件。
- 目录管理工具: 提供 'create_directory', 'list_directory' 工具,支持创建新目录和列出目录内容。
- 文件管理工具: 提供 'move_file', 'get_file_info', 'search_files' 工具,支持移动/重命名文件和目录,获取文件元信息,以及根据模式递归搜索文件。
- 内容操作工具: 提供 'replace_in_file', 'insert_after_string', 'insert_before_string' 工具,支持在文件中替换字符串,在指定字符串前后插入内容。
- 安全机制: 具备完善的安全机制,包括路径合法性校验、权限验证和错误处理,确保操作都在允许范围内且安全可靠。
安装步骤
- 安装 Go 环境: 确保已安装 Go 语言环境。
- 获取仓库: 使用 'go get' 命令下载仓库到本地:
go get github.com/gomcpgo/filesys - 构建服务器: 进入项目根目录,使用 'go build' 命令编译生成可执行文件:
这将在 'bin' 目录下生成名为 'filesys' 的可执行文件。cd $GOPATH/github.com/gomcpgo/filesys # 假设您已正确设置 GOPATH go build -o bin/filesys cmd/main.go
服务器配置
MCP 客户端需要配置服务器的启动命令和环境变量才能连接到 Filesystem MCP Server。以下是一个 'claude_desktop_config.json' 的配置示例,展示了如何配置 Filesystem MCP Server:
{ "mcpServers": { "filesystem": { // 服务器名称,客户端配置中引用 "command": "/path/to/filesys/bin/filesys", // Filesystem MCP Server 的可执行文件路径,请替换为实际路径 "env": { "MCP_ALLOWED_DIRS": "/allowed/path1,/allowed/path2" // 允许访问的根目录,用逗号分隔,请替换为实际允许的目录 } } } }
配置参数说明:
- '"filesystem"': 服务器的名称,在客户端配置中用于标识和引用此服务器。可以自定义名称。
- '"command"': 必须修改为实际路径。指向编译生成的 'filesys' 可执行文件的绝对路径。例如,如果 'filesys' 可执行文件位于 '/home/user/go/bin/filesys',则 '"command"' 应设置为 '/home/user/go/bin/filesys'。
- '"env"': 环境变量配置。
- '"MCP_ALLOWED_DIRS"': 必须修改为实际允许的目录。 设置允许服务器访问的文件系统根目录。多个目录用逗号分隔。例如,'/home/user/documents,/data' 表示允许访问 '/home/user/documents' 和 '/data' 目录及其子目录。请务必根据实际需求配置允许访问的目录,以确保安全性。
重要安全提示: 'MCP_ALLOWED_DIRS' 配置至关重要。请仔细设置允许访问的目录,避免将敏感或不必要的目录添加到允许列表中,以最小化安全风险。
基本使用方法
配置完成后,MCP 客户端(例如 Claude Desktop)即可通过 MCP 协议与 Filesystem MCP Server 通信,并调用其提供的工具。以下是一些工具调用的示例 (假设服务器名称配置为 "filesystem"):
1. 读取文件内容 (read_file):
{ "serverName": "filesystem", "toolCall": { "name": "read_file", "arguments": { "path": "/allowed/path1/file.txt" // 要读取的文件路径,必须�� MCP_ALLOWED_DIRS 配置的目录下 } } }
2. 列出目录内容 (list_directory):
{ "serverName": "filesystem", "toolCall": { "name": "list_directory", "arguments": { "path": "/allowed/path2/subdir" // 要列出内容的目录路径,必须在 MCP_ALLOWED_DIRS 配置的目录下 } } }
3. 写入文件 (write_file):
{ "serverName": "filesystem", "toolCall": { "name": "write_file", "arguments": { "path": "/allowed/path1/new_file.txt", // 要写入的文件路径,必须在 MCP_ALLOWED_DIRS 配置的目录下 "content": "This is the content to write to the file." // 要写入的文件内容 } } }
注意: 所有文件路径都必须位于 'MCP_ALLOWED_DIRS' 环境变量配置的允许目录之下。服务器会严格检查路径,拒绝访问未授权目录的文件。
信息
分类
数据库与文件