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.
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:
- mark3labs/mcp-go for MCP communication
- fsnotify for file system event monitoring
- go-gitignore for parsing
.gitignore
files
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
, anddelete
tools