
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
it-tools-mcp
Advanced tools
Full MCP 2025-06-18 compliant server with 121+ IT tools, logging, ping, progress tracking, cancellation, and sampling utilities
📝 Note: A condensed version of this README is automatically synced to Docker Hub due to character limits.
A comprehensive Model Context Protocol (MCP) server that provides access to over 121 IT tools and utilities commonly used by developers, system administrators, and IT professionals. This server exposes a complete set of tools for encoding/decoding, text manipulation, hashing, network utilities, and many other common development and IT tasks.
Quick Install:
Install:
Ctrl+Shift+P
(or Cmd+Shift+P
on Mac)it-tools-mcp
Or manually add to your VS Code settings.json
:
{
"mcp": {
"servers": {
"it-tools": {
"command": "npx",
"args": ["it-tools-mcp"],
"env": {}
}
}
}
}
{
"mcp": {
"servers": {
"it-tools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--security-opt", "no-new-privileges:true",
"--cap-drop", "ALL",
"--read-only",
"--user", "1001:1001",
"--memory=256m",
"--cpus=0.5",
"--name", "it-tools-mcp",
"wrenchpilot/it-tools-mcp:latest"
]
}
}
}
docker run -it --rm wrenchpilot/it-tools-mcp:latest
# Generate a UUID
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"generate_uuid","arguments":{}}}' | \
docker run -i --rm wrenchpilot/it-tools-mcp:latest
# Encode text to Base64
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"encode_base64","arguments":{"text":"Hello World"}}}' | \
docker run -i --rm wrenchpilot/it-tools-mcp:latest
This server includes full MCP logging support with the following features:
logging_setLevel
: Change the minimum logging level at runtimelogging_status
: View current logging configuration and available levels# Check current logging status
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"logging_status","arguments":{}}}' | npx it-tools-mcp
# Change log level to debug
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"logging_setLevel","arguments":{"level":"debug"}}}' | npx it-tools-mcp
# Change log level to error (only show errors and above)
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"logging_setLevel","arguments":{"level":"error"}}}' | npx it-tools-mcp
This server implements the complete MCP 2025-06-18 specification including advanced utilities:
ping
requests to verify connection status_meta.progressToken
in requests to enable progress notificationsnotifications/progress
with current statusnotifications/cancelled
to abort in-progress requestssampling/createMessage
# Test connection health with ping
echo '{"jsonrpc":"2.0","id":1,"method":"ping"}' | npx it-tools-mcp
# Request with progress tracking
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"some_tool","arguments":{},"_meta":{"progressToken":"track123"}}}' | npx it-tools-mcp
# Cancel a request (send as notification)
echo '{"jsonrpc":"2.0","method":"notifications/cancelled","params":{"requestId":"2","reason":"User cancelled"}}' | npx it-tools-mcp
# Test sampling capabilities
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"mcp_sampling_demo","arguments":{"message":"What is the capital of France?","modelPreference":"claude","systemPrompt":"You are a helpful assistant.","maxTokens":100}}}' | npx it-tools-mcp
# Demo MCP utilities
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"mcp_utilities_demo","arguments":{"operation":"ping"}}}' | npx it-tools-mcp
This MCP server provides over 121 tools across 14 categories:
Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure password hashing and creative ASCII art generation.
Tool | Description | Parameters |
---|---|---|
Ansible Tools | ||
parse_ansible_inventory | Parse Ansible inventory | inventory: string |
generate_ansible_inventory | Generate Ansible inventory | hosts: string[] , groups?: Record<string, string[]> , variables?: Record<string, any> |
validate_ansible_playbook | Validate Ansible playbook YAML | playbook: string |
show_ansible_reference | Ansible syntax and module reference | query?: string |
decrypt_ansible_vault | Decrypt Ansible Vault data | data: string , password: string |
encrypt_ansible_vault | Encrypt data with Ansible Vault | data: string , password: string |
Color Tools | ||
convert_hex_to_rgb | Convert HEX to RGB | hex: string |
convert_rgb_to_hex | Convert RGB to HEX | r: number , g: number , b: number |
Data Format | ||
convert_html_to_markdown | Convert HTML to Markdown | html: string |
compare_json | Compare JSON objects | json1: string , json2: string |
format_json | Format and validate JSON | json: string , indent?: number |
minify_json | Minify JSON | json: string |
convert_json_to_csv | Convert JSON to CSV | json: string , delimiter?: string |
convert_json_to_toml | Convert JSON to TOML | json: string |
convert_markdown_to_html | Convert Markdown to HTML | markdown: string |
format_phone | Parse and format phone numbers | phoneNumber: string , countryCode?: string |
format_sql | Format SQL | sql: string , dialect?: 'sql' | 'mysql' | 'postgresql' | 'sqlite' | 'mariadb' | 'db2' | 'plsql' | 'n1ql' | 'redshift' | 'spark' | 'tsql' | 'trino' | 'bigquery' (optional, default: 'sql') |
convert_toml_to_json | Convert TOML to JSON | toml: string |
format_xml | Format XML | xml: string , indent?: number |
format_yaml | Format YAML | yaml: string |
Development Tools | ||
generate_crontab | Generate cron expressions | minute?: string , hour?: string , dayOfMonth?: string , month?: string , dayOfWeek?: string |
format_html | Format and prettify HTML | html: string , indent?: number |
format_javascript | Format and prettify JavaScript | javascript: string , indent?: number |
convert_list | Convert list formats | list: string , inputFormat: 'comma' | 'semicolon' | 'newline' | 'space' | 'pipe' , outputFormat: 'comma' | 'semicolon' | 'newline' | 'space' | 'pipe' | 'json' | 'quoted' , trim?: boolean |
generate_markdown_toc | Generate table of contents for Markdown | markdown: string , maxDepth?: number |
test_regex | Test regular expressions | pattern: string , text: string , flags?: string |
Docker Tools | ||
convert_docker_compose_to_run | Convert Compose to Docker run command | compose: string , service?: string |
validate_docker_compose | Validate Docker Compose YAML | compose: string |
show_docker_reference | Docker command and syntax reference | query?: string |
convert_docker_run_to_compose | Convert Docker run to Compose | command: string |
generate_traefik_compose | Generate Traefik Docker Compose | domain: string , service: string , port?: number , network?: string |
Encoding & Decoding | ||
decode_base64 | Decode Base64 text | text: string |
encode_base64 | Encode text to Base64 | text: string |
decode_html | Decode HTML entities | text: string |
encode_html | Encode HTML entities | text: string |
encode_html_entities | Extended HTML entity encoding/decoding | text: string , operation: 'encode' | 'decode' |
convert_text_to_binary | Convert text to binary and vice versa | input: string , operation: 'encode' | 'decode' |
convert_text_to_unicode | Convert text to Unicode and vice versa | input: string , operation: 'encode' | 'decode' |
decode_url | URL decode text | text: string |
encode_url | URL encode text | text: string |
Forensic Tools | ||
identify_file_type | Identify file type from content | data: string , filename?: string |
decode_safelink | Decode Microsoft SafeLinks | url: string |
fang_url | Fang and defang URLs for analysis | text: string , operation: 'fang' | 'defang' |
ID & Code Generators | ||
generate_qr_code | Generate QR codes for any content | text: string , size?: number - Supports URLs, WiFi (WIFI:T:WPA;S:network;P:password;;), contact info, etc. |
generate_svg_placeholder | Generate SVG placeholder | width?: number , height?: number , text?: string , backgroundColor?: string , textColor?: string |
generate_ulid | Generate ULID | None |
generate_uuid | Generate UUID v4 | None |
Math & Calculations | ||
evaluate_math | Evaluate expressions | expression: string |
convert_number_base | Convert number bases | number: string , fromBase: number , toBase: number |
calculate_percentage | Calculate percentages | operation: 'percentage-of' | 'what-percentage' | 'percentage-change' , value1: number , value2: number |
convert_roman_numerals | Convert Roman numerals | input: string |
convert_temperature | Convert temperatures | temperature: number , from: 'celsius' | 'fahrenheit' | 'kelvin' , to: 'celsius' | 'fahrenheit' | 'kelvin' |
convert_unix_timestamp | Convert timestamps | input: string |
Network & System | ||
cat | Display file content | file: string |
curl | HTTP client (GET, POST, etc.) | url: string , method?: string , headers?: Record<string, string> , body?: string |
dig | DNS query (custom type) | target: string , type?: string |
grep | Search for pattern in file | file: string , pattern: string |
head | Show first N lines of file | file: string , lines?: number |
validate_iban | Validate IBAN | iban: string |
calculate_ip_subnet | Calculate IPv4 subnet | ip: string , cidr: number |
calculate_ipv4_subnet | Enhanced IPv4 subnet calc | cidr: string |
generate_ipv6_ula | Generate IPv6 ULA | globalId?: string |
generate_mac_address | Generate MAC address | prefix?: string , separator?: ':' | '-' |
nslookup | DNS lookup (A/AAAA/CNAME) | target: string |
ping | Ping a host | target: string , count?: number |
ps | List running processes | None |
generate_random_port | Generate random ports | count?: number , min?: number , max?: number , exclude?: number[] |
scp | Copy files to/from remote host (SFTP) | target: string , user: string , direction: 'upload'|'download' , localPath: string , remotePath: string , privateKey?: string |
ssh | SSH command execution | target: string , user: string , command: string |
tail | Show last N lines of file | file: string , lines?: number |
telnet | Test TCP connectivity | target: string , port: number |
top | Show top processes (by CPU) | None |
parse_url | Parse URL components | url: string |
Physics | ||
convert_angle | Convert angle units | value: number , from: 'degrees' | 'radians' | 'gradians' , to: 'degrees' | 'radians' | 'gradians' |
convert_energy | Convert energy units | value: number , from: 'joules' | 'calories' | 'kwh' | 'btu' , to: 'joules' | 'calories' | 'kwh' | 'btu' |
convert_power | Convert power units | value: number , from: 'watts' | 'kilowatts' | 'horsepower' | 'btu_per_hour' , to: 'watts' | 'kilowatts' | 'horsepower' | 'btu_per_hour' |
Security & Crypto | ||
generate_basic_auth | Generate Basic Auth header | username: string , password: string |
hash_bcrypt | Generate/verify bcrypt hash | password: string , rounds?: number , hash?: string |
generate_bip39 | Generate BIP39 mnemonic | wordCount?: '12' | '15' | '18' | '21' | '24' |
hash_md5 | Generate MD5 hash | text: string |
hash_sha1 | Generate SHA1 hash | text: string |
hash_sha256 | Generate SHA256 hash | text: string |
hash_sha512 | Generate SHA512 hash | text: string |
generate_hmac | Generate HMAC | message: string , key: string , algorithm?: 'sha1' | 'sha256' | 'sha512' |
decode_jwt | Decode JWT token | token: string |
generate_otp | Generate TOTP codes | secret: string , digits?: number , period?: number |
generate_password | Generate secure password | length?: number , includeUppercase?: boolean , includeLowercase?: boolean , includeNumbers?: boolean , includeSymbols?: boolean |
generate_token | Generate secure token | length?: number , charset?: 'alphanumeric' | 'hex' | 'base64' | 'custom' , customChars?: string |
Text Processing | ||
generate_ascii_art | Generate ASCII art | text: string , font?: string (supports 295+ figlet fonts) |
analyze_distinct_words | Extract unique words from text | text: string , caseSensitive?: boolean |
search_emoji | Search emojis | query: string |
generate_lorem_ipsum | Generate Lorem Ipsum | type?: 'words' | 'sentences' | 'paragraphs' , count?: number |
generate_numeronym | Generate numeronyms | text: string |
slugify_text | Convert to URL slug | text: string , separator?: string , lowercase?: boolean |
obfuscate_string | Obfuscate text | text: string , method?: 'html-entities' | 'unicode' | 'base64' |
convert_to_camelcase | Convert to camelCase | text: string |
capitalize_text | Capitalize words | text: string |
compare_text | Compare texts | text1: string , text2: string |
convert_text_to_kebabcase | Convert to kebab-case | text: string |
convert_text_to_lowercase | Convert to lowercase | text: string |
convert_text_to_pascalcase | Convert to PascalCase | text: string |
text_snakecase | Convert to snake_case | text: string |
analyze_text_stats | Get text statistics | text: string |
convert_text_to_nato | Convert to NATO alphabet | text: string |
show_unicode_names | Convert text to Unicode character names | text: string |
convert_text_to_uppercase | Convert to uppercase | text: string |
Utility Tools | ||
format_css | Format and prettify CSS | css: string , indent?: number |
show_device_info | Get system information | None |
normalize_email | Normalize email addresses | email: string |
lookup_http_status | HTTP status reference | code?: number |
lookup_mime_types | Look up MIME types | input: string , lookupType?: 'extension-to-mime' | 'mime-to-extension' |
lookup_port_numbers | Look up port number assignments | port?: number , service?: string |
convert_rem_px | Convert between REM and PX units | value: number , conversion: 'rem-to-px' | 'px-to-rem' , baseFontSize?: number |
Built with TypeScript, Zod validation, and MCP SDK for robust, type-safe operation.
This project was developed using VS Code, Copilot Chat Agent, Playwright MCP, and the Claude Sonnet 4 Model, demonstrating the power of AI-assisted software development:
Key AI Contributions:
This showcases how AI can accelerate development while maintaining code quality, proper architecture, and comprehensive testing.
src/tools/
index.ts
npm run build
src/
├── index.ts # Main MCP server with dynamic tool loading
└── tools/ # Modular tool categories
├── ansible/ # 5 Ansible automation tools
├── color/ # 2 Color conversion tools
├── crypto/ # 9 Cryptographic & security tools
├── dataFormat/ # 12 Data format conversion tools
├── development/ # 6 Development utilities
├── docker/ # 5 Docker & containerization tools
├── encoding/ # 8 Encoding/decoding tools
├── forensic/ # 3 Digital forensics tools
├── idGenerators/ # 4 ID & code generation tools
├── math/ # 6 Mathematical operation tools
├── network/ # 23 Network utilities
├── physics/ # 3 Physics calculation tools
├── text/ # 19 Text manipulation tools
└── utility/ # 7 General utility tools
Contributions are welcome! Please follow the guidelines below:
This project uses Conventional Commits for clear, consistent commit messages.
Version Management:
Examples:
git commit -m "feat: add new encryption tool" # → minor version bump
git commit -m "fix: resolve base64 decoding issue" # → patch version bump
git commit -m "docs: improve README examples" # → patch version bump
git commit -m "feat!: breaking API change" # → major version bump
# Version is automatically bumped and committed by git hooks
# No manual npm version commands needed!
git push
📖 See COMMIT_TEMPLATE_SETUP.md for setup instructions.
./setup-commit-template.sh
(recommended)The CI/CD pipeline will automatically:
MIT License - see LICENSE for details.
Inspired by IT Tools - online tools for developers.
This project incorporates select tools from the @sharevb fork which extends IT Tools with additional utilities and enhancements.
FAQs
Full MCP 2025-06-18 compliant server with 121+ IT tools, logging, ping, progress tracking, cancellation, and sampling utilities
The npm package it-tools-mcp receives a total of 971 weekly downloads. As such, it-tools-mcp popularity was classified as not popular.
We found that it-tools-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.