it-tools-mcp 3.0.12 → 3.0.14
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/build/tools/network.js +38 -16
- package/package.json +1 -1
package/build/tools/network.js
CHANGED
|
@@ -642,26 +642,48 @@ Common issues:
|
|
|
642
642
|
});
|
|
643
643
|
});
|
|
644
644
|
});
|
|
645
|
-
// telnet Tool (using
|
|
645
|
+
// telnet Tool (using net for raw TCP connectivity)
|
|
646
646
|
server.tool("telnet", "Test TCP connectivity to a host and port", {
|
|
647
647
|
target: z.string().describe("Host to connect to"),
|
|
648
648
|
port: z.number().describe("Port number")
|
|
649
649
|
}, async ({ target, port }) => {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
650
|
+
return new Promise(async (resolve) => {
|
|
651
|
+
try {
|
|
652
|
+
const net = (await import('net')).default;
|
|
653
|
+
const socket = new net.Socket();
|
|
654
|
+
let connected = false;
|
|
655
|
+
let banner = '';
|
|
656
|
+
socket.setTimeout(2000);
|
|
657
|
+
socket.connect(port, target, () => {
|
|
658
|
+
connected = true;
|
|
659
|
+
});
|
|
660
|
+
socket.on('data', (data) => {
|
|
661
|
+
banner += data.toString();
|
|
662
|
+
// If we get a banner, close immediately
|
|
663
|
+
socket.end();
|
|
664
|
+
});
|
|
665
|
+
socket.on('timeout', () => {
|
|
666
|
+
socket.destroy();
|
|
667
|
+
if (!connected) {
|
|
668
|
+
resolve({ content: [{ type: "text", text: `Telnet failed: Connection timed out` }] });
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
resolve({ content: [{ type: "text", text: `Telnet to ${target}:${port} succeeded.${banner ? '\nBanner: ' + banner.trim() : ''}` }] });
|
|
672
|
+
}
|
|
673
|
+
});
|
|
674
|
+
socket.on('error', (err) => {
|
|
675
|
+
resolve({ content: [{ type: "text", text: `Telnet failed: ${err.message}` }] });
|
|
676
|
+
});
|
|
677
|
+
socket.on('close', (hadError) => {
|
|
678
|
+
if (connected) {
|
|
679
|
+
resolve({ content: [{ type: "text", text: `Telnet to ${target}:${port} succeeded.${banner ? '\nBanner: ' + banner.trim() : ''}` }] });
|
|
680
|
+
}
|
|
681
|
+
});
|
|
682
|
+
}
|
|
683
|
+
catch (error) {
|
|
684
|
+
resolve({ content: [{ type: "text", text: `Telnet failed: ${error instanceof Error ? error.message : error}` }] });
|
|
685
|
+
}
|
|
686
|
+
});
|
|
665
687
|
});
|
|
666
688
|
// dig Tool (using dns.resolve)
|
|
667
689
|
server.tool("dig", "Perform DNS lookup with dig command", {
|