ping
Test network connectivity to a host by sending ICMP echo requests and receiving response data.
Instructions
Pings a host and returns the result
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | The hostname or URL to ping (e.g., 'google.com' or 'https://google.com') |
Implementation Reference
- src/createServer.ts:21-49 (handler)The handler function that executes the ping logic: extracts hostname from URL if provided, runs platform-specific ping command using execAsync (promisified child_process.exec), parses output, and returns success or error messages.execute: async (args) => { try { // Extract hostname from URL if needed let hostname = args.host; // If it's a full URL, extract the hostname if (hostname.startsWith("http://") || hostname.startsWith("https://")) { const url = new URL(hostname); hostname = url.hostname; } // Execute ping command (platform-specific) const isWindows = process.platform === "win32"; const pingCommand = isWindows ? `ping -n 4 ${hostname}` : `ping -c 4 ${hostname}`; const { stderr, stdout } = await execAsync(pingCommand); if (stderr) { return `Failed to ping ${hostname}:\n${stderr}`; } return `Ping results for ${hostname}:\n\n${stdout}`; } catch (error) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return `Failed to ping ${args.host}:\n${errorMessage}`; }
- src/createServer.ts:52-58 (schema)Zod schema defining the single input parameter 'host' as a string, with a description allowing hostname or full URL.parameters: z.object({ host: z .string() .describe( "The hostname or URL to ping (e.g., 'google.com' or 'https://google.com')", ), }),
- src/createServer.ts:14-59 (registration)Registration of the 'ping' tool using FastMCP's server.addTool method, including name, description, annotations (title 'Ping'), execute handler, and parameters schema.server.addTool({ annotations: { openWorldHint: false, readOnlyHint: true, title: "Ping", }, description: "Pings a host and returns the result", execute: async (args) => { try { // Extract hostname from URL if needed let hostname = args.host; // If it's a full URL, extract the hostname if (hostname.startsWith("http://") || hostname.startsWith("https://")) { const url = new URL(hostname); hostname = url.hostname; } // Execute ping command (platform-specific) const isWindows = process.platform === "win32"; const pingCommand = isWindows ? `ping -n 4 ${hostname}` : `ping -c 4 ${hostname}`; const { stderr, stdout } = await execAsync(pingCommand); if (stderr) { return `Failed to ping ${hostname}:\n${stderr}`; } return `Ping results for ${hostname}:\n\n${stdout}`; } catch (error) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return `Failed to ping ${args.host}:\n${errorMessage}`; } }, name: "ping", parameters: z.object({ host: z .string() .describe( "The hostname or URL to ping (e.g., 'google.com' or 'https://google.com')", ), }), });