File system MCP

File system MCP

这是一个文件系统 MCP 服务器,它允许 LLM 从您本地机器上指定的安全目录中读取和列出文件。

iBz-04

文件系统
访问服务器

README

文件系统 MCP

概述

filesys 是一个轻量级的 MCP 服务器,使用 Python 和 mcp 库构建,可以安全地暴露预配置目录中的文件内容和元数据。该项目利用 FastMCP 提供了一组端点,允许:

  • 列出指定目录中的所有文件。
  • 读取指定文件的内容和元数据。

新增: 现在它包含了与 Anthropic 的 Claude AI 的集成,允许用户通过自然语言对话与文件系统交互,使用 Claude Tools 安全地访问定义的 MCP 资源。

该项目通过验证路径和防止目录遍历攻击来确保安全的文件访问。

预览

  • 与 Claude 交互以列出和读取 safe_folder 中的文件:

<img src="https://res.cloudinary.com/diekemzs9/image/upload/v1743439706/screenshot_vxq1ym.jpg" alt="My Image" width="2000"/>

工作原理

核心功能分为几个组件:

  • 资源:src/resources.py 中,两个函数负责文件操作:

    • list_files(): 扫描基本目录(在 config/config.json 中配置)以返回可见文件列表。
    • read_file(filename): 读取指定文件的内容并返回其元数据(大小和上次修改时间戳),同时确保文件访问安全。
  • 服务器:src/server.py 中,初始化一个 FastMCP 服务器并注册两个资源端点:

    • files://list: 调用 list_files()
    • files://read/{filename}: 调用 read_file(filename)

服务器通过 run.py 启动,并利用 mcp 库来处理资源请求。

  • Claude Tool 客户端:claude_tool_client.py 中,定义了函数 (list_files_in_safe_folder, read_file_from_safe_folder) 来与运行中的 Filesys MCP 服务器交互。这些函数充当桥梁,将简单的函数调用转换为 MCP 请求并解析响应。它们被设计成可以被 Claude Tools 轻松使用。

  • Claude 交互脚本: interact_with_claude.py 脚本设置一个 Anthropic 客户端,基于 claude_tool_client.py 中的函数定义 Claude Tools,并运行一个命令行对话循环。用户可以向 Claude 提问,例如“有哪些文件可用?”或“读取 test.txt”,Claude 将使用提供的工具(安全地调用 MCP 服务器)来满足请求。

  • 测试: tests/test_resources.py 中的单元测试确保文件列表和读取功能按预期工作。

安装

  1. 克隆仓库:
    git clone https://github.com/iBz-04/Filesys.git
    
  2. 导航到项目目录:
    cd Filesys
    
  3. 创建虚拟环境 (可选但推荐):
    python -m venv venv
    source venv/bin/activate  # 在 Windows 上: venv\Scripts\activate
    
  4. 安装依赖: 确保您已安装 Python。 然后安装所需的库:
    pip install -r requirements.txt
    
  5. 配置 API 密钥:
    • 在项目的根目录中创建一个名为 .env.local 的文件。
    • 将您的 Anthropic API 密钥添加到此文件:
      ANTHROPIC_API_KEY=your_api_key_here
      
    • 注意: .gitignore 文件已配置为防止此文件被提交到 Git。

配置

文件服务器从 config/config.json 读取其配置。 默认情况下,服务器在以下指定的目录上运行:

{
  "directory": "./safe_folder"
}

您可以修改此文件以指向其他目录(如果需要)。

  • Anthropic API 密钥: Claude 交互脚本从 .env.local 文件读取 ANTHROPIC_API_KEY(参见安装步骤 5)。

用法

  1. 启动 MCP 服务器: 首先,确保 Filesys MCP 服务器在终端中运行:

    python run.py
    

    此命令初始化 FastMCP 服务器,并使 files://listfiles://read/{filename} 端点可用。

  2. 与 Claude 交互:单独的终端中(当步骤 1 中的服务器仍在运行时),运行 Claude 交互脚本:

    python interact_with_claude.py
    

    然后,您可以要求 Claude 与配置的 safe_folder 中的文件进行交互。 例子:

    • "你能看到哪些文件?"
    • "列出可用的文件。"
    • "你能为我读取 test.txt 吗?"
    • "告诉我名为 test.txt 的文件的内容"
  3. 直接 MCP 请求 (可选): 您还可以使用任何 MCP 兼容的客户端直接与服务器交互:

    • 列出文件: 请求 files://list
    • 读取文件: 请求 files://read/{filename}(将 {filename} 替换为实际文件名)。

测试

  • MCP 客户端函数: 您可以通过运行以下命令来测试与 MCP 服务器通信的函数:
    python claude_tool_client.py
    
    这将执行脚本末尾定义的 test_tool_functions。 确保 MCP 服务器 (python run.py) 预先运行。
  • 核心资源 (如果存在测试): 如果在 tests/ 目录中创建了单元测试(例如,tests/test_resources.py),则可以使用以下命令运行它们:
    python -m unittest discover tests
    

贡献

欢迎贡献! 要贡献:

  1. Fork 仓库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 提交您的更改,并附上详细的消息。
  4. 推送您的分支并打开一个 pull request。

补充说明

  • 根据需要自定义配置 (config/config.json, .env.local)。
  • 重要: Claude 交互脚本 (interact_with_claude.py) 需要 Filesys MCP 服务器 (run.py) 在单独的进程中运行。
  • 该项目实现了基本的安全措施,以将文件访问限制为配置的目录并防止目录遍历。
  • 随着新功能的添加或更改,更新此文档。

推荐服务器

Excel MCP Server

Excel MCP Server

一个模型上下文协议服务器,使 AI 助手能够读取和写入 Microsoft Excel 文件,支持诸如 xlsx、xlsm、xltx 和 xltm 等格式。

精选
本地
Go
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
Crawlab MCP Server

Crawlab MCP Server

官方
Python
Edit File Lines MCP Server

Edit File Lines MCP Server

一个基于 TypeScript 的 MCP 服务器,它提供工具,用于对允许目录内的文本文件进行精确的、基于行的编辑。

本地
TypeScript
mcp-server-code-assist

mcp-server-code-assist

一个模型上下文协议服务器,它通过大型语言模型提供代码修改和生成工具,允许用户使用结构化的 XML 指令来创建、修改、重写和删除文件。

本地
Python
Terminal Controller for MCP

Terminal Controller for MCP

一个 MCP 服务器,它通过一个标准化的接口,使 LLM 能够安全地执行终端命令、进行目录导航和进行文件系统操作。

本地
Python
Obsidian MCP REST Server

Obsidian MCP REST Server

为人工智能助手提供一个标准化的接口,通过本地 REST API 与 Obsidian vault 进行交互,从而实现笔记的读取、写入、搜索和管理。

本地
TypeScript
MCP Tasks Organizer

MCP Tasks Organizer

一个 MCP 服务器,可以将 Cursor agent 计划转换为结构化的 Markdown 任务列表,并将其组织在您的存储库中,帮助您将 AI 生成的计划和建议作为可执行的规范进行跟踪。

本地
Python
MCP PDF Forms

MCP PDF Forms

一个服务器,通过 MCP 的 API 提供 PDF 表单操作工具,允许用户在目录中查找 PDF 文件、提取表单字段信息,并在文档中可视化表单字段。

本地
Python
Google Drive MCP Server

Google Drive MCP Server

启用与 Google Drive 的集成,用于列出、读取和搜索文件,支持各种文件类型,并为 Google Workspace 文件提供自动导出功能。

本地
JavaScript