Token导航 LogoToken导航TokenDH.com
Mcpfileserver logo
开发工具未说明官方级别未说明来源级核验

Mcpfileserver

MCP Server

MCP File Server 是一个安全的沙盒文件服务器,通过模型控制协议(MCP)提供对文件系统操作的控制访问,支持在可配置的工作目录中读取、写入、列出、创建和删除文件和目录,并提供Git操作。

工具数

22

提示词数

0

GitHub Stars

3

资源数

0
Python开发工具命令行工具

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

undici77

提供方

undici77

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

📂 MCP文件服务器

MCP文件服务器 是一个安全的沙盒文件服务器,通过 模型控制协议(MCP)。它支持在可配置的工作目录中读取、写入、列出、创建和删除文件和目录,同时执行严格的安全检查。Git操作也可用于工作目录中的存储库。

目录

- initialize - tools/list - tools/call

- 文件操作 - read_file - write_file - list_files - create_directory - delete_file - delete_directory - search_in_file - Git操作 - git_status - git_log - git_checkout - git_branch_create - git_branch_delete - git_branch_list - git_add - git_commit - git_push - git_pull - git_diff - git_clone - git_submodule_add - git_submodule_update - git_submodule_list

🎯 特性

  • 沙盒操作 –所有路径都限制在用户指定的工作目录中。
  • 路径遍历保护、文件大小限制和阻止的扩展名。
  • 通过Base64编码提供二进制支持,用于安全传输非文本数据。
  • 工作目录中存储库的Git操作(状态、日志、分支、提交/推送/拉取)。
  • 适用于stdin/stdout集成的简单行分隔JSON-RPC协议。
  • 即用型 LM 工作室 通过最小 mcp.json 配置。

📦 安装和快速启动

# Clone the repository (if not already done)
git clone https://github.com/undici77/MCPFileServer.git
cd MCPFileServer

# Ensure git is installed on your system (required for git operations)
git --version

# Run the startup script – it creates a virtual environment,
# installs dependencies, and starts the server.
./run.sh -d /path/to/working/directory

脚本将:

  • 验证Python 3 可用。
  • 创建一个 .venv 虚拟环境(如果缺失)。
  • 安装所需的软件包(aiofiles).
  • 开始 main.py 使用提供的工作目录。
📌 Git操作注意事项:git操作使用Python的 subprocess 调用系统 git CLI。Git必须在PATH中安装并可用。 📌 提示: 确保脚本具有执行权限: chmod +x run.sh

⚙️ 命令行选项

选项描述
-d, --directory通往 工作目录。如果省略,服务器将使用当前进程目录。目录必须存在并且可读/写。

🤝 与LM集成 工作室

在项目中为文件服务器添加条目 mcp.json:

{
  "mcpServers": {
    "file-server": {
      "command": "/absolute/path/to/MCPFileServer/run.sh",
      "args": [
        "-d",
        "/absolute/path/to/working/directory"
      ],
      "env": {
        "WORKING_DIR": "."
      }
    }
  }
}
  • 将路径替换为机器上的绝对位置。
  • 确保 run.sh 可执行(chmod +x run.sh)并且安装了依赖项。

📡 MCP API概述

所有通信如下 JSON-RPC 2.0 通过stdin/stdout。

initialize

由客户端发送以获取服务器功能。

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {}
}

服务器以协议版本、功能及其名称/版本进行响应。

tools/list

检索支持的工具的机器可读列表。

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list",
  "params": {}
}

响应包含一系列工具定义(名称、描述、输入模式)。

tools/call

调用特定工具。

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "",
    "arguments": { … }
  }
}
注: 工具名称的关键字是 **name**,不 tool。这与服务器实现相匹配。

🛠️ 可用工具

文件操作

工具说明
read_file读取文件的内容(文本或二进制)。
write_file将文本或Base64编码的二进制数据写入文件。
list_files列出具有可选筛选功能的文件和目录
create_directory创建一个新的子目录(根据需要创建父目录)。
delete_file删除单个文件。
delete_directory删除目录;可选择强制删除非空树。
search_in_file在文件中或目录中递归搜索字符串,返回上下文摘录。

read_file

读取工作目录中文件的内容。 参数

名称类型必填描述
pathstring目标文件的相对路径。
binaryboolean❌ (默认值: false)设置为 true 将文件读取为二进制文件;结果是Base64编码。

示例

{
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": {
      "path": "example.txt",
      "binary": false
    }
  }
}

write_file

将内容写入文件(如果需要,创建中间目录)。 参数

