MCP Filesystem logo

MCP Filesystem

by isaacphi

The MCP Filesystem is a Model Context Protocol (MCP) server that exposes resources for each file in a working directory and sends change notifications. It allows clients to access and monitor files within a specified workspace as MCP resources.

View on GitHub

Last updated: N/A

MCP Filesystem

A Model Context Protocol (MCP) server that exposes resources for each file in a working directory and sends change notifications.

Status

⚠️ Pre-beta Quality ⚠️

"It works on my machine". Issues are welcome ❤️

Features

  • Resources: Creates one MCP resource for each file in your workspace
  • Gitignore Support: Respects .gitignore rules
  • Change Notification: Detects file changes, additions, and deletions
  • MIME Type Detection and Encoding Handling: Identifies file types and handles various text encodings

Setup

Install Go: Follow instructions at https://golang.org/doc/install

Fetch or update this server:

go install github.com/isaacphi/mcp-filesystem@latest

Add the following to your client configuration (located at ~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop):

{
  "mcpServers": {
    "filesystem": {
      "command": "mcp-filesystem",
      "args": ["--workspace", "/path/to/your/repository"]
    }
  }
}

Replace /path/to/your/repository with the absolute path to your project directory.

Usage

Your client will be able to access and reference all non-ignored files in your repository as MCP resources. Each file is registered as a separate resource with appropriate MIME type detection.

Client Requirements

Your client needs to support the following MCP features:

  • Resource Listing: The ability to list and access resources exposed by the server
  • Change Notifications: Support for receiving notifications/resources/list_changed events
  • Resource Content Access: Ability to request and render resource content with appropriate MIME types

About

This project uses:

Development

Clone the repository:

git clone https://github.com/isaacphi/mcp-filesystem.git
cd mcp-filesystem

Install dependencies:

go mod download

Build:

go build

Configure you client to use your local build:

{
  "mcpServers": {
    "filesystem": {
      "command": "/full/path/to/your/mcp-filesystem/mcp-filesystem",
      "args": ["--workspace", "/path/to/repository"],
      "env": {
        "DEBUG": "1"
      }
    }
  }
}

Feedback

Please submit issues with as many details as you can.

Set the DEBUG environment variable to enable verbose logging:

"env": {
  "DEBUG": "1"
}

Features on my radar

  • [x] Resources for each file in workspace
  • [x] .gitignore support
  • [x] Change notifications
  • [ ] Standardize MCP protocol use to work with more clients (Claude Desktop)
  • [ ] Configurable support for line numbers
  • [ ] Resource update subscriptions
  • [ ] Additional ignore patterns (beyond .gitignore)
  • [ ] Debounced notifications for high-volume file changes
  • [ ] info, create, edit, and delete tools