Skip to main content

Keel

Network Diagnostics MCP Server

License: MIT

Probing what lies beneath the surface -- network diagnostics for AI tools.


What It Does

Keel is a Model Context Protocol (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.

Tools

Tool Description Key Parameters
health Server version and status check --
ping TCP connect ping (port 80) with latency stats host, count (1--100), timeout
traceroute Trace network route to a host host, max_hops (1--64)
dns_lookup Resolve DNS records (A, AAAA, MX, CNAME, TXT, NS) domain, record_type, nameserver
reverse_dns Reverse DNS lookup for an IP address ip
port_check Check if a single TCP port is open host, port, timeout
port_scan Scan common TCP ports (rate-limited, max 100) host, ports
check_ssl_cert Inspect SSL/TLS certificate details and expiry host, port
whois_lookup WHOIS domain registration lookup domain
http_check HTTP request with status, timing, headers, size url
subnet_scan Discover live hosts on a local subnet (RFC 1918 only) subnet (CIDR, max /20)
get_public_ip Get the machine's public IP address --
speed_test Measure download speed (Mbps) and latency --
dns_propagation Check DNS propagation across public resolvers domain, record_type

Installation

From PyPI:

pip install keel-mcp

Or isolated with pipx:

pipx install keel-mcp

Usage

Run the server directly (stdio transport):

keel

Claude Code

Register as a local MCP server:

claude mcp add keel -- keel

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "keel": {
      "command": "keel",
      "args": []
    }
  }
}

If installed in a virtual environment, use the full path to the binary:

{
  "mcpServers": {
    "keel": {
      "command": "/path/to/.venv/bin/keel",
      "args": []
    }
  }
}

Security

Keel is designed to be safe for AI-driven use:

  • 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.
  • Input validation -- All inputs pass through validators that reject shell metacharacters, malformed hostnames, and invalid ports before reaching any network call or subprocess.
  • Rate limiting -- port_scan enforces a minimum 1-second interval between scans to prevent abuse.
  • Subnet restriction -- subnet_scan only allows RFC 1918 private subnets and caps at /20 (4096 addresses) with concurrency limiting.
  • No shell injection -- Subprocess calls (traceroute, whois) use exec-style invocation, never shell interpolation.

Development

git clone https://github.com/seayniclabs/keel.git
cd keel
python -m venv .venv
source .venv/bin/activate
pip install -e ".[test]"
python -m pytest tests/ -q

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keel_mcp-0.2.1.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keel_mcp-0.2.1-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file keel_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: keel_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for keel_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2e21d0dba5b117a7ef8f5b8a64d0beb433164018b2f0e4b5801f164fe1a1428d
MD5 55a531d6e812e078e0058948a60b973f
BLAKE2b-256 86c53d35357c34ca608fd0b431fb4b7d3003a7917a48ccc311fd6f62354f3f0c

See more details on using hashes here.

File details

Details for the file keel_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: keel_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for keel_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 91086bda1e217b950ab31e57407d0303620af7d5ca4c3f2d086cfa230d5bff4f
MD5 59052ac5a7afde3d467fd980c7b71fd8
BLAKE2b-256 78aee873c1231ee99c0e57120c9b1d9286b2c44b8fdefab9fad1acf995e6128e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page