Skip to main content
Glama
Preston-Harrison

Filesystem MCP Server

README.md
# Filesystem MCP Server (v0.1)

A simple MCP server for filesystem operations with directory sandboxing and read-only mode support.

**Early version (0.1) - not thoroughly tested/reviewed, use with caution**

## Quick Start

Install dependencies:
```bash
git clone <repo_url>
uv sync
```

Run the server:
```bash
# Normal mode - full filesystem access
uv run main.py /path/to/allowed/directory

# Read-only mode - no write operations  
uv run main.py --read-only /path/to/allowed/directory
```

## Features

- Directory sandboxing (operations restricted to allowed paths)
- `--read-only` flag disables write operations
- Gitignore support for searches
- Human-readable error messages

## Usage Examples

### Normal Mode
```bash
uv run main.py ~/projects
# Provides: create_file, delete_file, move_file, edit_file, create_directory + read tools
```

### Read-Only Mode  
```bash
uv run main.py --read-only ~/projects
# Provides only: read_text_file, list_directory, search_files, grep, directory_tree
```

### Multiple Directories
```bash
uv run main.py /home/user/docs /tmp/workspace
uv run main.py --read-only /var/log /etc/config
```

## Available Tools

**Read Operations (always available):**
- `read_text_file` - Read file contents
- `list_directory` - List directory contents  
- `directory_tree` - JSON directory structure
- `search_files` - Find files by pattern
- `grep` - Search text in files
- `read_multiple_files` - Bulk file reading

**Write Operations (disabled in `--read-only`):**
- `create_file` - Create new files
- `delete_file` - Delete files
- `move_file` - Move/rename files
- `edit_file` - Edit file contents
- `create_directory` - Create directories

## Dependencies

From `pyproject.toml`:
- `fastmcp>=2.11.2` - MCP framework
- `pathspec>=0.12.1` - Gitignore patterns

## Security Notes

- All paths resolved with `Path.resolve()` to prevent traversal
- Operations restricted to allowed directories only
- Binary files rejected for text operations

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no significant overlap. For example, create_directory vs. create_file, read_text_file vs. read_multiple_files, and search_files vs. grep all target different operations. The descriptions clearly differentiate their specific functions, making tool selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout, such as create_directory, list_directory, and read_text_file. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.

Tool Count5/5

With 12 tools, the server provides a well-scoped set for filesystem operations, covering creation, deletion, reading, editing, searching, and listing. Each tool serves a specific and necessary function without redundancy, making the count appropriate for the domain.

Completeness5/5

The tool set offers comprehensive coverage for filesystem management, including CRUD operations (create, read, edit, delete), navigation (list, tree), and advanced features (search, grep, move). There are no obvious gaps; agents can perform all typical filesystem tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues