MCP Filesystem Server

Fornece acesso seguro ao sistema de arquivos local através do Model Context Protocol (MCP).

Documentação

MCP Filesystem Server

Este servidor MCP fornece acesso seguro ao sistema de arquivos local por meio do Model Context Protocol (MCP).

Componentes

Recursos

  • file://
    • Nome: File System
    • Descrição: Acesso a arquivos e diretórios no sistema de arquivos local

Ferramentas

Operações de Arquivo

  • read_file

    • Lê o conteúdo completo de um arquivo do sistema de arquivos
    • Parâmetros: path (obrigatório): Caminho para o arquivo a ser lido
  • read_multiple_files

    • Lê o conteúdo de vários arquivos em uma única operação
    • Parâmetros: paths (obrigatório): Lista de caminhos de arquivos a serem lidos
  • write_file

    • Cria um novo arquivo ou sobrescreve um arquivo existente com novo conteúdo
    • Parâmetros: path (obrigatório): Caminho onde o arquivo será gravado, content (obrigatório): Conteúdo a ser gravado no arquivo
  • copy_file

    • Copia arquivos e diretórios
    • Parâmetros: source (obrigatório): Caminho de origem do arquivo ou diretório, destination (obrigatório): Caminho de destino
  • move_file

    • Move ou renomeia arquivos e diretórios
    • Parâmetros: source (obrigatório): Caminho de origem do arquivo ou diretório, destination (obrigatório): Caminho de destino
  • delete_file

    • Exclui um arquivo ou diretório do sistema de arquivos
    • Parâmetros: path (obrigatório): Caminho para o arquivo ou diretório a ser excluído, recursive (opcional): Se deve excluir diretórios recursivamente (padrão: false)
  • modify_file

    • Atualiza o arquivo localizando e substituindo texto usando correspondência de string ou regex
    • Parâmetros: path (obrigatório): Caminho para o arquivo a ser modificado, find (obrigatório): Texto a ser pesquisado, replace (obrigatório): Texto de substituição, all_occurrences (opcional): Substituir todas as ocorrências (padrão: true), regex (opcional): Tratar o padrão de busca como regex (padrão: false)

Operações de Diretório

  • list_directory

    • Obtém uma listagem detalhada de todos os arquivos e diretórios em um caminho especificado
    • Parâmetros: path (obrigatório): Caminho do diretório a ser listado
  • create_directory

    • Cria um novo diretório ou garante que um diretório exista
    • Parâmetros: path (obrigatório): Caminho do diretório a ser criado
  • tree

    • Retorna uma representação JSON hierárquica de uma estrutura de diretórios
    • Parâmetros: path (obrigatório): Caminho do diretório a ser percorrido, depth (opcional): Profundidade máxima a ser percorrida (padrão: 3), follow_symlinks (opcional): Se deve seguir links simbólicos (padrão: false)

Pesquisa e Informações

  • search_files

    • Pesquisa recursivamente arquivos e diretórios que correspondem a um padrão
    • Parâmetros: path (obrigatório): Caminho inicial para a pesquisa, pattern (obrigatório): Padrão de pesquisa para corresponder aos nomes de arquivos
  • search_within_files

    • Pesquisa texto dentro do conteúdo de arquivos em árvores de diretórios
    • Parâmetros: path (obrigatório): Diretório inicial para a pesquisa, substring (obrigatório): Texto a ser pesquisado no conteúdo dos arquivos, depth (opcional): Profundidade máxima do diretório a ser pesquisado, max_results (opcional): Número máximo de resultados a retornar (padrão: 1000)
  • get_file_info

    • Recupera metadados detalhados sobre um arquivo ou diretório
    • Parâmetros: path (obrigatório): Caminho para o arquivo ou diretório
  • list_allowed_directories

    • Retorna a lista de diretórios aos quais este servidor tem permissão de acesso
    • Parâmetros: Nenhum

Recursos

  • Acesso seguro a diretórios especificados
  • Validação de caminho para prevenir ataques de travessia de diretório
  • Resolução de links simbólicos com verificações de segurança
  • Detecção de tipo MIME
  • Suporte para arquivos de texto, binários e imagens
  • Limites de tamanho para conteúdo inline e codificação base64

Primeiros Passos

Instalação

Usando Go Install

go install github.com/mark3labs/mcp-filesystem-server@latest

Uso

Como servidor autônomo

Inicie o servidor MCP com diretórios permitidos:

mcp-filesystem-server /path/to/allowed/directory [/another/allowed/directory ...]

Como biblioteca no seu projeto 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)
	}
}

Uso com Model Context Protocol

Para integrar este servidor com aplicativos que suportam MCP:

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

Docker

Executando com Docker

Você pode executar o servidor MCP Filesystem usando Docker:

docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latest /path/to/allowed/directory

Configuração Docker com MCP

Para integrar a imagem Docker com aplicativos que suportam MCP:

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

Se você precisar que alterações feitas dentro do contêiner sejam refletidas no sistema de arquivos do host, você pode montar um volume. Isso permite que o contêiner acesse e modifique arquivos no sistema host. Aqui está um exemplo:

{
  "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"
      ]
    }
  }
}

Licença

Consulte o arquivo LICENSE para obter detalhes.