A production-quality Model Context Protocol (MCP) server that gives AI assistants like Claude 22 powerful developer tools across 5 domains.
Built with TypeScript, strict types, Zod validation, and clean modular architecture.
| Tool | Description |
|---|---|
read_file |
Read file contents with optional line range |
write_file |
Write/append to files, auto-creates directories |
list_directory |
List files with metadata (size, modified date) |
search_in_files |
Regex search across files with glob patterns |
get_file_info |
File metadata: size, timestamps, permissions |
delete_file |
Delete files or directories (recursive optional) |
| Tool | Description |
|---|---|
git_status |
Working tree status, branch info, ahead/behind |
git_log |
Commit history with author, date, message |
git_diff |
Diff between commits, branches, or working tree |
git_blame |
Line-by-line authorship for any file |
git_branches |
List all local and remote branches |
git_show_commit |
Full diff and metadata for a specific commit |
| Tool | Description |
|---|---|
analyze_complexity |
Cyclomatic complexity, nesting depth, function count |
find_todos |
Find TODO/FIXME/HACK comments across a codebase |
count_lines |
Code vs comment vs blank line breakdown |
detect_language |
Identify programming language from file extension/shebang |
find_duplicates |
Detect duplicate code blocks across files |
get_imports |
Extract and categorize all import statements |
| Tool | Description |
|---|---|
http_request |
Full HTTP client: GET/POST/PUT/PATCH/DELETE with headers/body |
fetch_json |
Fetch and parse JSON with optional dot-path extraction |
check_url_status |
Batch URL health check with response times |
download_file |
Download files from URLs to local paths |
| Tool | Description |
|---|---|
get_system_info |
OS, CPU, memory, Node version, uptime |
get_env |
Read environment variables (sensitive values auto-masked) |
run_command |
Execute shell commands (allowlisted for safety) |
list_processes |
Running processes with CPU/memory usage |
get_disk_usage |
Disk usage for directories |
get_network_info |
Network interfaces and IP addresses |
git clone https://github.com/your-username/devtoolkit-mcp
cd devtoolkit-mcp
npm install
npm run buildAdd to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"devtoolkit": {
"command": "node",
"args": ["/absolute/path/to/devtoolkit-mcp/dist/index.js"]
}
}
}Same pattern — point the MCP server config to dist/index.js.
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm run lint # ESLintBeyond tools, this server implements the full 2025-06-18 MCP specification:
Files are exposed as browsable MCP resources — clients (e.g. Claude Desktop) can list, read, and subscribe to changes.
- Paginated listing with cursor-based pagination (50 files/page)
- Resource templates:
file:///{path}for dynamic file access - Subscriptions: clients receive
notifications/resources/updatedwhen a file changes after a write/delete - List-changed notifications: resource list updates after any file mutation
- Annotations: every resource includes
audience,priority, andlastModified
Structured log notifications sent to the client for every tool call:
- 8 RFC 5424 severity levels:
debug→emergency - Client can set minimum log level via
logging/setLevel - Logs include tool name, args preview, status, and errors
- Sensitive values never logged
Autocomplete for file paths in resource URI templates:
- Triggered when client requests
completion/completeon aref/resource - Returns matching file paths up to 20 suggestions with
hasMoreflag
Servers request structured user input before destructive operations:
write_file: if the target file exists, asks user to confirm overwrite (with checkbox UI)delete_file: always asks user to confirm + optionally provide a reason- Falls back gracefully if client doesn't support elicitation (proceeds without prompt)
The server can ask the client's LLM to generate completions:
sampleFromClient()helper exported for use in tools- Specifies model preferences (prefers Claude Sonnet, falls back to any Claude)
- Gracefully no-ops if client doesn't support sampling
src/
├── index.ts # MCP server, capabilities, tool routing, elicitation, sampling
├── resources.ts # Resources: list, read, subscribe, completion, pagination
├── tools/
│ ├── files.ts # File system tools
│ ├── git.ts # Git integration (simple-git)
│ ├── code-analysis.ts # Static analysis tools
│ ├── http.ts # HTTP client tools (axios)
│ └── system.ts # OS/system tools
└── utils/
├── errors.ts # Typed error classes, helpers
└── logger.ts # Structured log notifications (RFC 5424)
Key design decisions:
- Zod validation on every tool input — no silent failures
- Typed error classes with error codes for structured debugging
- Security:
run_commandhas an explicit allowlist; env vars auto-mask secrets - Cross-platform: works on Windows, macOS, and Linux
@modelcontextprotocol/sdk— MCP protocolsimple-git— Git operationsaxios— HTTP clientfast-glob— File pattern matchingzod— Runtime schema validation- TypeScript (strict mode)
MIT