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.
- package/README.dockerhub.md +23 -18
- package/README.md +77 -34
- package/build/index.js +51 -24
- package/build/tools/ansible/ansible-inventory-generator/index.js +212 -0
- package/build/tools/ansible/ansible-playbook-validator/index.js +128 -0
- package/build/tools/ansible/ansible-reference/index.js +393 -0
- package/build/tools/ansible/ansible-vault-decrypt/index.js +137 -0
- package/build/tools/ansible/ansible-vault-encrypt/index.js +79 -0
- package/build/tools/color/color-hex-to-rgb/index.js +29 -0
- package/build/tools/{color.js → color/color-rgb-to-hex/index.js} +1 -27
- package/build/tools/crypto/basic-auth-generator/index.js +45 -0
- package/build/tools/crypto/bcrypt-hash/index.js +67 -0
- package/build/tools/crypto/bip39-generate/index.js +53 -0
- package/build/tools/crypto/hash-md5/index.js +19 -0
- package/build/tools/crypto/hash-sha1/index.js +19 -0
- package/build/tools/crypto/hash-sha256/index.js +19 -0
- package/build/tools/crypto/hash-sha512/index.js +19 -0
- package/build/tools/crypto/hmac-generator/index.js +37 -0
- package/build/tools/crypto/jwt-decode/index.js +41 -0
- package/build/tools/crypto/otp-code-generator/index.js +67 -0
- package/build/tools/crypto/password-generate/index.js +54 -0
- package/build/tools/crypto/token-generator/index.js +75 -0
- package/build/tools/dataFormat/html-to-markdown/index.js +34 -0
- package/build/tools/dataFormat/json-diff/index.js +94 -0
- package/build/tools/dataFormat/json-format/index.js +100 -0
- package/build/tools/dataFormat/json-minify/index.js +29 -0
- package/build/tools/dataFormat/json-to-csv/index.js +34 -0
- package/build/tools/dataFormat/json-to-toml/index.js +30 -0
- package/build/tools/dataFormat/markdown-to-html/index.js +32 -0
- package/build/tools/dataFormat/phone-format/index.js +35 -0
- package/build/tools/dataFormat/sql-format/index.js +37 -0
- package/build/tools/dataFormat/toml-to-json/index.js +29 -0
- package/build/tools/dataFormat/xml-format/index.js +44 -0
- package/build/tools/dataFormat/yaml-format/index.js +58 -0
- package/build/tools/{development.js → development/crontab-generate/index.js} +1 -129
- package/build/tools/development/html-prettifier/index.js +47 -0
- package/build/tools/development/javascript-prettifier/index.js +74 -0
- package/build/tools/development/list-converter/index.js +62 -0
- package/build/tools/development/markdown-toc-generator/index.js +53 -0
- package/build/tools/development/regex-tester/index.js +69 -0
- package/build/tools/docker/docker-compose-to-docker-run/index.js +138 -0
- package/build/tools/docker/docker-compose-validator/index.js +125 -0
- package/build/tools/docker/docker-reference/index.js +188 -0
- package/build/tools/docker/docker-run-to-docker-compose/index.js +117 -0
- package/build/tools/docker/traefik-compose-generator/index.js +98 -0
- package/build/tools/encoding/base64-decode/index.js +28 -0
- package/build/tools/encoding/base64-encode/index.js +16 -0
- package/build/tools/encoding/html-decode/index.js +21 -0
- package/build/tools/encoding/html-encode/index.js +21 -0
- package/build/tools/encoding/html-entities-extended/index.js +72 -0
- package/build/tools/encoding/text-to-binary/index.js +51 -0
- package/build/tools/encoding/url-decode/index.js +28 -0
- package/build/tools/encoding/url-encode/index.js +16 -0
- package/build/tools/forensic/file-type-identifier/index.js +90 -0
- package/build/tools/forensic/safelink-decoder/index.js +54 -0
- package/build/tools/forensic/url-fanger/index.js +52 -0
- package/build/tools/idGenerators/qr-generate/index.js +76 -0
- package/build/tools/idGenerators/svg-placeholder-generator/index.js +59 -0
- package/build/tools/idGenerators/ulid-generate/index.js +34 -0
- package/build/tools/idGenerators/uuid-generate/index.js +14 -0
- package/build/tools/math/math-evaluate/index.js +33 -0
- package/build/tools/math/number-base-converter/index.js +46 -0
- package/build/tools/math/percentage-calculator/index.js +50 -0
- package/build/tools/math/roman-numeral-converter/index.js +76 -0
- package/build/tools/math/temperature-converter/index.js +59 -0
- package/build/tools/math/unix-timestamp-converter/index.js +55 -0
- package/build/tools/network/cat/index.js +15 -0
- package/build/tools/network/cidr-to-ip-range/index.js +108 -0
- package/build/tools/network/curl/index.js +35 -0
- package/build/tools/network/dig/index.js +19 -0
- package/build/tools/network/grep/index.js +18 -0
- package/build/tools/network/head/index.js +17 -0
- package/build/tools/network/iban-validate/index.js +83 -0
- package/build/tools/network/ip-range-to-cidr/index.js +88 -0
- package/build/tools/network/ip-subnet-calculator/index.js +102 -0
- package/build/tools/network/ipv4-subnet-calc/index.js +112 -0
- package/build/tools/network/ipv6-subnet-calculator/index.js +104 -0
- package/build/tools/network/ipv6-ula-generator/index.js +65 -0
- package/build/tools/network/mac-address-generate/index.js +68 -0
- package/build/tools/network/nslookup/index.js +18 -0
- package/build/tools/network/ping/index.js +20 -0
- package/build/tools/network/ps/index.js +22 -0
- package/build/tools/network/random-port/index.js +53 -0
- package/build/tools/network/scp/index.js +134 -0
- package/build/tools/network/ssh/index.js +83 -0
- package/build/tools/network/tail/index.js +16 -0
- package/build/tools/network/telnet/index.js +45 -0
- package/build/tools/network/top/index.js +14 -0
- package/build/tools/network/url-parse/index.js +52 -0
- package/build/tools/physics/angle-converter/index.js +73 -0
- package/build/tools/physics/energy-converter/index.js +72 -0
- package/build/tools/physics/power-converter/index.js +71 -0
- package/build/tools/text/ascii-art-text/index.js +112 -0
- package/build/tools/text/distinct-words/index.js +30 -0
- package/build/tools/text/emoji-search/index.js +76 -0
- package/build/tools/text/lorem-ipsum-generator/index.js +87 -0
- package/build/tools/text/numeronym-generator/index.js +37 -0
- package/build/tools/text/slugify-string/index.js +44 -0
- package/build/tools/text/string-obfuscator/index.js +49 -0
- package/build/tools/text/text-camelcase/index.js +20 -0
- package/build/tools/text/text-capitalize/index.js +16 -0
- package/build/tools/text/text-diff/index.js +72 -0
- package/build/tools/text/text-kebabcase/index.js +20 -0
- package/build/tools/text/text-lowercase/index.js +15 -0
- package/build/tools/text/text-pascalcase/index.js +18 -0
- package/build/tools/text/text-snakecase/index.js +20 -0
- package/build/tools/text/text-stats/index.js +29 -0
- package/build/tools/text/text-to-nato-alphabet/index.js +57 -0
- package/build/tools/text/text-to-unicode/index.js +50 -0
- package/build/tools/text/text-to-unicode-names/index.js +34 -0
- package/build/tools/text/text-uppercase/index.js +15 -0
- package/build/tools/utility/css-prettifier/index.js +70 -0
- package/build/tools/utility/device-info/index.js +44 -0
- package/build/tools/utility/email-normalizer/index.js +73 -0
- package/build/tools/utility/http-status-codes/index.js +173 -0
- package/build/tools/utility/mime-types/index.js +121 -0
- package/build/tools/utility/port-numbers/index.js +106 -0
- package/build/tools/utility/rem-px-converter/index.js +63 -0
- package/package.json +3 -3
- package/build/tools/crypto.js +0 -445
- package/build/tools/dataFormat.js +0 -535
- package/build/tools/encoding.js +0 -240
- package/build/tools/idGenerators.js +0 -180
- package/build/tools/math.js +0 -310
- package/build/tools/network.js +0 -939
- package/build/tools/text.js +0 -678
- package/build/tools/utility.js +0 -407
package/README.dockerhub.md
CHANGED
|
@@ -11,9 +11,7 @@
|
|
|
11
11
|
[](https://hub.docker.com/r/wrenchpilot/it-tools-mcp)
|
|
12
12
|
[](https://github.com/wrenchpilot/it-tools-mcp/stargazers)
|
|
13
13
|
|
|
14
|
-
A comprehensive Model Context Protocol (MCP) server that provides access to **
|
|
15
|
-
|
|
16
|
-
[](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
|
|
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
|
+
- 🔧 **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/ #
|
|
101
|
-
├──
|
|
102
|
-
├──
|
|
103
|
-
├──
|
|
104
|
-
├──
|
|
105
|
-
├──
|
|
106
|
-
├──
|
|
107
|
-
├──
|
|
108
|
-
|
|
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.
|
|
114
|
-
2. Define tool with input schema using Zod
|
|
115
|
-
3.
|
|
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
|
|
17
|
-
|
|
18
|
-
[](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 **
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
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): Hex ↔ RGB 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.)
|
|
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)
|
|
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
|
-
| `
|
|
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
|
|
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
|
|
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.
|
|
244
|
-
2. Define tool with input schema using Zod
|
|
245
|
-
3.
|
|
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/ #
|
|
254
|
-
├──
|
|
255
|
-
├──
|
|
256
|
-
├──
|
|
257
|
-
├──
|
|
258
|
-
├──
|
|
259
|
-
├──
|
|
260
|
-
├──
|
|
261
|
-
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
|
239
|
-
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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);
|