Skip to main content
Glama
mohdhaji87

Nmap MCP Server

by mohdhaji87

nmap_os_detection

Detect operating systems on targeted networks using advanced OS fingerprinting techniques, enabling precise identification for security analysis and network management.

Instructions

Perform operating system detection scan

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
max_retriesNo
portsNocommon
targetsYes

Implementation Reference

  • The handler function that implements the tool logic: constructs Nmap command for OS detection using -O flag and --osscan-retries, executes via run_nmap_command helper, and returns stdout or error message.
    async def nmap_os_detection( targets: str, ports: str = "common", max_retries: int = 2 ) -> str: """Perform operating system detection scan.""" args = ["-O", f"--osscan-retries={max_retries}", "-p", ports, targets] result = run_nmap_command(args) if result["success"]: return f"OS detection scan completed:\n\n{result['stdout']}" else: return f"OS detection scan failed:\n\n{result['stderr']}"
  • server.py:140-143 (registration)
    Registers the nmap_os_detection tool with the FastMCP app using the @app.tool decorator, providing the tool name and description.
    @app.tool( name="nmap_os_detection", description="Perform operating system detection scan" )
  • Shared helper function used by all Nmap tools, including nmap_os_detection, to execute subprocess nmap commands safely with timeout and error handling.
    def run_nmap_command(args: List[str], timeout: int = 300) -> Dict[str, Any]: """ Execute an nmap command and return the results. Args: args: List of nmap command arguments timeout: Command timeout in seconds Returns: Dictionary containing command output, error, and exit code """ try: # Construct the full nmap command cmd = ["nmap"] + args logger.info(f"Executing nmap command: {' '.join(cmd)}") # Run the command with timeout result = subprocess.run( cmd, capture_output=True, text=True, timeout=timeout, check=False ) return { "stdout": result.stdout, "stderr": result.stderr, "exit_code": result.returncode, "success": result.returncode == 0 } except subprocess.TimeoutExpired: return { "stdout": "", "stderr": f"Command timed out after {timeout} seconds", "exit_code": -1, "success": False } except FileNotFoundError: return { "stdout": "", "stderr": "nmap command not found. Please ensure nmap is installed and in PATH", "exit_code": -1, "success": False } except Exception as e: return { "stdout": "", "stderr": f"Error executing nmap command: {str(e)}", "exit_code": -1, "success": False }

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/mohdhaji87/Nmap-MCP-Server'

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