MCP Filesystem Server

MCP Filesystem Server

一个安全的模型上下文协议服务器,它在预定义的目录中提供受控的文件系统访问,使 AI 模型能够执行文件和目录操作,并具有严格的路径验证。

Category
访问服务器

README

<h1 align="center">
  <br>
  <img src="https://raw.githubusercontent.com/gabrielmaialva33/mcp-filesystem/master/.github/assets/mcp.png" alt="MCP Filesystem" width="200">
  <br>
  安全的 <a href="https://modelcontextprotocol.io/introduction">MCP</a> 文件系统服务器
  <br>
</h1>

<p align="center">
  <strong>一个安全的模型上下文协议 (MCP) 服务器,提供对预定义目录内的文件系统访问</strong>
</p>

<p align="center">
  <img src="https://img.shields.io/github/license/gabrielmaialva33/mcp-filesystem?color=00b8d3?style=flat&logo=appveyor" alt="License" />
  <img src="https://img.shields.io/github/languages/top/gabrielmaialva33/mcp-filesystem?style=flat&logo=appveyor" alt="GitHub top language" >
  <img src="https://img.shields.io/github/languages/count/gabrielmaialva33/mcp-filesystem?style=flat&logo=appveyor" alt="GitHub language count" >
  <img src="https://img.shields.io/github/repo-size/gabrielmaialva33/mcp-filesystem?style=flat&logo=appveyor" alt="Repository size" >
  <a href="https://github.com/gabrielmaialva33/mcp-filesystem/commits/master">
    <img src="https://img.shields.io/github/last-commit/gabrielmaialva33/mcp-filesystem?style=flat&logo=appveyor" alt="GitHub last commit" >
    <img src="https://img.shields.io/badge/made%20by-Maia-15c3d6?style=flat&logo=appveyor" alt="Maia" >  
  </a>
</p>

<br>

<p align="center">
  <a href="#bookmark-about">关于</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
  <a href="#computer-technologies">技术</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
  <a href="#wrench-tools">工具</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
  <a href="#package-installation">安装</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
  <a href="#gear-usage">使用</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
  <a href="#memo-license">许可证</a>
</p>

<br>

## :bookmark: 关于

**MCP 文件系统服务器** 通过模型上下文协议为 AI 模型提供安全的文件系统访问。它强制执行严格的路径验证,并且只允许访问预定义的目录。

<br>

## :computer: 技术

