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.
SHODAN_API_KEYsecretOptional Shodan API key. Enables attacksurface_lookup_host; absent → that one tool returns source_unavailable and the rest of the server works.
CERTSPOTTER_API_KEYsecretOptional Certspotter API key. Raises CT-fallback rate limits; absent → free unauthenticated tier.
ATTACKSURFACE_DEFAULT_RESOLVERSComma-separated default DNS resolver IPs for attacksurface_resolve_dns.
ATTACKSURFACE_HTTP_USER_AGENTDefault User-Agent for attacksurface_probe_http (overridable per call).
ATTACKSURFACE_MAX_SUBDOMAINSCap on subdomains resolved during a map_domain run.
ATTACKSURFACE_RDAP_BOOTSTRAP_URLRDAP bootstrap base URL; override for a private/mirrored RDAP.
ATTACKSURFACE_ALLOW_PRIVATE_TARGETSSet true to disable the SSRF guard for internal-network assessment (local/trusted deployments only).
MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_AUTH_MODEAuthentication mode to use: 'none', 'jwt', or 'oauth'.
{
"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>"
}
}
}
}{
"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>"
}
}
}
}{
"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>"
}
}
}
}{
"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 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:stdioRelated MCP servers
Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP.
io.github.cyanheads/git-mcp-server
Comprehensive Git MCP server with 28 tools for clone, commit, branching, merging, and advanced workflows.
Agent-native TypeScript framework for building MCP servers with declarative definitions.
TypeScript template for building MCP servers with declarative tooling, observability, and auth.
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Search ClinicalTrials.gov — find studies, retrieve results, match patients to eligible trials.