{
  "markdown": "# Sounding\n\n**Network Diagnostics MCP Server**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-818CF8.svg)](LICENSE)\n\n*Probing what lies beneath the surface -- network diagnostics for AI tools.*\n\n---\n\n## What It Does\n\nSounding is a [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that gives AI assistants 14 network diagnostic tools. It handles the things you'd normally reach for `ping`, `dig`, `nmap`, or `openssl` to do -- but exposed as structured, validated MCP tool calls.\n\n## Tools\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `health` | Server version and status check | -- |\n| `ping` | TCP connect ping (port 80) with latency stats | `host`, `count` (1--100), `timeout` |\n| `traceroute` | Trace network route to a host | `host`, `max_hops` (1--64) |\n| `dns_lookup` | Resolve DNS records (A, AAAA, MX, CNAME, TXT, NS) | `domain`, `record_type`, `nameserver` |\n| `reverse_dns` | Reverse DNS lookup for an IP address | `ip` |\n| `port_check` | Check if a single TCP port is open | `host`, `port`, `timeout` |\n| `port_scan` | Scan common TCP ports (rate-limited, max 100) | `host`, `ports` |\n| `check_ssl_cert` | Inspect SSL/TLS certificate details and expiry | `host`, `port` |\n| `whois_lookup` | WHOIS domain registration lookup | `domain` |\n| `http_check` | HTTP request with status, timing, headers, size | `url` |\n| `subnet_scan` | Discover live hosts on a local subnet (RFC 1918 only) | `subnet` (CIDR, max /20) |\n| `get_public_ip` | Get the machine's public IP address | -- |\n| `speed_test` | Measure download speed (Mbps) and latency | -- |\n| `dns_propagation` | Check DNS propagation across public resolvers | `domain`, `record_type` |\n\n## Installation\n\nFrom PyPI:\n\n```bash\npip install sounding-mcp\n```\n\nOr isolated with pipx:\n\n```bash\npipx install sounding-mcp\n```\n\n## Usage\n\nRun the server directly (stdio transport):\n\n```bash\nsounding\n```\n\n### Claude Code\n\nRegister as a local MCP server:\n\n```bash\nclaude mcp add sounding -- sounding\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"sounding\": {\n      \"command\": \"sounding\",\n      \"args\": []\n    }\n  }\n}\n```\n\nIf installed in a virtual environment, use the full path to the binary:\n\n```json\n{\n  \"mcpServers\": {\n    \"sounding\": {\n      \"command\": \"/path/to/.venv/bin/sounding\",\n      \"args\": []\n    }\n  }\n}\n```\n\n## Security\n\nSounding is designed to be safe for AI-driven use:\n\n- **SSRF protection** -- `http_check` resolves hostnames and blocks requests to internal, private, loopback, and link-local IP addresses (including IPv4-mapped IPv6). Cloud metadata endpoints (169.254.x.x) are blocked.\n- **Input validation** -- All inputs pass through validators that reject shell metacharacters, malformed hostnames, and invalid ports before reaching any network call or subprocess.\n- **Rate limiting** -- `port_scan` enforces a minimum 1-second interval between scans to prevent abuse.\n- **Subnet restriction** -- `subnet_scan` only allows RFC 1918 private subnets and caps at /20 (4096 addresses) with concurrency limiting.\n- **No shell injection** -- Subprocess calls (`traceroute`, `whois`) use `exec`-style invocation, never shell interpolation.\n\n## Development\n\n```bash\ngit clone https://github.com/seayniclabs/sounding.git\ncd sounding\npython -m venv .venv\nsource .venv/bin/activate\npip install -e \".[test]\"\npython -m pytest tests/ -q\n```\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 3457,
  "sha": "b3af95edd6af84aa58e2d2125f8fc865c64897255d4d914eeac512a62c4a260f",
  "repo_slug": "seayniclabs/sounding",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_seayniclabs_keel_2afc6d56/readme"
}