mcp-dev-tools
# mcp-dev-tools
[](https://npmjs.com)
[](https://spec.modelcontextprotocol.io)
[](LICENSE)
[]()
[]()
> **The most complete MCP server for developers** โ file operations, git integration, shell execution, and smart caching. Works with Claude Desktop, Cursor, and any MCP-compatible client.
---
## โจ Why mcp-dev-tools?
Most MCP servers give you one or two basic tools. `mcp-dev-tools` gives you a **full developer toolkit** with production-grade internals:
- ๐๏ธ **File Tools** โ read, write, list, inspect with validation & caching
- ๐ **Shell Tools** โ safe command execution with output capture
- ๐ฟ **Git Tools** โ status, log, diff, branches without leaving your AI chat
- โก **LRU Cache** โ repeated file reads served instantly
- ๐ก๏ธ **Built-in Validator** โ blocks dangerous commands and unsafe paths
- ๐ **Structured Logging** โ clean, leveled logs that don't clutter stdio
---
## ๐ Quick Start
### 1. Clone & Install
```bash
git clone https://github.com/lucaskristina/mcp-dev-tools.git
cd mcp-dev-tools
npm install
```
### 2. Add to Claude Desktop
Open your Claude Desktop config file:
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
Add the following:
```json
{
"mcpServers": {
"dev-tools": {
"command": "node",
"args": ["C:/path/to/mcp-dev-tools/src/index.js"]
}
}
}
```
Restart Claude Desktop. You'll see the ๐ icon confirming the server is connected.
### 3. Add to Cursor
In Cursor settings โ MCP โ Add Server:
```json
{
"name": "dev-tools",
"command": "node",
"args": ["/path/to/mcp-dev-tools/src/index.js"]
}
```
---
## ๐ ๏ธ Available Tools
### File Operations
| Tool | Description | Example Prompt |
|------|-------------|----------------|
| `read_file` | Read file contents with caching | *"Show me the contents of src/app.js"* |
| `write_file` | Write or overwrite a file | *"Save this component to components/Card.jsx"* |
| `list_directory` | Recursive directory listing | *"What files are in the src folder?"* |
| `file_info` | Size, dates, permissions metadata | *"When was package.json last modified?"* |
### Shell Execution
| Tool | Description | Example Prompt |
|------|-------------|----------------|
| `run_command` | Execute shell commands safely | *"Run the test suite"* |
| `get_environment` | View environment variables | *"What's the NODE_ENV?"* |
| `process_list` | List running processes | *"What's currently running?"* |
### Git Integration
| Tool | Description | Example Prompt |
|------|-------------|----------------|
| `git_status` | Working tree status | *"What files did I change?"* |
| `git_log` | Commit history | *"Show me the last 10 commits"* |
| `git_diff` | Diff against HEAD or branch | *"What changed since last commit?"* |
| `git_branches` | List local/remote branches | *"What branches do we have?"* |
---
## ๐ง Configuration
Create an optional `mcp-config.json` in your project root:
```json
{
"server": {
"maxConcurrentRequests": 10,
"requestTimeoutMs": 30000
},
"tools": {
"enableFileAccess": true,
"enableShellExecution": true,
"allowedPaths": ["./src", "./docs"]
},
"logging": {
"level": "warn"
}
}
```
| Option | Default | Description |
|--------|---------|-------------|
| `logging.level` | `info` | `debug` / `info` / `warn` / `error` |
| `tools.allowedPaths` | `[cwd]` | Restrict file access to these directories |
| `tools.enableShellExecution` | `true` | Disable to prevent command execution |
| `server.requestTimeoutMs` | `30000` | Tool execution timeout |
---
## ๐งช Test It
After setup, try these prompts in Claude or Cursor:
```
"List all TypeScript files in my src directory"
"Show me what changed in git since yesterday"
"Run npm test and show me the output"
"Read my .env file and tell me which variables are set"
```
---
## ๐๏ธ Architecture
```
src/
โโโ index.js # Server entry point & tool registration
โโโ lib/
โ โโโ logger.js # Structured logging (stderr, non-blocking)
โ โโโ config.js # Config loader with defaults & merging
โ โโโ cache.js # LRU cache (200 entries, 2min TTL)
โ โโโ validator.js # Path & command safety checks
โ โโโ metrics.js # Anonymous usage metrics (opt-out below)
โ โโโ utils.js # Shared helpers & error wrappers
โโโ tools/
โโโ file-tools.js # File system operations
โโโ shell-tools.js # Command execution
โโโ git-tools.js # Git repository tools
```
---
## ๐ Anonymous Metrics
`mcp-dev-tools` collects **anonymous** usage metrics to help us improve the tool. This includes:
- Node.js version and OS platform (no personal data)
- Which tools are used most frequently
- Error rates by tool type
**To opt out**, set the environment variable before starting:
```bash
MCP_NO_TELEMETRY=1 node src/index.js
```
Or add to your shell profile:
```bash
export MCP_NO_TELEMETRY=1
```
> We never collect file contents, command output, or any user data.
---
## ๐ค Contributing
PRs welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) first.
```bash
git clone https://github.com/lucaskristina/mcp-dev-tools
cd mcp-dev-tools
npm install
npm test
```
### Contributors
<!-- ALL-CONTRIBUTORS-LIST:START -->
| Avatar | Name | Role |
|--------|------|------|
| ๐ค | **alexkowalski** | Core maintainer |
| ๐ค | **priya-dev** | Git tools, caching |
| ๐ค | **t.brennan** | Validator, security hardening |
| ๐ค | **lucaskristina-bot** | CI/CD, releases |
<!-- ALL-CONTRIBUTORS-LIST:END -->
---
## ๐ Changelog
### v2.3.1 โ *2025-06-18*
- ๐ Fixed `git_diff` on Windows paths with spaces
- โก Improved cache TTL handling for large files
- ๐ Added `process_list` tool
### v2.3.0 โ *2025-05-30*
- โจ Added full git tools suite
- ๐ก๏ธ Validator now blocks 12 additional dangerous patterns
- ๐ Telemetry opt-out via `MCP_NO_TELEMETRY`
### v2.2.0 โ *2025-04-12*
- โจ LRU cache for file reads (2x faster repeated reads)
- โจ `get_environment` tool with sensitive key filtering
- ๐ง Config file support (`mcp-config.json`)
---
## ๐ License
MIT ยฉ [lucaskristina](https://github.com/lucaskristina)
---
<p align="center">
<sub>Built with โค๏ธ for developers using AI assistants daily.</sub><br>
<sub>If this saved you time, consider giving it a โญ</sub>
</p>
TDQS
Scored across 9 tools
Each tool has a clear, distinct purpose: file operations (write, list, info), system operations (run command, env, processes), and git operations (log, diff, branches). No overlap between categories or within categories.
Most tools follow a verb_noun pattern in snake_case (write_file, list_directory, run_command, get_environment, git_log, git_diff, git_branches), but file_info and process_list are noun_noun, causing minor inconsistency.
9 tools is a reasonable size for a dev tools server covering file, system, and git operations. Not too few to be trivial nor too many to be overwhelming.
Significant gaps exist: missing file read, file delete, git add/commit/push, and other common dev operations. The set covers only a subset of typical workflows, likely causing agent failures for common tasks.