PluginBench
MCP Server
Active
Apache-2.0

io.github.cyanheads/attack-surface-mcp-server MCP Server

io.github.cyanheads/attack-surface-mcp-server

What is the io.github.cyanheads/attack-surface-mcp-server MCP server?

Passive external attack-surface mapping: CT subdomains, DNS, TLS, HTTP posture, RDAP/WHOIS, Shodan.

How to install io.github.cyanheads/attack-surface-mcp-server

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • SHODAN_API_KEY
    secret

    Optional Shodan API key. Enables attacksurface_lookup_host; absent → that one tool returns source_unavailable and the rest of the server works.

  • CERTSPOTTER_API_KEY
    secret

    Optional Certspotter API key. Raises CT-fallback rate limits; absent → free unauthenticated tier.

  • ATTACKSURFACE_DEFAULT_RESOLVERS

    Comma-separated default DNS resolver IPs for attacksurface_resolve_dns.

  • ATTACKSURFACE_HTTP_USER_AGENT

    Default User-Agent for attacksurface_probe_http (overridable per call).

  • ATTACKSURFACE_MAX_SUBDOMAINS

    Cap on subdomains resolved during a map_domain run.

  • ATTACKSURFACE_RDAP_BOOTSTRAP_URL

    RDAP bootstrap base URL; override for a private/mirrored RDAP.

  • ATTACKSURFACE_ALLOW_PRIVATE_TARGETS

    Set true to disable the SSRF guard for internal-network assessment (local/trusted deployments only).

  • MCP_LOG_LEVEL

    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

  • MCP_HTTP_HOST

    The hostname for the HTTP server.

  • MCP_HTTP_PORT

    The port to run the HTTP server on.

  • MCP_HTTP_ENDPOINT_PATH

    The endpoint path for the MCP server.

  • MCP_AUTH_MODE

    Authentication mode to use: 'none', 'jwt', or 'oauth'.

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "attack-surface-mcp-server": {
      "command": "bun",
      "args": [
        "-y",
        "@cyanheads/attack-surface-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "SHODAN_API_KEY": "<YOUR_SHODAN_API_KEY>",
        "CERTSPOTTER_API_KEY": "<YOUR_CERTSPOTTER_API_KEY>",
        "ATTACKSURFACE_DEFAULT_RESOLVERS": "<YOUR_ATTACKSURFACE_DEFAULT_RESOLVERS>",
        "ATTACKSURFACE_HTTP_USER_AGENT": "<YOUR_ATTACKSURFACE_HTTP_USER_AGENT>",
        "ATTACKSURFACE_MAX_SUBDOMAINS": "<YOUR_ATTACKSURFACE_MAX_SUBDOMAINS>",
        "ATTACKSURFACE_RDAP_BOOTSTRAP_URL": "<YOUR_ATTACKSURFACE_RDAP_BOOTSTRAP_URL>",
        "ATTACKSURFACE_ALLOW_PRIVATE_TARGETS": "<YOUR_ATTACKSURFACE_ALLOW_PRIVATE_TARGETS>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
        "MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
        "MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
        "MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
        "MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "attack-surface-mcp-server": {
      "command": "bun",
      "args": [
        "-y",
        "@cyanheads/attack-surface-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "SHODAN_API_KEY": "<YOUR_SHODAN_API_KEY>",
        "CERTSPOTTER_API_KEY": "<YOUR_CERTSPOTTER_API_KEY>",
        "ATTACKSURFACE_DEFAULT_RESOLVERS": "<YOUR_ATTACKSURFACE_DEFAULT_RESOLVERS>",
        "ATTACKSURFACE_HTTP_USER_AGENT": "<YOUR_ATTACKSURFACE_HTTP_USER_AGENT>",
        "ATTACKSURFACE_MAX_SUBDOMAINS": "<YOUR_ATTACKSURFACE_MAX_SUBDOMAINS>",
        "ATTACKSURFACE_RDAP_BOOTSTRAP_URL": "<YOUR_ATTACKSURFACE_RDAP_BOOTSTRAP_URL>",
        "ATTACKSURFACE_ALLOW_PRIVATE_TARGETS": "<YOUR_ATTACKSURFACE_ALLOW_PRIVATE_TARGETS>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
        "MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
        "MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
        "MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
        "MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "attack-surface-mcp-server": {
      "command": "bun",
      "args": [
        "-y",
        "@cyanheads/attack-surface-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "SHODAN_API_KEY": "<YOUR_SHODAN_API_KEY>",
        "CERTSPOTTER_API_KEY": "<YOUR_CERTSPOTTER_API_KEY>",
        "ATTACKSURFACE_DEFAULT_RESOLVERS": "<YOUR_ATTACKSURFACE_DEFAULT_RESOLVERS>",
        "ATTACKSURFACE_HTTP_USER_AGENT": "<YOUR_ATTACKSURFACE_HTTP_USER_AGENT>",
        "ATTACKSURFACE_MAX_SUBDOMAINS": "<YOUR_ATTACKSURFACE_MAX_SUBDOMAINS>",
        "ATTACKSURFACE_RDAP_BOOTSTRAP_URL": "<YOUR_ATTACKSURFACE_RDAP_BOOTSTRAP_URL>",
        "ATTACKSURFACE_ALLOW_PRIVATE_TARGETS": "<YOUR_ATTACKSURFACE_ALLOW_PRIVATE_TARGETS>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
        "MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
        "MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
        "MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
        "MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "attack-surface-mcp-server": {
      "type": "stdio",
      "command": "bun",
      "args": [
        "-y",
        "@cyanheads/attack-surface-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "SHODAN_API_KEY": "<YOUR_SHODAN_API_KEY>",
        "CERTSPOTTER_API_KEY": "<YOUR_CERTSPOTTER_API_KEY>",
        "ATTACKSURFACE_DEFAULT_RESOLVERS": "<YOUR_ATTACKSURFACE_DEFAULT_RESOLVERS>",
        "ATTACKSURFACE_HTTP_USER_AGENT": "<YOUR_ATTACKSURFACE_HTTP_USER_AGENT>",
        "ATTACKSURFACE_MAX_SUBDOMAINS": "<YOUR_ATTACKSURFACE_MAX_SUBDOMAINS>",
        "ATTACKSURFACE_RDAP_BOOTSTRAP_URL": "<YOUR_ATTACKSURFACE_RDAP_BOOTSTRAP_URL>",
        "ATTACKSURFACE_ALLOW_PRIVATE_TARGETS": "<YOUR_ATTACKSURFACE_ALLOW_PRIVATE_TARGETS>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
        "MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
        "MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
        "MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
        "MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
      }
    }
  }
}
Claude Code
claude mcp add attack-surface-mcp-server --env SHODAN_API_KEY=<YOUR_SHODAN_API_KEY> --env CERTSPOTTER_API_KEY=<YOUR_CERTSPOTTER_API_KEY> --env ATTACKSURFACE_DEFAULT_RESOLVERS=<YOUR_ATTACKSURFACE_DEFAULT_RESOLVERS> --env ATTACKSURFACE_HTTP_USER_AGENT=<YOUR_ATTACKSURFACE_HTTP_USER_AGENT> --env ATTACKSURFACE_MAX_SUBDOMAINS=<YOUR_ATTACKSURFACE_MAX_SUBDOMAINS> --env ATTACKSURFACE_RDAP_BOOTSTRAP_URL=<YOUR_ATTACKSURFACE_RDAP_BOOTSTRAP_URL> --env ATTACKSURFACE_ALLOW_PRIVATE_TARGETS=<YOUR_ATTACKSURFACE_ALLOW_PRIVATE_TARGETS> --env MCP_LOG_LEVEL=<YOUR_MCP_LOG_LEVEL> --env MCP_HTTP_HOST=<YOUR_MCP_HTTP_HOST> --env MCP_HTTP_PORT=<YOUR_MCP_HTTP_PORT> --env MCP_HTTP_ENDPOINT_PATH=<YOUR_MCP_HTTP_ENDPOINT_PATH> --env MCP_AUTH_MODE=<YOUR_MCP_AUTH_MODE> -- bun -y @cyanheads/attack-surface-mcp-server run start:stdio

Related MCP servers

Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP.

611
TypeScript
Apache-2.0
View repository →

Comprehensive Git MCP server with 28 tools for clone, commit, branching, merging, and advanced workflows.

226
TypeScript
Apache-2.0
View repository →

Agent-native TypeScript framework for building MCP servers with declarative definitions.

145
TypeScript
Apache-2.0
View repository →

TypeScript template for building MCP servers with declarative tooling, observability, and auth.

145
TypeScript
Apache-2.0
View repository →

Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.

116
TypeScript
Apache-2.0
View repository →

Search ClinicalTrials.gov — find studies, retrieve results, match patients to eligible trials.

81
TypeScript
Apache-2.0
View repository →