名称类型必填描述
pathstring目标文件的相对路径。
contentstring要写入的文本或Base64编码的二进制数据 binary=true.
binaryboolean❌ (默认值: false)设置为 true 对待 content 作为Base64编码的二进制文件。

示例

{
  "method": "tools/call",
  "params": {
    "name": "write_file",
    "arguments": {
      "path": "output.txt",
      "content": "Hello, world!",
      "binary": false
    }
  }
}

列表文件

列出工作目录下的文件和目录。 参数

名称类型必填描述
extensions字符串数组按文件扩展名过滤(例如。, [".py", ".txt"]).如果省略,则列出所有文件。
recursiveboolean❌ (默认值: true)在以下情况下递归搜索子目录 true.
show_empty_dirsboolean❌ (默认值: true)包括不包含匹配文件的目录。

示例

{
  "method": "tools/call",
  "params": {
    "name": "list_files",
    "arguments": {
      "extensions": [".py", ".txt"],
      "recursive": true,
      "show_empty_dirs": false
    }
  }
}

create_directory

创建一个新目录(包括任何缺失的父目录)。 参数

名称类型必填描述
pathstring要创建的目录的相对路径。

示例

{
  "method": "tools/call",
  "params": {
    "name": "create_directory",
    "arguments": { "path": "new_folder/subfolder" }
  }
}

删除文件

删除工作目录中的文件。 参数

名称类型必填描述
pathstring要删除的文件的相对路径。

示例

{
  "method": "tools/call",
  "params": {
    "name": "delete_file",
    "arguments": { "path": "temp.txt" }
  }
}

delete_directory

删除目录,可选择强制删除其内容。 参数

名称类型必填描述
pathstring要删除的目录的相对路径。
forceboolean❌ (默认值: false)何时 true,递归删除非空目录。

示例

{
  "method": "tools/call",
  "params": {
    "name": "delete_directory",
    "arguments": { "path": "old_folder", "force": true }
  }
}

search_in_file

在文件中搜索字符串,或在目录中的所有文件中递归搜索字符串,返回上下文摘录。 参数

名称类型必填描述
pathstring文件的相对路径 目录。
search_stringstring要搜索的文本。
context_lines整数❌ (默认值: 3)每场比赛前后要包含的行数。
case_sensitiveboolean❌ (默认值: false)在以下情况下执行区分大小写的搜索 true.
max_matches整数❌ (默认值: 50)每个文件返回的最大匹配项数。

示例

{
  "method": "tools/call",
  "params": {
    "name": "search_in_file",
    "arguments": {
      "path": "log.txt",
      "search_string": "ERROR",
      "context_lines": 2,
      "case_sensitive": false,
      "max_matches": 10
    }
  }
}

______________________________________________________________________

Git操作

默认情况下,所有git操作都在工作目录上工作。要在嵌套存储库上操作,请使用 repo_path 参数。

工具说明
git_status显示工作树状态。
git_log显示提交日志历史记录。
git_checkout切换到其他分支或提交。
git_branch_create创建一个新分支。
git_branch_delete删除分支。
git_branch_list列出存储库中的所有分支。
git_add将文件内容添加到暂存区。
git_commit将更改记录到存储库中。
git_push将更改推送到远程存储库。
git_pull从远程存储库获取并与之集成。
git_diff显示提交、提交和工作树之间的变化。
git_clone将存储库克隆到新目录中。
git_submodule_add向存储库添加子模块。
git_submodule_update更新现有子模块。
git_submodule_list列出存储库中的所有子模块。

注: 所有git工具都支持可选 repo_path 用于在子目录中的存储库上操作的参数(例如。, "repo_path": "vendor/my-repo").如果省略,操作将直接针对工作目录。

git_status

显示工作树状态。 参数

名称类型必填描述
shortboolean❌ (默认值: true)使用短格式输出。
repo_pathstring相对于工作目录的存储库路径(如果省略,则使用工作目录)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_status",
    "arguments": { 
      "short": true,
      "repo_path": "vendor/my-repo"
    }
  }
}

git_log

显示提交日志历史记录。 参数

名称类型必填描述
max_count整数❌ (默认值: 20)要显示的最大提交数。
onelineboolean❌ (默认值: true)显示紧凑的单行格式。
repo_pathstring相对于工作目录的存储库路径(如果省略,则使用工作目录)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_log",
    "arguments": { 
      "max_count": 10, 
      "oneline": true,
      "repo_path": "vendor/my-repo"
    }
  }
}

git_checkout

切换到其他分支或提交。 参数

