attack-surface-mcp-server MCP
A community-driven MCP server for passive external attack-surface mapping. It discovers subdomains via Certificate Transparency logs, resolves DNS records, inspects TLS and HTTP security posture, and retrieves RDAP/WHOIS data. It supports STDIO and Streamable HTTP transports and includes an SSRF guard to prevent access to private or internal network targets.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Map a domain's external surface including CT logs and DNS liveness
- Resolve DNS records and inspect TLS security posture
- Retrieve RDAP/WHOIS registry information for assets
- Enrich IP data with optional Shodan host intelligence
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
@cyanheads/attack-surface-mcp-server 0.5.0
{
"version": "0.5.0",
"transport": "stdio",
"identifier": "@cyanheads/attack-surface-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "SHODAN_API_KEY",
"format": "string",
"description": "Optional Shodan API key. Enables attacksurface_lookup_host; absent → that one tool returns source_unavailable and the rest of the server works."
},
{
"name": "CERTSPOTTER_API_KEY",
"format": "string",
"description": "Optional Certspotter API key. Raises CT-fallback rate limits; absent → free unauthenticated tier."
},
{
"name": "ATTACKSURFACE_DEFAULT_RESOLVERS",
"format": "string",
"default": "8.8.8.8,1.1.1.1,9.9.9.9",
"description": "Comma-separated default DNS resolver IPs for attacksurface_resolve_dns."
},
{
"name": "ATTACKSURFACE_HTTP_USER_AGENT",
"format": "string",
"description": "Default User-Agent for attacksurface_probe_http (overridable per call)."
},
{
"name": "ATTACKSURFACE_MAX_SUBDOMAINS",
"format": "string",
"default": "200",
"description": "Map/snapshot resolution cap; enumeration also caps each page at 50 candidates."
},
{
"name": "ATTACKSURFACE_RDAP_BOOTSTRAP_URL",
"format": "string",
"default": "https://rdap.org",
"description": "RDAP bootstrap base URL; override for a private/mirrored RDAP."
},
{
"name": "ATTACKSURFACE_ALLOW_PRIVATE_TARGETS",
"format": "string",
"default": "false",
"description": "Set true to permit non-public target ranges for trusted internal-network assessment; URL and HTTP(S) scheme checks remain enforced."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"attack-surface-mcp-server-mcp": {
"command": "npx",
"args": [
"-y",
"@cyanheads/attack-surface-mcp-server@0.5.0"
],
"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>"
}
}
}
}Cline
{
"mcpServers": {
"attack-surface-mcp-server-mcp": {
"command": "npx",
"args": [
"-y",
"@cyanheads/attack-surface-mcp-server@0.5.0"
],
"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>"
}
}
}
}VS Code
{
"servers": {
"attack-surface-mcp-server-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/attack-surface-mcp-server@0.5.0"
],
"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>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"attack-surface-mcp-server-mcp": {
"command": "npx",
"args": [
"-y",
"@cyanheads/attack-surface-mcp-server@0.5.0"
],
"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>"
}
}
}
}Let your agent find its tools
Find servers like attack-surface-mcp-server MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.