mcpField
M
MCP Filesystem Server

MCP Filesystem Server

本地服务
github.com/mark3labs文件与存储69348 周前更新

关于 MCP Filesystem Server

MCP Filesystem Server 是一个用 Go 编写的 MCP 服务,让 MCP 客户端访问本地文件系统。服务只能访问启动时指定的目录,并对路径做校验以防止目录穿越。适合需要让 AI 读写本地文件的用户。

主要功能

  1. 01读取、写入、复制、移动和删除文件
  2. 02批量读取多个文件
  3. 03按文本或正则替换文件内容
  4. 04目录树查看与文件搜索
  5. 05限定允许访问的目录
  6. 06路径校验与符号链接安全检查

适用场景

  1. 01让 AI 助手读取并修改项目中的文件
  2. 02在指定目录内搜索文件名或文件内容
  3. 03通过 Docker 挂载目录,让容器内的 AI 访问宿主机文件

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 file:// 资源以及读写、搜索、目录等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"filesystem-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mark3labs/mcp-filesystem-server:latest"
]
}
}
}
启动命令docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latest

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/mark3labs/mcp-filesystem-server:latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Filesystem 服务

此 MCP 服务通过 Model Context Protocol(MCP)提供对本地文件系统的安全访问。

组件

资源
  • file://
    • 名称:文件系统
    • 描述:访问本地文件系统中的文件和目录
工具
文件操作
  • read_file

    • 读取文件系统中文件的全部内容
    • 参数:path(必填):要读取的文件路径
  • read_multiple_files

    • 在一次操作中读取多个文件的内容
    • 参数:paths(必填):要读取的文件路径列表
  • write_file

    • 创建新文件,或用新内容覆盖现有文件
    • 参数:path(必填):文件写入路径,content(必填):要写入文件的内容
  • copy_file

    • 复制文件和目录
    • 参数:source(必填):文件或目录的源路径,destination(必填):目标路径
  • move_file

    • 移动或重命名文件和目录
    • 参数:source(必填):文件或目录的源路径,destination(必填):目标路径
  • delete_file

    • 从文件系统中删除文件或目录
    • 参数:path(必填):要删除的文件或目录路径,recursive(可选):是否递归删除目录(默认:false)
  • modify_file

    • 使用字符串匹配或正则表达式查找并替换文本,以更新文件
    • 参数:path(必填):要修改的文件路径,find(必填):要搜索的文本,replace(必填):用于替换的文本,all_occurrences(可选):是否替换所有匹配项(默认:true),regex(可选):是否将 find 模式视为正则表达式(默认:false)
目录操作
  • list_directory

    • 获取指定路径下所有文件和目录的详细列表
    • 参数:path(必填):要列出内容的目录路径
  • create_directory

    • 创建新目录,或确保目录存在
    • 参数:path(必填):要创建的目录路径
  • tree

    • 返回目录结构的分层 JSON 表示
    • 参数:path(必填):要遍历的目录路径,depth(可选):最大遍历深度(默认:3),follow_symlinks(可选):是否跟随符号链接(默认:false)
搜索和信息
  • search_files

    • 递归搜索名称与指定模式匹配的文件和目录
    • 参数:path(必填):搜索起始路径,pattern(必填):用于匹配文件名的搜索模式
  • search_within_files

    • 在目录树中的文件内容里搜索文本
    • 参数:path(必填):搜索起始目录,substring(必填):要在文件内容中搜索的文本,depth(可选):最大搜索目录深度,max_results(可选):返回的最大结果数(默认:1000)
  • get_file_info

    • 获取文件或目录的详细元数据
    • 参数:path(必填):文件或目录路径
  • list_allowed_directories

    • 返回此服务获准访问的目录列表
    • 参数:无

功能

  • 安全访问指定目录
  • 路径验证,防止目录遍历攻击
  • 通过安全检查解析符号链接
  • MIME 类型检测
  • 支持文本、二进制和图像文件
  • 限制内联内容和 base64 编码的大小

入门

安装
使用 Go Install
go install github.com/mark3labs/mcp-filesystem-server@latest
使用
作为独立服务

使用允许访问的目录启动 MCP 服务:

mcp-filesystem-server /path/to/allowed/directory [/another/allowed/directory ...]
作为 Go 项目中的库
package main

import (
	"log"
	"os"

	"github.com/mark3labs/mcp-filesystem-server/filesystemserver"
)

func main() {
	// Create a new filesystem server with allowed directories
	allowedDirs := []string{"/path/to/allowed/directory", "/another/allowed/directory"}
	fs, err := filesystemserver.NewFilesystemServer(allowedDirs)
	if err != nil {
		log.Fatalf("Failed to create server: %v", err)
	}

	// Serve requests
	if err := fs.Serve(); err != nil {
		log.Fatalf("Server error: %v", err)
	}
}
与 Model Context Protocol 配合使用

要将此服务集成到支持 MCP 的应用中:

{
  "mcpServers": {
    "filesystem": {
      "command": "mcp-filesystem-server",
      "args": ["/path/to/allowed/directory", "/another/allowed/directory"]
    }
  }
}
Docker
使用 Docker 运行

你可以使用 Docker 运行 Filesystem MCP 服务:

docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latest /path/to/allowed/directory
使用 MCP 配置 Docker

要将 Docker 镜像集成到支持 MCP 的应用中:

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mark3labs/mcp-filesystem-server:latest",
        "/path/to/allowed/directory"
      ]
    }
  }
}

如果需要让容器内所做的更改反映到主机文件系统中,可以挂载卷。这样容器就能访问和修改主机系统上的文件。示例如下:

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--volume=/allowed/directory/in/host:/allowed/directory/in/container",
        "ghcr.io/mark3labs/mcp-filesystem-server:latest",
        "/allowed/directory/in/container"
      ]
    }
  }
}

许可证

详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。