名称类型必填描述
branchstring分支名称或提交哈希到签出。
repo_pathstring相对于工作目录的存储库路径(如果省略,则使用工作目录)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_checkout",
    "arguments": { 
      "branch": "main",
      "repo_path": "vendor/my-repo"
    }
  }
}

git_branch_create

创建一个新分支。 参数

名称类型必填描述
branchstring新分支的名称。
start_pointstring新分支的起点(分支或提交)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_branch_create",
    "arguments": { 
      "branch": "feature/new-ui",
      "start_point": "main"
    }
  }
}

git_branch_delete

删除分支。 参数

名称类型必填描述
branchstring要删除的分支的名称。
forceboolean❌ (默认值: false)即使分支有未合并的更改,也要强制删除。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_branch_delete",
    "arguments": { 
      "branch": "old-branch",
      "force": true
    }
  }
}

git_branch_list

列出存储库中的所有分支。 参数

名称类型必填描述
allboolean❌ (默认值: false)列出本地和远程分支。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_branch_list",
    "arguments": { "all": true }
  }
}

git_add

将文件内容添加到暂存区。 参数

名称类型必填描述
paths字符串数组要添加的文件路径列表。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_add",
    "arguments": { 
      "paths": ["src/main.py", "tests/test_main.py"] 
    }
  }
}

git_提交

将更改记录到存储库中。 参数

名称类型必填描述
messagestring提交消息。
allboolean❌ (默认值: false)自动暂存所有修改和删除的文件。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_commit",
    "arguments": { 
      "message": "Add new feature",
      "all": true
    }
  }
}

git_push

将更改推送到远程存储库。 参数

名称类型必填描述
remotestring❌ (默认值: origin)远程存储库名称。
branchstring要推送的分支(默认为当前分支)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_push",
    "arguments": { 
      "remote": "origin",
      "branch": "main"
    }
  }
}

git_pull

从远程存储库获取并与之集成。 参数

名称类型必填描述
remotestring❌ (默认值: origin)远程存储库名称。
branchstring要提取的分支(默认为当前分支)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_pull",
    "arguments": { 
      "remote": "origin",
      "branch": "main"
    }
  }
}

使用 git_diff

显示提交、提交和工作树之间的变化。 参数

名称类型必填描述
pathstring显示差异的特定文件或目录。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_diff",
    "arguments": {
      "path": "src/main.py"
    }
  }
}

git_clone

将存储库克隆到新目录中。 参数

名称类型必填描述
urlstring要克隆的存储库的URL(HTTPS或SSH)。
pathstring将克隆存储库的目录名称(相对于工作目录)。
branchstring克隆后要结账的具体分支。
recursiveboolean❌ (默认值: false)递归克隆子模块。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_clone",
    "arguments": {
      "url": "https://github.com/owner/repo.git",
      "path": "vendor/repo",
      "branch": "main"
    }
  }
}

git_submodule_add

向存储库添加子模块。 参数

名称类型必填描述
urlstring要添加为子模块的存储库的URL。
pathstring放置子模块的路径。
namestring子模块的名称(可选,默认为路径)。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_submodule_add",
    "arguments": {
      "url": "https://github.com/owner/lib.git",
      "path": "vendor/lib"
    }
  }
}

git_submodule_update

更新现有子模块。 参数

名称类型必填描述
initboolean❌ (默认值: true)更新前初始化子模块。
recursiveboolean❌ (默认值: true)递归更新子模块。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_submodule_update",
    "arguments": {
      "init": true,
      "recursive": true
    }
  }
}

git_submodule_list

列出存储库中的所有子模块。 参数

名称类型必填描述
summaryboolean❌ (默认值: true)显示子模块状态摘要。

示例

{
  "method": "tools/call",
  "params": {
    "name": "git_submodule_list",
    "arguments": { "summary": true }
  }
}

______________________________________________________________________

🔐 安全功能

  • 路径遍历保护 –根据工作目录解析所有路径;试图逃逸会导致错误。
  • 阻止扩展名和敏感文件名 –文件,如 .exe, .bat, passwd等等,都被拒绝了。
  • 文件大小限制 –读/写超过 100 MiB (MAX_FILE_SIZE)被拒绝。
  • 空字节和危险模式检查 –防止格式错误的输入攻击。
  • Git命令验证 -验证分支名称和路径以防止注入攻击。

______________________________________________________________________

*©2025 Undici77-保留所有权利。*

目录标签

目录标签

Python开发工具命令行工具文件服务器本地部署沙盒环境Git操作文件管理安全文件访问

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

22

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明nonelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP