@rog0x/mcp-file-tools
# @rog0x/mcp-file-tools
MCP server providing file and directory analysis tools for AI agents. Gives Claude (and other MCP-compatible AI) the ability to explore, analyze, and search file systems.
## Tools
| Tool | Description |
|------|-------------|
| `dir_tree` | Generate a visual directory tree structure with configurable depth and ignore patterns |
| `file_stats` | Analyze a directory: total files, size breakdown by extension, largest/newest/oldest files |
| `duplicate_finder` | Find duplicate files by size + MD5 hash, report wasted space |
| `code_counter` | Count lines of code by language: code, comments, and blank lines (like cloc/scc) |
| `file_search` | Search files by name glob, content regex, size range, and date range |
## Installation
```bash
git clone https://github.com/rog0x/mcp-file-tools.git
cd mcp-file-tools
npm install
npm run build
```
## Configuration
### Claude Code
```bash
claude mcp add mcp-file-tools node /absolute/path/to/mcp-file-tools/dist/index.js
```
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"mcp-file-tools": {
"command": "node",
"args": ["/absolute/path/to/mcp-file-tools/dist/index.js"]
}
}
}
```
## Tool Details
### dir_tree
Generate a visual directory tree like the `tree` command.
```
Parameters:
dir_path (required) - Absolute path to the directory
max_depth (optional) - Max depth to traverse (default: 5, 0 = unlimited)
ignore_patterns (optional) - Patterns to ignore (default: node_modules, .git, dist, etc.)
```
### file_stats
Get a comprehensive analysis of a directory's contents.
```
Parameters:
dir_path (required) - Absolute path to the directory
max_depth (optional) - Max depth to traverse (default: 10)
```
Returns: total files, total size, file counts by extension, top 10 largest files, top 10 newest/oldest files.
### duplicate_finder
Find duplicate files using size pre-filtering and MD5 hashing.
```
Parameters:
dir_path (required) - Absolute path to the directory
min_size (optional) - Minimum file size in bytes (default: 1)
max_depth (optional) - Max depth to traverse (default: 10)
```
Returns: duplicate groups with file paths, sizes, and total wasted space.
### code_counter
Count lines of code across 20+ languages with comment detection.
```
Parameters:
dir_path (required) - Absolute path to the directory
max_depth (optional) - Max depth to traverse (default: 10)
```
Supported languages: TypeScript, JavaScript, Python, Java, C/C++, C#, Go, Rust, Ruby, PHP, Swift, Kotlin, HTML, CSS, JSON, YAML, Markdown, Shell, SQL, Lua.
### file_search
Search for files using multiple criteria simultaneously.
```
Parameters:
dir_path (required) - Absolute path to the directory
name_pattern (optional) - Glob pattern (e.g. "**/*.ts")
content_pattern (optional) - Regex to search file contents
min_size (optional) - Minimum file size in bytes
max_size (optional) - Maximum file size in bytes
modified_after (optional) - ISO date string
modified_before (optional) - ISO date string
max_results (optional) - Max results (default: 100)
```
## License
MIT
TDQS
Scored across 5 tools
Each tool has a distinct purpose: generating a directory tree, computing stats, finding duplicates, counting code lines, and searching files. No overlapping responsibilities, so an agent can unambiguously choose the right tool for a task.
All tool names follow a consistent pattern of lowercase snake_case, with each name being a noun phrase describing its function (e.g., dir_tree, file_stats). This is uniform and predictable, making it easy to infer tool behavior from the name alone.
With exactly 5 tools, the surface is well-scoped for a file analysis and search utility. Each tool addresses a core aspect of file management without redundancy, and the count is within the ideal range of 3-15 tools.
The server covers major file inspection and analysis needs: structural views, statistics, duplicate detection, code metrics, and flexible searching. A minor gap is the lack of a direct file content read tool, but the search tool's regex content matching partially covers that, so agents can work around it.