FastMCP File Server
Enables public exposure of the HTTP server via ngrok for access by web-based AI systems like ChatGPT.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FastMCP File Servershow me what files are in the allowed directory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FastMCP File Server
A versatile, secure file server implementing the Model Context Protocol (MCP) that provides AI assistants with safe file operations. Features multiple connection modes, configurable access levels, and comprehensive security controls for various deployment scenarios.
🚀 Features
Comprehensive File Operations: Create, read, write, delete, copy, move, rename files and directories
Advanced Text Manipulation: Line-specific operations, search and replace, pattern matching
File Analysis: Size, permissions, timestamps, hash verification, diff generation
Batch Operations: Handle multiple files efficiently in single operations
Archive Support: Create and extract ZIP files
Format Conversion: Text to PDF, image format conversion, CSV ↔ JSON
Multiple Connection Modes: stdio, HTTP, and public access via ngrok
Tiered Access Control: Read-only, Read/Write, and Admin permission levels
Security First: All operations restricted to configured safe directories
Related MCP server: MCP Filesystem Server
📦 Installation
From PyPI (Recommended)
# Using uv (recommended)
uv tool install fastmcp-file-server
# Using pip
pip install fastmcp-file-serverFrom Source
git clone https://github.com/Luxshan2000/Local-File-MCP-Server.git
cd Local-File-MCP-Server
uv sync🔧 Quick Start
Basic Usage
# Set allowed directory
export MCP_ALLOWED_PATH="/path/to/your/files"
# Start stdio server (for Claude Desktop)
fastmcp-file-server
# Start HTTP server
fastmcp-file-server-http
# Start HTTP server bypassing security warning (not recommended)
fastmcp-file-server-http --ignore-keysWith Authentication
# Set admin key for HTTP mode
export MCP_ADMIN_KEY="your-secret-token"
export MCP_HTTP_PORT=8082
fastmcp-file-server-http⚙️ Configuration
Environment Variables
Variable | Default | Description |
|
| Directory path for file operations |
|
| HTTP server port |
|
| Read-only access token |
|
| Read/write access token |
|
| Admin access token (includes delete) |
|
| Maximum file size in bytes (10MB) |
|
| Allowed file extensions (comma-separated) |
Configuration Files
Create a .env file in your project root:
# Required: Safe directory for file operations
MCP_ALLOWED_PATH=/absolute/path/to/your/files
# Optional: HTTP server settings
MCP_HTTP_PORT=8082
# Optional: Multi-tier authentication tokens
MCP_READ_KEY=readonly-token-here
MCP_WRITE_KEY=readwrite-token-here
MCP_ADMIN_KEY=admin-token-here
# Optional: File restrictions
MCP_MAX_FILE_SIZE=10485760
MCP_ALLOWED_EXTENSIONS=.txt,.json,.md,.csv,.log,.xml,.yaml,.yml,.conf,.cfg,.zip,.pdf,.jpg,.png🔗 Integration
Claude Desktop Integration
Configuration file locations:
macOS:
~/Library/Application Support/Claude/config.jsonWindows:
%APPDATA%\Claude\config.json
Stdio Mode (Direct Integration)
{
"mcpServers": {
"local-file-server": {
"command": "fastmcp-file-server",
"env": {
"MCP_ALLOWED_PATH": "/absolute/path/to/your/allowed/directory"
}
}
}
}HTTP Mode (Local Server)
Start the HTTP server:
export MCP_ADMIN_KEY="your-secret-token"
fastmcp-file-server-httpConfigure Claude Desktop:
{
"mcpServers": {
"local-file-server-http": {
"transport": "http",
"url": "http://127.0.0.1:8082/mcp",
"headers": {
"Authorization": "Bearer your-secret-token"
}
}
}
}HTTP Mode with mcp-remote Proxy
For environments requiring a proxy:
# Install mcp-remote
npm install -g mcp-remote{
"mcpServers": {
"local-file-server-proxy": {
"command": "npx",
"args": [
"mcp-remote",
"http://127.0.0.1:8082/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer your-secret-token"
}
}
}
}Public Access with ngrok
For web-based AI systems (ChatGPT, etc.):
# Terminal 1: Start authenticated HTTP server
export MCP_ADMIN_KEY="your-secret-token"
export MCP_HTTP_PORT=8082
fastmcp-file-server-http
# Terminal 2: Expose publicly via ngrok
ngrok http 8082Use the ngrok URL in your web-based AI system:
URL:
https://abc123.ngrok.io/mcpHeader:
Authorization: Bearer your-secret-token
🔒 Security
Security Features
⚠️ HTTP Mode Security Warning:
When starting the HTTP server without any authentication tokens configured, the system will display a security warning and prompt for confirmation. This prevents accidentally running an unprotected server.
# This will trigger a security warning:
fastmcp-file-server-http
# To bypass the warning (not recommended):
fastmcp-file-server-http --ignore-keysToken Management
⚠️ Important Security Notes:
With Keys: When ANY token is set (
MCP_READ_KEY,MCP_WRITE_KEY, orMCP_ADMIN_KEY), all HTTP requests require theAuthorization: Bearer <token>headerWithout Keys: If NO tokens are set, the server runs without authentication (use only in secure environments)
Multi-tier Access: Different tokens provide different permission levels
Temporary Exposure: For ngrok or temporary remote access, always use strong tokens and revoke access when done
Key Rotation: Regularly rotate your tokens, especially after temporary exposures
Access Levels
No Tokens Set: Server runs without authentication (stdio mode safe, HTTP local only)
Read Token:
MCP_READ_KEY- File listing, reading, searching, comparison operationsWrite Token:
MCP_WRITE_KEY- All read operations plus create, modify, copy, move, convertAdmin Token:
MCP_ADMIN_KEY- All operations including file and directory deletion
Best Practices
Never commit secrets: Use
.envfiles (added to.gitignore)Use strong tokens: Generate cryptographically secure random tokens (
openssl rand -hex 32)Limit access scope: Set
MCP_ALLOWED_PATHto the minimum required directoryChoose appropriate token level: Use read-only tokens for analysis, admin only when deletion needed
Monitor usage: Check logs for unauthorized access attempts
Temporary access: Unset all tokens and restart after temporary exposures
💡 Usage Examples
File Operations
# Basic operations
"Create a file called notes.txt with my meeting notes"
"Read lines 10-20 from config.py"
"Copy config.json to backup/config_backup.json"
# Advanced operations
"Search for 'TODO' comments in all Python files"
"Replace 'old_function' with 'new_function' in utils.py"
"Create a ZIP archive of all source files"
"Convert report.txt to PDF format"
"Calculate SHA256 hash of important_file.pdf"Batch Operations
"Read all .py files in the src/ directory"
"Create these 5 configuration files with their content"
"Delete all .tmp files in the workspace"
"Find all JavaScript files containing 'console.log'"🛠️ Development
See DEVELOPER.md for detailed development setup and contribution guidelines.
Quick Development Setup
# Clone repository
git clone https://github.com/Luxshan2000/Local-File-MCP-Server.git
cd Local-File-MCP-Server
# Install dependencies
uv sync
# Run development server
uv run server # stdio mode
uv run server-http # HTTP mode
# Run tests and linting
uv run test
uv run lint
uv run format📊 API Reference
Available Tools
Tool | Description | Access Level |
| Read file contents or specific line ranges | Read-only |
| Create or overwrite files | Read/Write |
| Append content to existing files | Read/Write |
| Remove files and directories | Admin |
| Copy files and directories | Read/Write |
| Move/rename files and directories | Read/Write |
| List directory contents with filtering | Read-only |
| Create new directories | Read/Write |
| Get file metadata and permissions | Read-only |
| Search for files by name patterns | Read-only |
| Search file contents with regex | Read-only |
| Find and replace text in files | Read/Write |
| Insert text at specific line numbers | Read/Write |
| Remove specific line ranges | Read/Write |
| Generate diffs between files | Read-only |
| Create ZIP archives | Read/Write |
| Extract ZIP archives | Read/Write |
| Generate file hashes (MD5, SHA1, SHA256) | Read-only |
| Convert text to PDF | Read/Write |
| Convert between image formats | Read/Write |
| Convert between CSV and JSON | Read/Write |
🐛 Troubleshooting
Common Issues
Server won't start:
# Reinstall dependencies
uv sync
# Check Python version
python --version # Requires Python 3.10+Claude Desktop not connecting:
Verify all paths in configuration are absolute (full paths)
Restart Claude Desktop after changing configuration
Check server starts without errors:
uv run serverEnsure
MCP_ALLOWED_PATHdirectory exists and is accessible
HTTP authentication fails:
Verify
MCP_ADMIN_KEYis set before starting serverCheck Authorization header format:
Bearer your-secret-tokenEnsure token matches exactly (no extra spaces)
Permission denied errors:
Check file/directory permissions
Verify
MCP_ALLOWED_PATHis accessibleEnsure user has read/write permissions in the allowed directory
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
We welcome contributions! Please see DEVELOPER.md for development setup and CODE_OF_CONDUCT.md for community guidelines.
🔗 Links
Repository: https://github.com/Luxshan2000/Local-File-MCP-Server
PyPI Package: https://pypi.org/project/fastmcp-file-server/
Issues: https://github.com/Luxshan2000/Local-File-MCP-Server/issues
Model Context Protocol: https://modelcontextprotocol.io/
⭐ Support
If you find this project useful, please consider giving it a star on GitHub!
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Luxshan2000/fastmcp-file-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server