- **[TypeScript](https://www.typescriptlang.org/)**
- **[Node.js](https://nodejs.org/)**
- **[MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk)**
- **[Zod](https://zod.dev/)**
- **[Docker](https://www.docker.com/)**
- **[pnpm](https://pnpm.io/)**

<br>

## :wrench: 工具

- **[Visual Studio Code](https://code.visualstudio.com/)**
- **[ESLint](https://eslint.org/)**
- **[Prettier](https://prettier.io/)**
- **[Vitest](https://vitest.dev/)**
- **[Docker Compose](https://docs.docker.com/compose/)**

<br>

## :package: 安装

### :heavy_check_mark: **先决条件**

必须安装以下软件:

- **[Node.js](https://nodejs.org/en/)** (>=18.0.0)
- **[Git](https://git-scm.com/)**
- **[pnpm](https://pnpm.io/)** (>=8.0.0)
- **[Docker](https://www.docker.com/)** (可选)
- **[Docker Compose](https://docs.docker.com/compose/)** (可选)

<br>

### :arrow_down: **克隆仓库**

```sh
  $ git clone https://github.com/gabrielmaialva33/mcp-filesystem.git
  $ cd mcp-filesystem

<br>

:arrow_forward: 运行应用程序

本地开发

  # 安装依赖
  $ pnpm install

  # 构建应用程序
  $ pnpm build

  # 运行服务器 (指定允许访问的目录)
  $ pnpm start /path/to/allowed/directory

  # 或使用配置文件
  $ pnpm start --config=config.json

使用 NPM 包

  # 全局安装
  $ npm install -g @gabrielmaialva33/mcp-filesystem

  # 运行服务器
  $ mcp-filesystem /path/to/allowed/directory

  # 或使用 npx (无需安装)
  $ npx @gabrielmaialva33/mcp-filesystem /path/to/allowed/directory

  # 创建一个示例配置文件
  $ npx @gabrielmaialva33/mcp-filesystem --create-config=config.json

使用 Docker

  # 构建 Docker 镜像
  $ docker build -t gabrielmaialva33/mcp-filesystem .

  # 使用 Docker 运行
  $ docker run -i --rm -v /path/to/data:/data:ro gabrielmaialva33/mcp-filesystem /data

  # 使用配置文件
  $ docker run -i --rm -v /path/to/config.json:/app/config.json -v /path/to/data:/data gabrielmaialva33/mcp-filesystem --config=/app/config.json

使用 Docker Compose

  # 创建一个数据目录
  $ mkdir -p data

  # 启动服务器
  $ docker-compose up -d

<br>

:gear: 使用

与 Claude Desktop 一起使用

可以将 Claude Desktop 配置为使用此 MCP 服务器进行文件系统访问。将以下内容添加到您的 claude_desktop_config.json

使用本地安装 (推荐)

{
  "mcpServers": {
    "filesystem": {
      "command": "mcp-filesystem",
      "args": [
        "/Users/gabrielmaia/Documents",
        "/Users/gabrielmaia/Desktop",
        "/Users/gabrielmaia/Downloads"
      ]
    }
  }
}

确保使可执行文件全局可用:

# 使二进制文件可执行
chmod +x /Users/gabrielmaia/.nvm/versions/node/v22.14.0/bin/mcp-filesystem

使用 NPX

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@gabrielmaialva33/mcp-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

使用 Docker

注意:使用 Docker 时,默认情况下所有目录都必须挂载到 /projects。添加 ro 标志将使目录只读。

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount",
        "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount",
        "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount",
        "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "gabrielmaialva33/mcp-filesystem",
        "/projects"
      ]
    }
  }
}

可用工具

MCP 文件系统服务器提供以下工具:

文件系统操作

  • read_file: 读取文件内容
  • read_multiple_files: 一次读取多个文件
  • write_file: 创建或覆盖文件
  • edit_file: 通过差异预览进行精确编辑
  • create_directory: 递归创建目录
  • list_directory: 列出目录内容
  • directory_tree: 获取递归树视图
  • move_file: 移动或重命名文件
  • search_files: 查找匹配模式的文件
  • get_file_info: 获取文件元数据
  • list_allowed_directories: 查看可访问的目录

系统和网络操作

  • get_metrics: 查看服务器性能指标 (v0.3.0+)
  • execute_command: 安全地执行系统命令 (v0.3.1+)
  • curl_request: 向外部 API 执行 HTTP 请求 (将在 v1.2.0 中推出)

使用 curl_request 工具 (将在 v1.2.0 中推出)

curl_request 工具将允许您向外部 API 发出 HTTP 请求:

// 示例:使用身份验证发出 GET 请求
curl_request({
  url: 'https://api.example.com/data',
  method: 'GET',
  headers: {
    Authorization: 'Bearer your_token_here',
  },
})

// 示例:使用 JSON 数据发出 POST 请求
curl_request({
  url: 'https://api.example.com/create',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  data: '{"name":"Example","value":123}',
})

有关更详细的示例,请参见 docs/curl-tool-examples.md 文件。

<br>

:sparkles: 功能

核心功能

  • 安全访问: 严格的路径验证可防止未经授权的访问
  • 文件操作: 读取、写入、编辑和移动文件
  • 目录操作: 创建、列出、获取树视图和搜索目录
  • 元数据访问: 查看文件和目录信息
  • 命令执行: 安全地执行具有严格验证的系统命令
  • Docker 支持: 使用 Docker 和 Docker Compose 轻松部署

v0.3.0 中的新功能

  • 结构化日志记录: 具有不同级别(调试、信息、警告、错误)的详细日志记录
  • 性能指标: 跟踪操作计数、错误和执行时间
  • 配置管理: 支持 JSON 配置文件
  • 路径缓存: 提高了对频繁访问路径的性能
  • 改进的错误处理: 具有结构化信息的专用错误类型
  • 文件大小验证: 防止加载过大的文件
  • CLI 改进: 帮助命令、版本信息和配置生成

配置选项

您可以使用以下命令创建配置文件:

$ mcp-filesystem --create-config=config.json

示例配置:

{
  "allowedDirectories": ["/path/to/allowed/dir1", "/path/to/allowed/dir2"],
  "logLevel": "info",
  "logFile": "/path/to/logs/mcp-filesystem.log",
  "serverName": "secure-filesystem-server",
  "serverVersion": "0.3.0",
  "cache": {
    "enabled": true,
    "maxSize": 1000,
    "ttlMs": 60000
  },
  "metrics": {
    "enabled": true,
    "reportIntervalMs": 60000
  },
  "security": {
    "maxFileSize": 10485760,
    "allowSymlinks": true,
    "validateRealPath": true
  }
}

<br>

:writing_hand: 作者

Gabriel Maia
Gabriel Maia

许可证

MIT 许可证

<p align="center"><img src="https://raw.githubusercontent.com/gabrielmaialva33/gabrielmaialva33/master/assets/gray0_ctp_on_line.svg?sanitize=true" /></p> <p align="center">© 2024-present <a href="https://github.com/gabrielmaialva33/" target="_blank">Maia</a> </p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选