it-tools-mcp 3.0.24 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.dockerhub.md +23 -18
  2. package/README.md +77 -34
  3. package/build/index.js +51 -24
  4. package/build/tools/ansible/ansible-inventory-generator/index.js +212 -0
  5. package/build/tools/ansible/ansible-playbook-validator/index.js +128 -0
  6. package/build/tools/ansible/ansible-reference/index.js +393 -0
  7. package/build/tools/ansible/ansible-vault-decrypt/index.js +137 -0
  8. package/build/tools/ansible/ansible-vault-encrypt/index.js +79 -0
  9. package/build/tools/color/color-hex-to-rgb/index.js +29 -0
  10. package/build/tools/{color.js → color/color-rgb-to-hex/index.js} +1 -27
  11. package/build/tools/crypto/basic-auth-generator/index.js +45 -0
  12. package/build/tools/crypto/bcrypt-hash/index.js +67 -0
  13. package/build/tools/crypto/bip39-generate/index.js +53 -0
  14. package/build/tools/crypto/hash-md5/index.js +19 -0
  15. package/build/tools/crypto/hash-sha1/index.js +19 -0
  16. package/build/tools/crypto/hash-sha256/index.js +19 -0
  17. package/build/tools/crypto/hash-sha512/index.js +19 -0
  18. package/build/tools/crypto/hmac-generator/index.js +37 -0
  19. package/build/tools/crypto/jwt-decode/index.js +41 -0
  20. package/build/tools/crypto/otp-code-generator/index.js +67 -0
  21. package/build/tools/crypto/password-generate/index.js +54 -0
  22. package/build/tools/crypto/token-generator/index.js +75 -0
  23. package/build/tools/dataFormat/html-to-markdown/index.js +34 -0
  24. package/build/tools/dataFormat/json-diff/index.js +94 -0
  25. package/build/tools/dataFormat/json-format/index.js +100 -0
  26. package/build/tools/dataFormat/json-minify/index.js +29 -0
  27. package/build/tools/dataFormat/json-to-csv/index.js +34 -0
  28. package/build/tools/dataFormat/json-to-toml/index.js +30 -0
  29. package/build/tools/dataFormat/markdown-to-html/index.js +32 -0
  30. package/build/tools/dataFormat/phone-format/index.js +35 -0
  31. package/build/tools/dataFormat/sql-format/index.js +37 -0
  32. package/build/tools/dataFormat/toml-to-json/index.js +29 -0
  33. package/build/tools/dataFormat/xml-format/index.js +44 -0
  34. package/build/tools/dataFormat/yaml-format/index.js +58 -0
  35. package/build/tools/{development.js → development/crontab-generate/index.js} +1 -129
  36. package/build/tools/development/html-prettifier/index.js +47 -0
  37. package/build/tools/development/javascript-prettifier/index.js +74 -0
  38. package/build/tools/development/list-converter/index.js +62 -0
  39. package/build/tools/development/markdown-toc-generator/index.js +53 -0
  40. package/build/tools/development/regex-tester/index.js +69 -0
  41. package/build/tools/docker/docker-compose-to-docker-run/index.js +138 -0
  42. package/build/tools/docker/docker-compose-validator/index.js +125 -0
  43. package/build/tools/docker/docker-reference/index.js +188 -0
  44. package/build/tools/docker/docker-run-to-docker-compose/index.js +117 -0
  45. package/build/tools/docker/traefik-compose-generator/index.js +98 -0
  46. package/build/tools/encoding/base64-decode/index.js +28 -0
  47. package/build/tools/encoding/base64-encode/index.js +16 -0
  48. package/build/tools/encoding/html-decode/index.js +21 -0
  49. package/build/tools/encoding/html-encode/index.js +21 -0
  50. package/build/tools/encoding/html-entities-extended/index.js +72 -0
  51. package/build/tools/encoding/text-to-binary/index.js +51 -0
  52. package/build/tools/encoding/url-decode/index.js +28 -0
  53. package/build/tools/encoding/url-encode/index.js +16 -0
  54. package/build/tools/forensic/file-type-identifier/index.js +90 -0
  55. package/build/tools/forensic/safelink-decoder/index.js +54 -0
  56. package/build/tools/forensic/url-fanger/index.js +52 -0
  57. package/build/tools/idGenerators/qr-generate/index.js +76 -0
  58. package/build/tools/idGenerators/svg-placeholder-generator/index.js +59 -0
  59. package/build/tools/idGenerators/ulid-generate/index.js +34 -0
  60. package/build/tools/idGenerators/uuid-generate/index.js +14 -0
  61. package/build/tools/math/math-evaluate/index.js +33 -0
  62. package/build/tools/math/number-base-converter/index.js +46 -0
  63. package/build/tools/math/percentage-calculator/index.js +50 -0
  64. package/build/tools/math/roman-numeral-converter/index.js +76 -0
  65. package/build/tools/math/temperature-converter/index.js +59 -0
  66. package/build/tools/math/unix-timestamp-converter/index.js +55 -0
  67. package/build/tools/network/cat/index.js +15 -0
  68. package/build/tools/network/cidr-to-ip-range/index.js +108 -0
  69. package/build/tools/network/curl/index.js +35 -0
  70. package/build/tools/network/dig/index.js +19 -0
  71. package/build/tools/network/grep/index.js +18 -0
  72. package/build/tools/network/head/index.js +17 -0
  73. package/build/tools/network/iban-validate/index.js +83 -0
  74. package/build/tools/network/ip-range-to-cidr/index.js +88 -0
  75. package/build/tools/network/ip-subnet-calculator/index.js +102 -0
  76. package/build/tools/network/ipv4-subnet-calc/index.js +112 -0
  77. package/build/tools/network/ipv6-subnet-calculator/index.js +104 -0
  78. package/build/tools/network/ipv6-ula-generator/index.js +65 -0
  79. package/build/tools/network/mac-address-generate/index.js +68 -0
  80. package/build/tools/network/nslookup/index.js +18 -0
  81. package/build/tools/network/ping/index.js +20 -0
  82. package/build/tools/network/ps/index.js +22 -0
  83. package/build/tools/network/random-port/index.js +53 -0
  84. package/build/tools/network/scp/index.js +134 -0
  85. package/build/tools/network/ssh/index.js +83 -0
  86. package/build/tools/network/tail/index.js +16 -0
  87. package/build/tools/network/telnet/index.js +45 -0
  88. package/build/tools/network/top/index.js +14 -0
  89. package/build/tools/network/url-parse/index.js +52 -0
  90. package/build/tools/physics/angle-converter/index.js +73 -0
  91. package/build/tools/physics/energy-converter/index.js +72 -0
  92. package/build/tools/physics/power-converter/index.js +71 -0
  93. package/build/tools/text/ascii-art-text/index.js +112 -0
  94. package/build/tools/text/distinct-words/index.js +30 -0
  95. package/build/tools/text/emoji-search/index.js +76 -0
  96. package/build/tools/text/lorem-ipsum-generator/index.js +87 -0
  97. package/build/tools/text/numeronym-generator/index.js +37 -0
  98. package/build/tools/text/slugify-string/index.js +44 -0
  99. package/build/tools/text/string-obfuscator/index.js +49 -0
  100. package/build/tools/text/text-camelcase/index.js +20 -0
  101. package/build/tools/text/text-capitalize/index.js +16 -0
  102. package/build/tools/text/text-diff/index.js +72 -0
  103. package/build/tools/text/text-kebabcase/index.js +20 -0
  104. package/build/tools/text/text-lowercase/index.js +15 -0
  105. package/build/tools/text/text-pascalcase/index.js +18 -0
  106. package/build/tools/text/text-snakecase/index.js +20 -0
  107. package/build/tools/text/text-stats/index.js +29 -0
  108. package/build/tools/text/text-to-nato-alphabet/index.js +57 -0
  109. package/build/tools/text/text-to-unicode/index.js +50 -0
  110. package/build/tools/text/text-to-unicode-names/index.js +34 -0
  111. package/build/tools/text/text-uppercase/index.js +15 -0
  112. package/build/tools/utility/css-prettifier/index.js +70 -0
  113. package/build/tools/utility/device-info/index.js +44 -0
  114. package/build/tools/utility/email-normalizer/index.js +73 -0
  115. package/build/tools/utility/http-status-codes/index.js +173 -0
  116. package/build/tools/utility/mime-types/index.js +121 -0
  117. package/build/tools/utility/port-numbers/index.js +106 -0
  118. package/build/tools/utility/rem-px-converter/index.js +63 -0
  119. package/package.json +3 -3
  120. package/build/tools/crypto.js +0 -445
  121. package/build/tools/dataFormat.js +0 -535
  122. package/build/tools/encoding.js +0 -240
  123. package/build/tools/idGenerators.js +0 -180
  124. package/build/tools/math.js +0 -310
  125. package/build/tools/network.js +0 -939
  126. package/build/tools/text.js +0 -678
  127. package/build/tools/utility.js +0 -407
