关于 MCP Filesystem Server
MCP Filesystem Server 是一个用 Go 编写的 MCP 服务,让 MCP 客户端访问本地文件系统。服务只能访问启动时指定的目录,并对路径做校验以防止目录穿越。适合需要让 AI 读写本地文件的用户。
主要功能
- 01读取、写入、复制、移动和删除文件
- 02批量读取多个文件
- 03按文本或正则替换文件内容
- 04目录树查看与文件搜索
- 05限定允许访问的目录
- 06路径校验与符号链接安全检查
适用场景
- 01让 AI 助手读取并修改项目中的文件
- 02在指定目录内搜索文件名或文件内容
- 03通过 Docker 挂载目录,让容器内的 AI 访问宿主机文件
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 file:// 资源以及读写、搜索、目录等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latest本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/mark3labs/mcp-filesystem-server:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。