返回市场
快速文件系统-MCP

快速文件系统-MCP

作者:aj-geddes6 星标更新:2025-11-23

项目介绍

FastFS-MCP

<img src="https://img.shields.io/badge/版本-2.8.0-蓝色" alt="版本" /> <img src="https://img.shields.io/badge/许可证-MIT-绿色" alt="许可证" /> <img src="https://img.shields.io/badge/Docker-就绪-信息性" alt="Docker 就绪" />

一个用于文件系统操作、Git集成和交互式提示功能的高速MCP(模型上下文协议)服务器,旨在与Claude和原生AI工具无缝协作。

🚀 概览

FastFS-MCP使像Claude这样的AI助手能够与本地文件系统进行交互,管理Git仓库,并通过标准化的基于JSON的协议提供交互体验。无论您是在构建AI辅助的开发工作流,使用Claude创建内容,还是自动化文件管理任务,FastFS-MCP都提供了AI助手与本地环境之间的桥梁。

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph TD
    Claude[Claude AI助手] <-->|JSON协议| MCP[FastFS-MCP服务器]
    MCP <-->|文件操作| FS[本地文件系统]
    MCP <-->|Git操作| Git[Git仓库]
    MCP <-->|交互式提示| User[人类用户]
    
    subgraph "FastFS-MCP能力"
        FS
        Git
        User
    end

✨ 主要特性

  • 超快速文件系统操作:以极低延迟访问、修改和管理文件
  • 完整的Git集成:执行所有标准Git操作和高级仓库分析
  • 交互式提示:使Claude能够通过结构化的提示和表单与用户互动
  • GitHub认证:使用个人访问令牌或GitHub应用安全地进行GitHub认证
  • JSON协议:使用标准接口与Claude桌面、VSCode和其他原生AI工具通信

🛠️ 核心组件架构

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph TD
    Server[server.py] --> FastMCP[FastMCP类]
    Server --> FileOps[文件系统操作]
    Server --> GitTools[git_tools.py]
    Server --> PromptHelpers[prompt_helpers.py]
    
    FileOps --> Basic[基本命令]
    FileOps --> Advanced[高级操作]
    FileOps --> Text[文本处理]
    FileOps --> Archive[归档与压缩]
    
    GitTools --> BasicGit[基本Git]
    GitTools --> AdvancedGit[高级Git]
    GitTools --> GitAnalysis[仓库分析]
    GitTools --> GitAuth[GitHub认证]
    
    PromptHelpers --> Templates[提示模板]
    PromptHelpers --> Interactive[交互工具]
    
    GitAuth --> PAT[个人访问令牌]
    GitAuth --> GitHubApp[GitHub应用]
    GitHubApp --> DirectKey[直接密钥]
    GitHubApp --> KeyFromFile[从文件中获取密钥]

💻 安装与快速开始

Docker 快速开始

# 构建Docker镜像
docker build -t fastfs-mcp .

# 运行并挂载您的本地文件系统
docker run -i --rm \
  -v C:\\Users\\username:/mnt/workspace:rw \
  fastfs-mcp

在Unix/macOS上:替换为 -v $HOME:/mnt/workspace

使用GitHub认证

使用个人访问令牌

docker run -i --rm \
  -v C:\\Users\\username:/mnt/workspace:rw \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here \
  fastfs-mcp

使用GitHub应用(选项1:私钥作为环境变量)

docker run -i --rm \
  -v C:\\Users\\username:/mnt/workspace:rw \
  -e GITHUB_APP_ID=your_app_id \
  -e GGITHUB_APP_PRIVATE_KEY="$(cat path/to/private-key.pem)" \
  -e GITHUB_APP_INSTALLATION_ID=your_installation_id \
  fastfs-mcp

使用GitHub应用(选项2:从工作区中的文件获取私钥)

# 首先,将您的私钥复制到工作区
cp path/to/private-key.pem C:\\Users\\username\\github-app-key.pem

# 然后使用私钥路径运行
docker run -i --rm \
  -v C:\\Users\\username:/mnt/workspace:rw \
  -e GITHUB_APP_ID=your_app_id \
  -e GITHUB_APP_PRIVATE_KEY_PATH=/mnt/workspace/github-app-key.pem \
  -e GITHUB_APP_INSTALLATION_ID=your_installation_id \
  fastfs-mcp

🤖 Claude桌面配置

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "C:\\Users\\username:/mnt/workspace:rw",
        "fastfs-mcp"
      ]
    }
  }
}

使用GitHub认证

使用个人访问令牌

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", 
        "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
        "-v", "C:\\Users\\username:/mnt/workspace:rw",
        "fastfs-mcp"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

