Skip to main content
Glama

nmap_scan

Perform comprehensive port scanning to identify open ports and services on target systems for security assessment and penetration testing.

Instructions

Perform comprehensive port scan using Nmap

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetYesTarget IP or domain
scan_typeNoType of scan to perform

Implementation Reference

  • Core handler function that executes Nmap scans with configurable scan types, parses XML output, and returns structured ScanResult.
    async nmapScan(target: string, scanType: string = 'quick'): Promise<ScanResult> { try { let nmapArgs = ''; switch (scanType) { case 'quick': nmapArgs = '-F -sV'; break; case 'full': nmapArgs = '-p- -sV -sC'; break; case 'stealth': nmapArgs = '-sS -T2 -f'; break; case 'aggressive': nmapArgs = '-A -T4'; break; default: nmapArgs = '-F -sV'; } const command = `nmap ${nmapArgs} -oX - ${target}`; console.error(`Executing: ${command}`); const { stdout, stderr } = await execAsync(command, { timeout: 300000 }); // 5 min timeout // Parse XML output const ports = this.parseNmapXML(stdout); return { target, timestamp: new Date().toISOString(), tool: 'nmap', results: { scan_type: scanType, open_ports: ports, raw_output: stdout }, status: 'success' }; } catch (error) { return { target, timestamp: new Date().toISOString(), tool: 'nmap', results: {}, status: 'error', error: error instanceof Error ? error.message : String(error) }; } }
  • Input schema definition for the nmap_scan tool, specifying required target and optional scan_type parameters.
    name: "nmap_scan", description: "Perform comprehensive port scan using Nmap", inputSchema: { type: "object", properties: { target: { type: "string", description: "Target IP or domain" }, scan_type: { type: "string", enum: ["quick", "full", "stealth", "aggressive"], description: "Type of scan to perform" } }, required: ["target"] } },
  • src/index.ts:505-506 (registration)
    Tool dispatch registration in the main CallToolRequestSchema handler switch statement.
    case "nmap_scan": return respond(await this.reconTools.nmapScan(args.target, args.scan_type || "quick"));
  • Output type definition (ScanResult interface) used by the nmapScan handler.
    export interface ScanResult { target: string; timestamp: string; tool: string; results: any; status: 'success' | 'error'; error?: string; }
  • Input validation logic for nmap_scan tool arguments, including target validation and scan_type enum check.
    case 'nmap_scan': this.validateNmapArgs(args); break; case 'nuclei_scan': this.validateNucleiArgs(args); break; case 'exploit_attempt': this.validateExploitArgs(args); break; // Add more tool-specific validations as needed } } private validateNmapArgs(args: any): void { if (args.target) { const validation = this.targetValidator.validateTarget(args.target); if (!validation.isValid) { throw new ValidationError(`Invalid nmap target: ${validation.error}`, 'INVALID_NMAP_TARGET'); } } const allowedScanTypes = ['quick', 'full', 'stealth', 'aggressive']; if (args.scan_type && !allowedScanTypes.includes(args.scan_type)) { throw new ValidationError('Invalid scan type', 'INVALID_SCAN_TYPE'); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adriyansyah-mf/mcp-pentest'

If you have feedback or need assistance with the MCP directory API, please join our Discord server