文件系统服务器

MCP文件系统服务器通过Model Context Protocol (MCP)提供对本地文件系统的安全访问,支持文件操作、目录操作、搜索和信息检索等功能。

  • by mark3labs
  • Go
  • 本地部署
  • 693 星标
  • 更新于
在 GitHub 查看 mark3labs/mcp-filesystem-server

使用说明

MCP文件系统服务器

此MCP服务器通过模型上下文协议(MCP)提供对本地文件系统的安全访问。

组件

资源

  • 文件://
    • 名称:文件系统
    • 描述:访问本地文件系统上的文件和目录

工具

文件操作

  • read_file

    • 从文件系统读取文件的完整内容
    • 参数: path (必填):要读取的文件的路径
  • 读取多个文件

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

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

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

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

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

    • 通过使用字符串匹配或正则表达式查找和替换文本来更新文件
    • 参数: path (必填):要修改的文件的路径, find (必填):要搜索的文本, replace (必填):文本替换为, all_occurrences (可选):替换所有出现的内容(默认值:true), regex (可选):将查找模式视为正则表达式(默认值:false)

目录操作

  • list_directory

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

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

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

搜索和信息

  • 搜索文件

    • 递归搜索与模式匹配的文件和目录
    • 参数: path (必填):搜索的起始路径, pattern (必填):与文件名匹配的搜索模式
  • 搜索内含文件

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

    • 检索有关文件或目录的详细元数据
    • 参数: path (必填):文件或目录的路径
  • list_allowed_directories

    • 返回允许此服务器访问的目录列表
    • 参数:无

特性

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

入门指南

安装

使用Go安装

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)
	}
}

使用模型上下文协议

要将此服务器与支持MCP的应用程序集成,请执行以下操作:

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

码头工人

使用Docker运行

您可以使用Docker运行文件系统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"
      ]
    }
  }
}

许可证

请参阅 许可证 文件以获取详细信息。