使用GitHub应用(私钥作为环境变量)

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", 
        "-e", "GITHUB_APP_ID",
        "-e", "GITHUB_APP_PRIVATE_KEY",
        "-e", "GITHUB_APP_INSTALLATION_ID",
        "-v", "C:\\Users\\username:/mnt/workspace:rw",
        "fastfs-mcp"
      ],
      "env": {
        "GITHUB_APP_ID": "your_app_id",
        "GITHUB_APP_PRIVATE_KEY": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----",
        "GITHUB_APP_INSTALLATION_ID": "your_installation_id"
      }
    }
  }
}

使用GitHub应用(从文件获取私钥)

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", 
        "-e", "GITHUB_APP_ID",
        "-e", "GITHUB_APP_PRIVATE_KEY_PATH",
        "-e", "GITHUB_APP_INSTALLATION_ID",
        "-v", "C:\\Users\\username:/mnt/workspace:rw",
        "fastfs-mcp"
      ],
      "env": {
        "GITHUB_APP_ID": "your_app_id",
        "GITHUB_APP_PRIVATE_KEY_PATH": "/mnt/workspace/github-app-key.pem",
        "GITHUB_APP_INSTALLATION_ID": "your_installation_id"
      }
    }
  }
}

📋 工具分类

FastFS-MCP提供了一整套工具,按逻辑类别组织:

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph TD
    MCP[FastFS-MCP] --> FS[文件系统操作]
    MCP --> Git[Git操作]
    MCP --> Prompts[交互式提示]
    MCP --> Processing[文本及文件处理]
    MCP --> Archive[归档与压缩]
    
    FS --> Basic[基本操作]
    FS --> Advanced[高级操作]
    
    Git --> BasicGit[基本命令]
    Git --> AdvancedGit[高级分析]
    Git --> GitHubAuth[GitHub认证]
    
    GitHubAuth --> PAT[个人访问令牌]
    GitHubAuth --> GitHubApp[GitHub应用]
    
    Prompts --> Templates[提示模板]
    Prompts --> Interactive[交互工具]
    
    Processing --> Text[文本操作]
    Processing --> Filters[过滤器与转换]
    
    Archive --> Tar[Tar操作]
    Archive --> Zip[Zip操作]
    Archive --> Compress[压缩工具]

🗂️ 文件系统操作

基本操作

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph LR
    ls[ls] --> list[列出文件和目录]
    cd[cd] --> change[更改当前目录]
    pwd[pwd] --> print[打印工作目录]
    read[read] --> display[显示文件内容]
    write[write] --> create[创建或修改文件]
    grep[grep] --> search[搜索文件内容]
    which[which] --> locate[定位可执行文件]
方法描述
ls列出目录中的文件
cd更改当前工作目录
pwd打印当前工作目录
read读取文件内容
write创建或覆盖文件内容
grep使用ripgrep快速搜索文件
which在PATH中定位可执行文件

高级操作

方法描述
tree显示目录结构
find按模式查找文件
cp复制文件或目录
mv移动或重命名文件
rm删除文件或目录
mkdir创建目录
stat显示文件元数据
chmod更改文件权限
du显示磁盘使用情况
df显示磁盘空间
touch创建新的空文件或更新时间戳

文本及文件处理

方法描述
sed流编辑器用于文本转换
gawk使用AWK进行文本处理
head显示文件的前几行
tail显示文件的最后几行
wc统计行数、单词数和字节数
cut从文件中选择列
sort对文本文件的行进行排序
uniq报告或过滤重复行
nl对文件中的行进行编号
split将文件分割成更小的部分
readlink显示符号链接的解析路径
realpath显示解析后的绝对路径

归档与压缩

方法描述
tar创建或提取tar归档
gzip压缩或解压文件
zip创建或提取zip归档

🌿 Git操作

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph TD
    Git[Git操作] --> Repo[仓库管理]
    Git --> Changes[变更管理]
    Git --> Branch[分支操作]
    Git --> Remote[远程操作]
    Git --> Analysis[仓库分析]
    Git --> Auth[GitHub认证]
    
    Repo --> init[初始化仓库]
    Repo --> clone[克隆仓库]
    Repo --> status[检查状态]
    
    Changes --> add[暂存变更]
    Changes --> commit[提交变更]
    Changes --> diff[查看差异]
    
    Branch --> checkout[切换分支]
    Branch --> branch[管理分支]
    Branch --> merge[合并分支]
    
    Remote --> push[推送变更]
    Remote --> pull[拉取变更]
    Remote --> fetch[获取更新]
    
    Analysis --> context[获取仓库上下文]
    Analysis --> validate[验证仓库]
    Analysis --> suggest[建议提交消息]
    Analysis --> audit[审核仓库历史]
    
    Auth --> PAT[个人访问令牌]
    Auth --> GitHubApp[GitHub应用]