@@ -11,9 +11,7 @@
11
11
  [![Docker Platform](https://img.shields.io/badge/platform-linux%2Famd64%20%7C%20linux%2Farm64-blue)](https://hub.docker.com/r/wrenchpilot/it-tools-mcp)
12
12
  [![GitHub Stars](https://img.shields.io/github/stars/wrenchpilot/it-tools-mcp?style=social)](https://github.com/wrenchpilot/it-tools-mcp/stargazers)
13
13
 
14
- A comprehensive Model Context Protocol (MCP) server that provides access to **88 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.
15
-
16
- [![MCP Server Badge](https://glama.ai/mcp/servers/@wrenchpilot/it-tools-mcp/badge)](https://glama.ai/mcp/servers/@wrenchpilot/it-tools-mcp)
14
+ A comprehensive Model Context Protocol (MCP) server that provides access to **112 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.
17
15
 
18
16
  ## Using with VS Code
19
17
 
@@ -65,7 +63,7 @@ Add to your VS Code `settings.json`:
65
63
  }
66
64
  ```
67
65
 
68
- See the complete list of all 88 tools with detailed parameters on [GitHub](https://github.com/wrenchpilot/it-tools-mcp#available-tools)
66
+ See the complete list of all 112 tools with detailed parameters on [GitHub](https://github.com/wrenchpilot/it-tools-mcp#available-tools)
69
67
 
70
68
  ## 📸 Examples in Action
71
69
 
@@ -87,7 +85,7 @@ Built with **TypeScript**, **Zod** validation, and **MCP SDK** for robust, type-
87
85
 
88
86
  This project was developed using **VS Code**, **Copilot Chat Agent**, **Playwright MCP**, and the **Claude Sonnet 4 Model**, showcasing modern AI-assisted software development:
89
87
 
90
- - 🔧 **All 88 tools** designed and implemented with AI assistance
88
+ - 🔧 **All 112 tools** designed and implemented with AI assistance
91
89
  - 📦 **Complete Docker setup** with GitHub Actions CI/CD pipeline
92
90
  - 🔍 **Schema optimization** with systematic validation cleanup
93
91
  - 📚 **Comprehensive documentation** and tool catalogs
@@ -96,23 +94,29 @@ This project was developed using **VS Code**, **Copilot Chat Agent**, **Playwrig
96
94
 
97
95
  ```text
98
96
  src/
99
- ├── index.ts # Main MCP server
100
- └── tools/ # Tool modules by category
101
- ├── encoding.ts # Base64, URL, HTML encoding
102
- ├── crypto.ts # Hashing, JWT, passwords
103
- ├── dataFormat.ts # JSON, XML, YAML processing
104
- ├── text.ts # Text manipulation tools
105
- ├── network.ts # Network utilities
106
- ├── math.ts # Mathematical operations
107
- ├── idGenerators.ts # UUID, ULID, QR codes
108
- └── utility.ts # Color, MIME, HTTP tools
97
+ ├── index.ts # Main MCP server with dynamic tool loading
98
+ └── tools/ # Modular tool categories
99
+ ├── ansible/ # 5 Ansible automation tools
100
+ ├── color/ # 2 Color conversion tools
101
+ ├── crypto/ # 9 Cryptographic & security tools
102
+ ├── dataFormat/ # 12 Data format conversion tools
103
+ ├── development/ # 6 Development utilities
104
+ ├── docker/ # 5 Docker & containerization tools
105
+ ├── encoding/ # 8 Encoding/decoding tools
106
+ ├── forensic/ # 3 Digital forensics tools
107
+ ├── idGenerators/ # 4 ID & code generation tools
108
+ ├── math/ # 6 Mathematical operation tools
109
+ ├── network/ # 23 Network utilities
110
+ ├── physics/ # 3 Physics calculation tools
111
+ ├── text/ # 19 Text manipulation tools
112
+ └── utility/ # 7 General utility tools
109
113
  ```
110
114
 
111
115
  ### Adding New Tools
112
116
 
113
- 1. Choose/create a tool module in `src/tools/`
114
- 2. Define tool with input schema using Zod
115
- 3. Register in `src/index.ts`
117
+ 1. Create a tool directory in appropriate category under `src/tools/`
118
+ 2. Define tool with input schema using Zod in its `index.ts`
119
+ 3. Export registration function for dynamic loading
116
120
  4. Rebuild with `npm run build`
117
121
 
118
122
  ## 🤝 Contributing
@@ -128,3 +132,4 @@ MIT License - see [LICENSE](https://github.com/wrenchpilot/it-tools-mcp/blob/mas
128
132
  - **GitHub Repository**: [wrenchpilot/it-tools-mcp](https://github.com/wrenchpilot/it-tools-mcp)
129
133
  - **Complete Documentation**: [GitHub README](https://github.com/wrenchpilot/it-tools-mcp#readme)
130
134
  - **Inspired by**: [IT Tools](https://github.com/CorentinTh/it-tools) - online tools for developers
135
+ - **Enhanced by**: [sharevb fork](https://github.com/sharevb/it-tools) - incorporates select tools with additional utilities
package/README.md CHANGED
@@ -13,9 +13,7 @@
13
13
 
14
14
  > **📝 Note**: A condensed version of this README is automatically synced to [Docker Hub](https://hub.docker.com/r/wrenchpilot/it-tools-mcp) due to character limits.
15
15
 
16
- A comprehensive Model Context Protocol (MCP) server that provides access to 87 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.
17
-
18
- [![MCP Server Badge](https://glama.ai/mcp/servers/@wrenchpilot/it-tools-mcp/badge)](https://glama.ai/mcp/servers/@wrenchpilot/it-tools-mcp)
16
+ A comprehensive Model Context Protocol (MCP) server that provides access to 112 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.
19
17
 
20
18
  ## 📦 Installation & Setup
21
19
 
@@ -89,16 +87,22 @@ echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"base64-enc
89
87
 
90
88
  ## 🛠️ Tool Categories
91
89
 
92
- This MCP server provides **87 tools** across **8 categories**:
93
-
94
- - **🔧 Encoding & Decoding** (9 tools): Base64, URL, HTML entities, text-to-binary, Unicode
95
- - **📝 Data Format** (11 tools): JSON, XML, YAML, SQL, TOML, Markdown HTML conversion
96
- - **🔐 Security & Crypto** (12 tools): Hashing (MD5, SHA1-512), HMAC, JWT, bcrypt, passwords, tokens
97
- - **✨ Text Processing** (16 tools): Case conversion, stats, diff, ASCII art, NATO alphabet, slugify
98
- - **🌐 Network & System** (20 tools): IPv4/IPv6 subnets, URL parsing, MAC addresses, phone formatting, ps, top, cat, head, tail, grep, ping, nslookup, telnet, dig, ssh, random-port, mac-address-generate, ip/ipv6 calculators, curl
99
- - **🔢 Math & Calculations** (6 tools): Expression evaluation, base conversion, temperature, percentages
100
- - **🆔 ID & Code Generators** (4 tools: UUID, ULID, QR codes, SVG placeholders
101
- - **🛠️ Utility Tools** (9 tools): Color, MIME, HTTP, device info, email normalization, etc.
90
+ This MCP server provides **112 tools** across **14 categories**:
91
+
92
+ - **� Ansible Tools** (5 tools): Vault encryption/decryption, inventory parser, playbook validator, reference
93
+ - **🎨 Color Tools** (2 tools): HexRGB conversion
94
+ - **📝 Data Format** (12 tools): JSON, XML, YAML, SQL, TOML, Markdown ↔ HTML conversion, phone formatting
95
+ - **�️ Development Tools** (6 tools): Regex testing, cron generation, list conversion, code prettifiers, markdown TOC
96
+ - **🐳 Docker Tools** (5 tools): Compose validation, conversion tools, Traefik generator, reference
97
+ - **🔧 Encoding & Decoding** (8 tools): Base64, URL, HTML entities, text-to-binary
98
+ - **🔍 Forensic Tools** (3 tools): File type identification, safelink decoding, URL fanger
99
+ - **🆔 ID & Code Generators** (4 tools): UUID, ULID, QR codes, SVG placeholders
100
+ - **🔢 Math & Calculations** (6 tools): Expression evaluation, base conversion, temperature, percentages, Unix timestamps, Roman numerals
101
+ - **🌐 Network & System** (23 tools): IPv4/IPv6 subnets, URL parsing, MAC addresses, ps, top, cat, head, tail, grep, ping, nslookup, telnet, dig, ssh, scp, curl, IBAN validation
102
+ - **⚡ Physics** (3 tools): Angle, energy, and power unit conversions
103
+ - **🔐 Security & Crypto** (12 tools): Hashing (MD5, SHA1, SHA256, SHA512), HMAC, JWT, bcrypt, passwords, tokens, OTP, BIP39
104
+ - **✨ Text Processing** (19 tools): Case conversion, stats, diff, ASCII art, NATO alphabet, slugify, Unicode
105
+ - **🛠️ Utility Tools** (7 tools): Email normalization, MIME types, HTTP status codes, device info, CSS prettifier, rem/px converter
102
106
 
103
107
  ## 📸 Screenshot Examples
104
108
 
@@ -116,6 +120,15 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
116
120
 
117
121
  | Tool | Description | Parameters |
118
122
  | --------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
123
+ | **Ansible Tools** | | |
124
+ | `ansible-inventory-generator` | Generate Ansible inventory | `hosts: string[]`, `groups?: Record<string, string[]>`, `variables?: Record<string, any>` |
125
+ | `ansible-playbook-validator` | Validate Ansible playbook YAML | `playbook: string` |
126
+ | `ansible-reference` | Ansible syntax and module reference | `query?: string` |
127
+ | `ansible-vault-decrypt` | Decrypt Ansible Vault data | `data: string`, `password: string` |
128
+ | `ansible-vault-encrypt` | Encrypt data with Ansible Vault | `data: string`, `password: string` |
129
+ | **Color Tools** | | |
130
+ | `color-hex-to-rgb` | Convert HEX to RGB | `hex: string` |
131
+ | `color-rgb-to-hex` | Convert RGB to HEX | `r: number`, `g: number`, `b: number` |
119
132
  | **Data Format** | | |
120
133
  | `html-to-markdown` | Convert HTML to Markdown | `html: string` |
121
134
  | `json-diff` | Compare JSON objects | `json1: string`, `json2: string` |
@@ -131,8 +144,17 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
131
144
  | `yaml-format` | Format YAML | `yaml: string` |
132
145
  | **Development Tools** | | |
133
146
  | `crontab-generate` | Generate cron expressions | `minute?: string`, `hour?: string`, `dayOfMonth?: string`, `month?: string`, `dayOfWeek?: string` |
147
+ | `html-prettifier` | Format and prettify HTML | `html: string`, `indent?: number` |
148
+ | `javascript-prettifier` | Format and prettify JavaScript | `javascript: string`, `indent?: number` |
134
149
  | `list-converter` | Convert list formats | `list: string`, `inputFormat: 'comma' \| 'semicolon' \| 'newline' \| 'space' \| 'pipe'`, `outputFormat: 'comma' \| 'semicolon' \| 'newline' \| 'space' \| 'pipe' \| 'json' \| 'quoted'`, `trim?: boolean` |
150
+ | `markdown-toc-generator` | Generate table of contents for Markdown | `markdown: string`, `maxDepth?: number` |
135
151
  | `regex-tester` | Test regular expressions | `pattern: string`, `text: string`, `flags?: string` |
152
+ | **Docker Tools** | | |
153
+ | `docker-compose-to-docker-run` | Convert Compose to Docker run command | `compose: string`, `service?: string` |
154
+ | `docker-compose-validator` | Validate Docker Compose YAML | `compose: string` |
155
+ | `docker-reference` | Docker command and syntax reference | `query?: string` |
156
+ | `docker-run-to-docker-compose` | Convert Docker run to Compose | `command: string` |
157
+ | `traefik-compose-generator` | Generate Traefik Docker Compose | `domain: string`, `service: string`, `port?: number`, `network?: string` |
136
158
  | **Encoding & Decoding** | | |
137
159
  | `base64-decode` | Decode Base64 text | `text: string` |
138
160
  | `base64-encode` | Encode text to Base64 | `text: string` |
@@ -143,6 +165,10 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
143
165
  | `text-to-unicode` | Convert text to Unicode and vice versa | `input: string`, `operation: 'encode' \| 'decode'` |
144
166
  | `url-decode` | URL decode text | `text: string` |
145
167
  | `url-encode` | URL encode text | `text: string` |
168
+ | **Forensic Tools** | | |
169
+ | `file-type-identifier` | Identify file type from content | `data: string`, `filename?: string` |
170
+ | `safelink-decoder` | Decode Microsoft SafeLinks | `url: string` |
171
+ | `url-fanger` | Fang and defang URLs for analysis | `text: string`, `operation: 'fang' \| 'defang'` |
146
172
  | **ID & Code Generators** | | |
147
173
  | `qr-generate` | Generate QR codes for any content | `text: string`, `size?: number` - Supports URLs, WiFi (WIFI:T:WPA;S:network;P:password;;), contact info, etc. |
148
174
  | `svg-placeholder-generator` | Generate SVG placeholder | `width?: number`, `height?: number`, `text?: string`, `backgroundColor?: string`, `textColor?: string` |
@@ -157,25 +183,29 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
157
183
  | `unix-timestamp-converter` | Convert timestamps | `input: string` |
158
184
  | **Network & System** | | |
159
185
  | `cat` | Display file content | `file: string` |
160
- | `curl` | HTTP client (GET, POST, etc.) | `url: string`, `method?: string`, `headers?: Record<string, string>`, `body?: string` |
186
+ | `curl` | HTTP client (GET, POST, etc.) | `url: string`, `method?: string`, `headers?: Record<string, string>`, `body?: string` |
161
187
  | `dig` | DNS query (custom type) | `target: string`, `type?: string` |
162
188
  | `grep` | Search for pattern in file | `file: string`, `pattern: string` |
163
189
  | `head` | Show first N lines of file | `file: string`, `lines?: number` |
164
- | `iban-validate` | Validate IBAN | `iban: string` |
190
+ | `iban-validate` | Validate IBAN | `iban: string` |
165
191
  | `ip-subnet-calculator` | Calculate IPv4 subnet | `ip: string`, `cidr: number` |
166
192
  | `ipv4-subnet-calc` | Enhanced IPv4 subnet calc | `cidr: string` |
167
193
  | `ipv6-ula-generator` | Generate IPv6 ULA | `globalId?: string` |
168
- | `mac-address-generate` | Generate MAC address | `prefix?: string`, `separator?: ':' \| '-'` |
194
+ | `mac-address-generate` | Generate MAC address | `prefix?: string`, `separator?: ':' \| '-'` |
169
195
  | `nslookup` | DNS lookup (A/AAAA/CNAME) | `target: string` |
170
196
  | `ping` | Ping a host | `target: string`, `count?: number` |
171
197
  | `ps` | List running processes | None |
172
198
  | `random-port` | Generate random ports | `count?: number`, `min?: number`, `max?: number`, `exclude?: number[]` |
173
- | `scp` | Copy files to/from remote host (SFTP) | `target: string`, `user: string`, `direction: 'upload'\|'download'`, `localPath: string`, `remotePath: string`, `privateKey?: string` |
199
+ | `scp` | Copy files to/from remote host (SFTP) | `target: string`, `user: string`, `direction: 'upload'\|'download'`, `localPath: string`, `remotePath: string`, `privateKey?: string` |
174
200
  | `ssh` | SSH command execution | `target: string`, `user: string`, `command: string` |
175
201
  | `tail` | Show last N lines of file | `file: string`, `lines?: number` |
176
202
  | `telnet` | Test TCP connectivity | `target: string`, `port: number` |
177
203
  | `top` | Show top processes (by CPU) | None |
178
204
  | `url-parse` | Parse URL components | `url: string` |
205
+ | **Physics** | | |
206
+ | `angle-converter` | Convert angle units | `value: number`, `from: 'degrees' \| 'radians' \| 'gradians'`, `to: 'degrees' \| 'radians' \| 'gradians'` |
207
+ | `energy-converter` | Convert energy units | `value: number`, `from: 'joules' \| 'calories' \| 'kwh' \| 'btu'`, `to: 'joules' \| 'calories' \| 'kwh' \| 'btu'` |
208
+ | `power-converter` | Convert power units | `value: number`, `from: 'watts' \| 'kilowatts' \| 'horsepower' \| 'btu_per_hour'`, `to: 'watts' \| 'kilowatts' \| 'horsepower' \| 'btu_per_hour'` |
179
209
  | **Security & Crypto** | | |
180
210
  | `basic-auth-generator` | Generate Basic Auth header | `username: string`, `password: string` |
181
211
  | `bcrypt-hash` | Generate/verify bcrypt hash | `password: string`, `rounds?: number`, `hash?: string` |
@@ -191,6 +221,7 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
191
221
  | `token-generator` | Generate secure token | `length?: number`, `charset?: 'alphanumeric' \| 'hex' \| 'base64' \| 'custom'`, `customChars?: string` |
192
222
  | **Text Processing** | | |
193
223
  | `ascii-art-text` | Generate ASCII art | `text: string`, `font?: string` (supports 295+ figlet fonts) |
224
+ | `distinct-words` | Extract unique words from text | `text: string`, `caseSensitive?: boolean` |
194
225
  | `emoji-search` | Search emojis | `query: string` |
195
226
  | `lorem-ipsum-generator` | Generate Lorem Ipsum | `type?: 'words' \| 'sentences' \| 'paragraphs'`, `count?: number` |
196
227
  | `numeronym-generator` | Generate numeronyms | `text: string` |
@@ -205,14 +236,16 @@ Examples of using the IT Tools MCP server with VS Code Copilot Chat for secure p
205
236
  | `text-snakecase` | Convert to snake_case | `text: string` |
206
237
  | `text-stats` | Get text statistics | `text: string` |
207
238
  | `text-to-nato-alphabet` | Convert to NATO alphabet | `text: string` |
239
+ | `text-to-unicode-names` | Convert text to Unicode character names | `text: string` |
208
240
  | `text-uppercase` | Convert to uppercase | `text: string` |
209
241
  | **Utility Tools** | | |
210
- | `color-hex-to-rgb` | Convert HEX to RGB | `hex: string` |
211
- | `color-rgb-to-hex` | Convert RGB to HEX | `r: number`, `g: number`, `b: number` |
242
+ | `css-prettifier` | Format and prettify CSS | `css: string`, `indent?: number` |
212
243
  | `device-info` | Get system information | None |
213
244
  | `email-normalizer` | Normalize email addresses | `email: string` |
214
245
  | `http-status-codes` | HTTP status reference | `code?: number` |
215
246
  | `mime-types` | Look up MIME types | `input: string`, `lookupType?: 'extension-to-mime' \| 'mime-to-extension'` |
247
+ | `port-numbers` | Look up port number assignments | `port?: number`, `service?: string` |
248
+ | `rem-px-converter` | Convert between REM and PX units | `value: number`, `conversion: 'rem-to-px' \| 'px-to-rem'`, `baseFontSize?: number` |
216
249
 
217
250
  ## 🏗️ Architecture & Development
218
251
 
@@ -223,14 +256,14 @@ Built with **TypeScript**, **Zod** validation, and **MCP SDK** for robust, type-
223
256
  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:
224
257
 
225
258
  - **Intelligent Code Generation**: Claude Sonnet analyzed requirements and generated comprehensive tool implementations
226
- - **Schema Validation**: Automatically identified and resolved JSON schema validation issues across 75 tools
259
+ - **Schema Validation**: Automatically identified and resolved JSON schema validation issues across 112 tools
227
260
  - **Docker Optimization**: Created production-ready Docker workflows and multi-stage builds
228
261
  - **Documentation**: Generated comprehensive README with examples and tool reference tables
229
262
  - **Testing**: Implemented robust error handling and validation throughout the codebase
230
263
 
231
264
  **Key AI Contributions:**
232
265
 
233
- - 🔧 **Tool Implementation**: All 75 tools designed and implemented with AI assistance
266
+ - 🔧 **Tool Implementation**: All 112 tools designed and implemented with AI assistance
234
267
  - 📦 **Docker Setup**: Complete containerization with GitHub Actions CI/CD pipeline
235
268
  - 🔍 **Schema Cleanup**: Systematic removal of unsupported Zod keywords from all tool definitions
236
269
  - 📚 **Documentation**: Comprehensive README with usage examples and tool catalogs
@@ -240,25 +273,31 @@ This showcases how AI can accelerate development while maintaining code quality,
240
273
 
241
274
  ### Adding New Tools
242
275
 
243
- 1. Choose/create a tool module in `src/tools/`
244
- 2. Define tool with input schema using Zod
245
- 3. Register in `src/index.ts`
276
+ 1. Create a tool directory in appropriate category under `src/tools/`
277
+ 2. Define tool with input schema using Zod in its `index.ts`
278
+ 3. Export registration function for dynamic loading
246
279
  4. Rebuild with `npm run build`
247
280
 
248
281
  ### Project Structure
249
282
 
250
283
  ```text
251
284
  src/
252
- ├── index.ts # Main MCP server
253
- └── tools/ # Tool modules by category
254
- ├── encoding.ts # Base64, URL, HTML encoding
255
- ├── crypto.ts # Hashing, JWT, passwords
256
- ├── dataFormat.ts # JSON, XML, YAML processing
257
- ├── text.ts # Text manipulation tools
258
- ├── network.ts # Network utilities
259
- ├── math.ts # Mathematical operations
260
- ├── idGenerators.ts # UUID, ULID, QR codes
261
- └── utility.ts # Color, MIME, HTTP tools
285
+ ├── index.ts # Main MCP server with dynamic tool loading
286
+ └── tools/ # Modular tool categories
287
+ ├── ansible/ # 5 Ansible automation tools
288
+ ├── color/ # 2 Color conversion tools
289
+ ├── crypto/ # 9 Cryptographic & security tools
290
+ ├── dataFormat/ # 12 Data format conversion tools
291
+ ├── development/ # 6 Development utilities
292
+ ├── docker/ # 5 Docker & containerization tools
293
+ ├── encoding/ # 8 Encoding/decoding tools
294
+ ├── forensic/ # 3 Digital forensics tools
295
+ ├── idGenerators/ # 4 ID & code generation tools
296
+ ├── math/ # 6 Mathematical operation tools
297
+ ├── network/ # 23 Network utilities
298
+ ├── physics/ # 3 Physics calculation tools
299
+ ├── text/ # 19 Text manipulation tools
300
+ └── utility/ # 7 General utility tools
262
301
  ```
263
302
 
264
303
  ## 🤝 Contributing
@@ -270,6 +309,7 @@ Contributions are welcome! Please follow the guidelines below:
270
309
  This project uses **Conventional Commits** for clear, consistent commit messages.
271
310
 
272
311
  **Version Management:**
312
+
273
313
  - 🔧 **Manual version bumping** - Update `package.json` when you want to release
274
314
  - 🤖 **Automatic publishing** - CI/CD detects changes and publishes automatically
275
315
  - 🏷️ **Git tags** - Created automatically based on package.json version
@@ -298,6 +338,7 @@ git push
298
338
  6. Submit a Pull Request
299
339
 
300
340
  The CI/CD pipeline will automatically:
341
+
301
342
  - ✅ Build and test your changes
302
343
  - 🏷️ Bump version based on commit messages (on merge to main)
303
344
  - 📦 Publish to Docker Hub and NPM
@@ -310,3 +351,5 @@ MIT License - see [LICENSE](LICENSE) for details.
310
351
  ## 🔗 Related
311
352
 
312
353
  Inspired by [IT Tools](https://github.com/CorentinTh/it-tools) - online tools for developers.
354
+
355
+ This project incorporates select tools from the [@sharevb fork](https://github.com/sharevb/it-tools) which extends IT Tools with additional utilities and enhancements.
package/build/index.js CHANGED
@@ -4,6 +4,9 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
4
4
  import { z } from "zod";
5
5
  import fs from 'fs';
6
6
  import path from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
7
10
  /**
8
11
  * Security utilities for IT Tools MCP Server
9
12
  */
@@ -221,24 +224,49 @@ const server = new McpServer({
221
224
  tools: {},
222
225
  },
223
226
  });
227
+ // Helper function to dynamically load modular tools from a category directory
228
+ async function loadModularTools(server, category) {
229
+ const toolsDir = path.join(__dirname, 'tools', category);
230
+ if (!fs.existsSync(toolsDir)) {
231
+ console.warn(`Category directory does not exist: ${toolsDir}`);
232
+ return;
233
+ }
234
+ const toolDirs = fs.readdirSync(toolsDir, { withFileTypes: true })
235
+ .filter(dirent => dirent.isDirectory())
236
+ .map(dirent => dirent.name);
237
+ for (const toolDir of toolDirs) {
238
+ const toolPath = path.join(toolsDir, toolDir, 'index.js');
239
+ if (fs.existsSync(toolPath)) {
240
+ try {
241
+ const toolModule = await import(`./${path.relative(__dirname, toolPath).replace(/\\/g, '/')}`);
242
+ // Find the register function in the module
243
+ const registerFunction = Object.values(toolModule).find((fn) => typeof fn === 'function' && fn.name.startsWith('register'));
244
+ if (registerFunction) {
245
+ registerFunction(server);
246
+ }
247
+ else {
248
+ console.warn(`No register function found in ${toolPath}`);
249
+ }
250
+ }
251
+ catch (error) {
252
+ console.error(`Failed to load tool ${category}/${toolDir}:`, error);
253
+ }
254
+ }
255
+ else {
256
+ console.warn(`Tool index file does not exist: ${toolPath}`);
257
+ }
258
+ }
259
+ }
224
260
  // Register all tool modules (dynamically for faster startup, with per-module timing)
225
261
  async function registerAllTools(server) {
226
- const modules = [
227
- { name: 'encoding', fn: () => import('./tools/encoding.js').then(m => m.registerEncodingTools(server)) },
228
- { name: 'crypto', fn: () => import('./tools/crypto.js').then(m => m.registerCryptoTools(server)) },
229
- { name: 'dataFormat', fn: () => import('./tools/dataFormat.js').then(m => m.registerDataFormatTools(server)) },
230
- { name: 'text', fn: () => import('./tools/text.js').then(m => m.registerTextTools(server)) },
231
- { name: 'idGenerators', fn: () => import('./tools/idGenerators.js').then(m => m.registerIdGeneratorTools(server)) },
232
- { name: 'network', fn: () => import('./tools/network.js').then(m => m.registerNetworkTools(server)) },
233
- { name: 'math', fn: () => import('./tools/math.js').then(m => m.registerMathTools(server)) },
234
- { name: 'utility', fn: () => import('./tools/utility.js').then(m => m.registerUtilityTools(server)) },
235
- { name: 'development', fn: () => import('./tools/development.js').then(m => m.registerDevelopmentTools(server)) },
236
- { name: 'color', fn: () => import('./tools/color.js').then(m => m.registerColorTools(server)) },
262
+ // All categories to load modularly
263
+ const categories = [
264
+ 'docker', 'ansible', 'color', 'encoding', 'idGenerators',
265
+ 'crypto', 'dataFormat', 'text', 'network', 'math',
266
+ 'utility', 'development', 'forensic', 'physics'
237
267
  ];
238
- for (const mod of modules) {
239
- console.time(`register:${mod.name}`);
240
- await mod.fn();
241
- console.timeEnd(`register:${mod.name}`);
268
+ for (const category of categories) {
269
+ await loadModularTools(server, category);
242
270
  }
243
271
  }
244
272
  // Add resource monitoring tool
@@ -261,16 +289,17 @@ server.tool("system-info", "Get system resource usage and server information", {
261
289
  });
262
290
  // Run the server
263
291
  async function main() {
264
- console.time("Tool registration");
265
292
  await registerAllTools(server);
266
- console.timeEnd("Tool registration");
267
293
  const transport = new StdioServerTransport();
268
- console.time("Server connect");
269
294
  await server.connect(transport);
270
- console.timeEnd("Server connect");
271
- // Log startup with resource info
272
- console.error("IT Tools MCP Server running on stdio");
273
- console.error("Resource usage:", JSON.stringify(getResourceUsage(), null, 2));
295
+ // Log startup (stderr only, no resource usage)
296
+ if (process.env.NODE_ENV === 'test') {
297
+ console.error("IT Tools MCP Server running on stdio");
298
+ // Exit after stdin closes (for test automation)
299
+ process.stdin.on('end', () => {
300
+ setTimeout(() => process.exit(0), 100);
301
+ });
302
+ }
274
303
  // Only start periodic monitoring in production, not in tests
275
304
  if (process.env.NODE_ENV !== 'test') {
276
305
  // Periodic resource monitoring (every 5 minutes)
@@ -281,9 +310,7 @@ async function main() {
281
310
  }
282
311
  }, 5 * 60 * 1000);
283
312
  }
284
- console.timeEnd("Total startup");
285
313
  }
286
- console.time("Total startup");
287
314
  main().catch((error) => {
288
315
  console.error("Fatal error in main():", error);
289
316
  process.exit(1);