项目简介

这是一个基于 Model Context Protocol (MCP) 实现的应用后端服务,专注于提供标准化的文件和文件夹操作功能。它可以被支持 MCP 协议的 LLM 客户端(如某些 IDE 插件)调用,让 LLM 能够执行文件读写、文件夹管理等任务,从而更深入地与本地或远程文件系统交互。

主要功能点

该服务器提供以下文件系统操作工具:

  • 文件操作工具:
    • 读取文件内容 ('file.read')
    • 创建文件并写入内容 ('file.create')
    • 向现有文件追加内容 ('file.append')
    • 清空文件内容 ('file.erase')
    • 移动文件 ('file.move')
    • 删除文件 ('file.delete')
  • 文件夹操作工具:
    • 创建文件夹 ('folder.create')
    • 列出文件夹内容 ('folder.list'),支持递归和按模式过滤
    • 读取文件夹内所有文件内容 ('folder.read_all'),支持递归和按模式过滤(注意:此操作可能非常耗时且占用资源)
    • 移动文件夹 ('folder.move')
    • 删除文件夹 ('folder.delete'),支持递归删除
    • 清空文件夹 ('folder.empty')
  • 批量操作工具:
    • 批量调用同一个工具多次 ('call_tool_bulk')
    • 批量调用多个不同的工具 ('call_tools_bulk')

服务器支持通过环境变量禁用特定的文件或文件夹工具,以增强安全性。

安装步骤

该服务器是 Python 项目,推荐使用 'uv' 工具进行安装和运行。

  1. 克隆仓库: 打开终端,克隆该项目的 GitHub 仓库。
    git clone https://github.com/strawgate/filesystem-operations-mcp.git
    cd filesystem-operations-mcp
  2. 创建虚拟环境并安装依赖: 使用 'uv' 创建一个独立的 Python 环境并安装所需的库。
    uv venv
    source .venv/bin/activate
    uv sync
  3. (可选)安装开发依赖:如果您需要进行开发或运行测试,请安装开发依赖。
    uv sync --extra dev

安装完成后,您就可以配置您的 MCP 客户端来连接此服务器了。

服务器配置

要让您的 MCP 客户端(如支持 MCP 的 IDE 插件)使用此服务器,您需要在客户端的 MCP 配置中添加一项服务器定义。以下是一个配置示例及其说明:

{
    "mcp": {
        "servers": {
            "Filesystem Operations": { // 服务器的显示名称,您可以自定义一个易于识别的名字
                "command": "uvx",      // 启动服务器的命令。uvx 是一个方便的工具,可以直接运行 Git 仓库中的 Python 项目。
                "args": [              // 传递给 command 命令的参数列表。
                    "https://github.com/strawgate/filesystem-operations-mcp.git" // 告诉 uvx 运行哪个 Git 仓库作为 MCP 服务器。
                ]
                // 您可能还需要根据客户端的配置,添加如 "alwaysAllow": [...] 等字段来设置默认允许调用的工具列表。
            }
        }
    }
}

请将此配置添加到您的 MCP 客户端的相应设置文件中。确切的配置文件位置和格式请参考您的 MCP 客户端的文档。

例如,在 VS Code 中,您可以在用户设置('settings.json')中找到 'mcp.servers' 部分进行添加。

基本使用方法

配置完成后,您的 MCP 客户端(LLM 应用)就能够发现并调用此服务器提供的工具了。当 LLM 需要执行文件读取或文件夹创建等任务时,它可以向该 MCP 服务器发送相应的 JSON-RPC 请求,调用如 'file_read'、'folder_create' 等工具,并提供必要的参数(如文件路径、内容等)。服务器将执行请求的操作并将结果返回给 LLM 客户端。

例如,一个 LLM 可能会通过调用 'file_read' 工具来获取某个文件的内容,或者调用 'folder_list' 来查看某个目录下的文件列表。批量工具 ('call_tool_bulk', 'call_tools_bulk') 允许 LLM 在一个请求中执行多个操作,提高效率。具体的工具名称和参数请参考服务器的能力声明(由 MCP 协议规定)。

信息

分类

数据库与文件