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

Metadata

Release files for keel-mcp 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keel-mcp 0.2.1
File Size Uploaded
keel_mcp-0.2.1.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keel-mcp 0.2.1
File Interpreter ABI Platform
keel_mcp-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 32.3 kB

Release files / keel_mcp-0.2.1.tar.gz

Download URL keel_mcp-0.2.1.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2e21d0dba5b117a7ef8f5b8a64d0beb433164018b2f0e4b5801f164fe1a1428d
BLAKE2b-256 checksum
How to use checksums
86c53d35357c34ca608fd0b431fb4b7d3003a7917a48ccc311fd6f62354f3f0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / keel_mcp-0.2.1-py3-none-any.whl

Download URL keel_mcp-0.2.1-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91086bda1e217b950ab31e57407d0303620af7d5ca4c3f2d086cfa230d5bff4f
BLAKE2b-256 checksum
How to use checksums
78aee873c1231ee99c0e57120c9b1d9286b2c44b8fdefab9fad1acf995e6128e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page