Pathgate
pathgate is a Python Model Context Protocol (MCP) server that exposes a controlled filesystem interface to MCP clients such as Claude Desktop, Cursor, VS Code, and inspector tools. The server only permits access to directories that are explicitly allow-listed at startup.
What it does
The server exposes:
- File resources via
file://... - Directory resources via
directory://... - Tools for reading, writing, listing, creating, deleting, moving, copying, searching, and inspecting files/directories
- Built-in prompts for directory analysis and file discovery
Security model
Access is restricted by allow-listed paths. At startup, the server resolves the supplied paths and only permits operations within those directories.
- Paths are checked with
os.path.realpath()and prefix matching - Symlinks are resolved before comparison
- The server can be run in read-only mode to disable mutating operations
Installation
Pathgate package is published on PyPI. To use it, for example with Claude Desktop, add this in the
{
"mcpServers": {
"pathgate": {
"command": "uvx",
"args": ["pathgate", "C:\\Users\\me\\Documents"]
}
}
}
This is just an example script
Usage
Start with allowed directories
pathgate "C:\Users\<username>\Documents" "C:\Users\<username>\Projects"
Read-only mode
pathgate --read-only "C:\Users\<username>\Documents"
Environment variable alternative
$env:FS_MCP_ALLOWED_PATHS = "C:\Users\<username>\Documents;C:\Users\<username>\Projects"
pathgate
On macOS/Linux, use : instead of ; for the path separator.
Tools
The current implementation exposes these tools:
read_file_tool— read a file and return its content, size, and encodingwrite_file_tool— write content to a filelist_directory_tool— list directory contents, optionally recursivelycreate_directory_tool— create a directory tree if neededdelete_file_tool— delete a single filedelete_directory_tool— delete a directory, optionally recursivelymove_file_tool— move or rename a file/directorycopy_file_tool— copy a file/directorysearch_files_tool— search for files matching a patternget_file_info_tool— return metadata for a file or directory
Example requests
Once connected, clients can ask:
List the files in C:\Users\<username>\Documents
Read C:\Users\<username>\Documents\notes.txt
Search for *.py files under C:\Users\<username>\Projects
Create a file at C:\Users\<username>\Documents\todo.txt with the content "Ship release"
Project layout
pathgate/
├── pathgate/
│ ├── __init__.py
│ ├── __main__.py
│ ├── config.py
│ ├── prompts.py
│ ├── resources.py
│ ├── server.py
│ ├── tool_schemas.py
│ └── tools.py
├── tests/
│ └── test_server.py
├── pyproject.toml
├── README.md
└── LICENSE
Requirements
- Python 3.10+
mcp>=2