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.
@@ -642,26 +642,48 @@ Common issues:
642
642
  });
643
643
  });
644
644
  });
645
- // telnet Tool (using telnet-client)
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
- const connection = new TelnetClient();
651
- const params = {
652
- host: target,
653
- port: port,
654
- shellPrompt: /[$%#>]$/,
655
- timeout: 1500,
656
- };
657
- try {
658
- await connection.connect(params);
659
- await connection.end();
660
- return { content: [{ type: "text", text: `Telnet to ${target}:${port} succeeded.` }] };
661
- }
662
- catch (error) {
663
- return { content: [{ type: "text", text: `Telnet failed: ${error instanceof Error ? error.message : error}` }] };
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", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "it-tools-mcp",
3
- "version": "3.0.12",
3
+ "version": "3.0.14",
4
4
  "description": "MCP server providing access to various IT tools and utilities for developers",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",