基本Git操作

方法描述
clone克隆一个Git仓库
init初始化一个新的Git仓库
add将文件添加到暂存区域
commit提交变更到仓库
status显示工作树状态
push将变更推送到远程仓库
pull从远程仓库拉取变更
log显示提交日志
checkout切换分支或恢复文件
branch列出、创建或删除分支
merge合并分支的发展历史
show显示Git对象
diff显示提交之间或工作树的变化
remote管理远程仓库
stash存储工作目录中的变更
tag管理Git标签
config获取或设置仓库或全局选项
fetch从另一个仓库下载对象和引用
blame显示每个文件行的修订和作者
git_grep在跟踪文件中打印匹配模式的行
head显示当前HEAD提交信息

高级Git分析

方法描述
context获取全面的仓库上下文
repo_info获取详细的仓库信息
validate检查仓库是否存在常见问题
summarize_log生成提交日志统计
suggest_commit自动建议提交消息
audit_history审核仓库的安全问题

🤝 交互式提示

%%{ init: { "theme": "dark", "look": "handDrawn", "themeVariables": { "handDrawn": true } } }%%
graph TD
    Prompts[交互式提示] --> Templates[提示模板]
    Prompts --> Operations[提示操作]
    
    Templates --> FilePrompts[文件提示]
    Templates --> ContentPrompts[内容提示]
    Templates --> ProjectPrompts[项目提示]
    Templates --> CustomPrompts[自定义提示]
    
    Operations --> prompt[发送提示]
    Operations --> interactive_write[交互写入]
    Operations --> confirm_overwrite[确认覆盖]
    Operations --> select_file[选择文件]
    Operations --> get_file_content[获取文件内容]
    Operations --> init_project[初始化项目]
    
    FilePrompts --> confirm_file_overwrite[确认文件覆盖]
    FilePrompts --> confirm_directory_delete[确认目录删除]
    FilePrompts --> file_not_found_options[未找到文件选项]
    
    ContentPrompts --> enter_file_content[输入文件内容]
    ContentPrompts --> enter_search_pattern[输入搜索模式]
    
    ProjectPrompts --> project_initialization[项目初始化]
    ProjectPrompts --> coding_task[编码任务]
    
    CustomPrompts --> custom[自定义消息]

提示模板

模板描述
confirm_file_overwrite在覆盖现有文件之前询问用户确认
confirm_directory_delete在删除目录之前警告用户
file_not_found_options当文件未找到时提供选项
enter_file_content从用户处获取文件内容
enter_search_pattern询问用户搜索模式
project_initialization收集信息以初始化新项目
coding_task定义编码任务的参数
select_file_from_list让用户从列表中选择文件
custom创建完全自定义的提示消息

交互函数

函数描述
prompt向用户发送交互式提示
get_prompt_types列出可用的提示模板
interactive_write使用用户提供的内容写入文件
confirm_overwrite在覆盖文件之前询问确认
select_file让用户从文件列表中选择
get_file_content从用户处获取文件内容
init_project使用引导设置初始化项目

📝 协议用法

FastFS-MCP使用简单的基于JSON的协议与Claude和其他AI工具通信。

请求格式

{
  "method": "METHOD_NAME",
  "params": {
    "param1": "value1",
    "param2": "value2"
  }
}

响应格式

{
  "result": RESPONSE_DATA
}

示例

基本文件操作

// 请求
{
  "method": "ls",
  "params": { "path": "." }
}

// 响应
{
  "result": ["main.tf", "README.md"]
}

Git仓库上下文

// 请求
{
  "method": "context",
  "params": {}
}

// 响应
{
  "result": {
    "current_branch": "main",
    "repository_root": "/mnt/workspace/my-project",
    "is_clean": false,
    "head_commit": "a1b2c3d4e5f6...",
    "remotes": {
      "origin": "https://github.com/user/repo.git"
    },
    "recent_commits": [
      "a1b2c3d4 Update README.md",
      "b2c3d4e5 Fix bug in main function",
      "c3d4e5f6 Add new feature"
    ]
  }
}

交互式提示流程

// 请求
{
  "method": "prompt",
  "params": { 
    "prompt_type": "custom", 
    "message": "您想给文件起什么名字?" 
  }
}

// 响应到stdout(可见于用户)
{
  "type": "user_prompt",
  "prompt": "您想给文件起什么名字?"
}

// 用户响应(来自stdin)
{
  "type": "user_response",
  "response": "myfile.txt"
}

// 最终结果