使用说明
项目简介
本项目 'mcp-filesystem-server' 是一个使用 Go 语言实现的 MCP (Model Context Protocol) 服务器,旨在为 LLM (大型语言模型) 应用提供安全、可控的文件系统访问能力。它允许 LLM 客户端通过标准化的 MCP 协议,读取服务器端允许目录下的文件信息、文件内容,以及进行文件系统的相关操作。
主要功能点
- 安全的文件访问控制:只允许访问服务器预先配置的目录,防止 LLM 客户端访问未授权的文件系统路径,增强安全性。
- 文件信息查询:获取文件或目录的详细信息,如大小、创建时间、修改时间、权限等。
- 目录浏览:列出目录下的文件和子目录,方便 LLM 理解文件系统结构。
- 目录树形展示:以 JSON 格式返回目录的树形结构,方便程序化处理。
- 文件内容读取:读取文本文件、图片文件等内容,并根据文件类型返回 TextContent、ImageContent 或 BlobResourceContent 等不同类型的 MCP 内容。对于大文件,提供资源 URI 引用,避免一次性加载过多内容。
- 文件搜索:在指定目录下根据文件名模式搜索文件。
- 目录创建:创建新的目录。
- 文件移动:移动文件到新的位置。
- 文件写入:创建、追加或覆盖文件内容。
- 资源注册:将允许目录下的文件注册为 MCP 资源,允许客户端通过资源 URI 访问文件。
- 多种内容格式支持:根据文件类型,支持返回文本、图片、二进制等多种格式的内容,并自动进行 Base64 编码(在大小限制内)。
安装步骤
- 安装 Go 环境:确保你的机器上已安装 Go 语言环境 (建议 Go 1.16 或更高版本)。
- 安装服务器:打开终端,运行以下命令安装 'mcp-filesystem-server':
安装成功后,'mcp-filesystem-server' 可执行文件通常会位于 '$GOPATH/bin' 目录下,请确保该目录已添加到系统的 'PATH' 环境变量中。go install github.com/qiangmzsx/mcp-filesystem-server
服务器配置
MCP 客户端需要配置 'mcpServers' 字段来连接本文件系统服务器。以下是一个 'claude_desktop_config.json' 的配置示例,展示了如何配置名为 "filesystem" 的服务器:
{ "mcpServers": { "filesystem": { "command": "mcp-filesystem-server", "args": [ "/Users/username/Desktop", // 允许访问的根目录1:例如用户桌面 "/path/to/other/allowed/dir" // 允许访问的根目录2:例如其他允许的目录 ] } } }
配置说明:
- '"filesystem"': 服务器名称,客户端使用此名称引用该服务器。可以自定义,例如 "my_filesystem_server"。
- '"command": "mcp-filesystem-server"': 启动 MCP 服务器的命令。假设 'mcp-filesystem-server' 已正确安装并添加到 PATH 环境变量。
- '"args": [...]"': 传递给 'mcp-filesystem-server' 命令的参数,用于指定允许 LLM 客户端访问的根目录。可以配置一个或多个根目录。请将示例中的目录路径替换为你希望允许 LLM 访问的实际目录路径。 例如,你可以设置为你的文档目录、下载目录等。
启动服务器: 服务器无需手动启动,MCP 客户端(如 Claude Desktop)在需要使用文件系统功能时,会自动根据配置启动 'mcp-filesystem-server' 进程。
基本使用方法
配置完成后,在支持 MCP 协议的 LLM 客户端中,你就可以通过工具调用 (Tools Call) 的方式使用文件系统服务器提供的功能。
常用工具 (Tools) 及其功能:
- 'get_file_info': 获取文件或目录的详细信息。
- 参数 'path': 要查询的文件或目录路径。
- 'create_directory': 创建新的目录。
- 参数 'path': 要创建的目录路径。
- 'list_allowed_directories': 列出服务器允许访问的所有根目录 (无需参数)。
- 'list_directory': 列出指定目录下的文件和子目录。
- 参数 'path': 要列出的目录路径。
- 'tree_directory': 以 JSON 格式返回指定目录的树形结构。
- 参数 'path': 要展示树形结构的根目录路径。
- 参数 'pretty': 是否格式化 JSON 输出 (布尔值,可选)。
- 参数 'max_depth': 最大目录深度 (整数,可选,默认 3)。
- 'move_file': 移动文件或目录。
- 参数 'source': 源文件或目录路径。
- 参数 'destination': 目标路径。
- 'read_file': 读取文件内容。
- 参数 'path': 要读取的文件路径。
- 'search_files': 在指定目录下搜索文件。
- 参数 'path': 搜索的根目录路径。
- 参数 'pattern': 文件名搜索模式 (支持简单的通配符)。
- 'write_file': 写入内容到文件。
- 参数 'path': 要写入的文件路径。
- 参数 'content': 要写入的文件内容。
- 参数 'mode': 写入模式,可选 "create" (创建新文件), "append" (追加内容), "overwrite" (覆盖文件)。
示例工具调用 (JSON-RPC 请求,客户端自动处理):
以下是一些工具调用的示例,展示了客户端如何向 MCP 服务器发送请求 (实际使用中,客户端会根据用户指令自动构建和发送这些请求):
- 获取文件信息:
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_file_info","arguments":{"path":"/Users/username/Desktop/example.txt"}},"id":1} - 列出桌面目录:
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"list_directory","arguments":{"path":"/Users/username/Desktop"}},"id":2} - 读取文件内容:
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"read_file","arguments":{"path":"/Users/username/Desktop/example.txt"}},"id":3}
客户端会解析服务器返回的 JSON-RPC 响应,并将结果以自然语言或其他合适的形式呈现给用户。
安全性提示: 请务必谨慎配置允许访问的根目录,避免将整个文件系统根目录或敏感目录暴露给 LLM 客户端,以确保数据安全。
信息
分类
数据库与文件