{"name":"net.honeylabs/mcp","slug":"honeylabs-mcp","title":"HoneyLabs","description":"Honeypot probe data: IP reputation, scanners, CVE probing, TLS and SSH fingerprints.","url":"https://mcp.market/server/honeylabs-mcp","rating":null,"grade":"B","score":81,"certified":false,"status":"active","category":"security","tags":["security"],"presence":{"score":28,"stars":2,"forks":0,"downloads_week":null,"last_push_at":"2026-09-20T05:43:11.000Z","license":"MIT"},"uptime":{"percent":100,"checks":7,"ok":7,"last_checked_at":"2026-09-21T06:21:01.279Z","last_ok_at":"2026-09-21T06:21:01.279Z","latency_ms":105},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/honeylabshq/honeylabs-mcp","website":"https://honeylabs.net","version":"1.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.honeylabs.net/mcp","headers":[{"description":"Bearer <hlk_…> API key from https://honeylabs.net/dashboard. Clients that support OAuth 2.1 need no key: the server advertises Dynamic Client Registration via WWW-Authenticate and /.well-known/oauth-protected-resource.","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"asn_enrich_tool","description":"Full honeypot profile for an ASN (autonomous system / hosting provider). Use for:\n'tell me about AS202425', 'what is Vultr doing in my honeypots?', 'attacks from this\nhosting provider', 'attribute this IP to its network'. asn format: 'AS12345'.\nReturns: total events, unique IPs, top targeted ports, top source countries, top user\nagents, org name. since/until are ISO-8601 UTC strings.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asn":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"}},"required":["asn","since","until"],"additionalProperties":false}},{"name":"attack_timeline_tool","description":"Attack volume over time, bucketed by hour or day. Use for: 'show attack trends this\nweek', 'was there a spike on port 22?', 'how has SSH scanning changed?', 'attack volume\nfrom China over 30 days'. bucket: 'hour' or 'day'. Optional filters: filter_protocol\n('tls'/'''), filter_country (2-letter code), filter_dest_port. since/until ISO-8601 UTC.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"},"bucket":{"default":"day","type":"string"},"filter_protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"filter_country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"filter_dest_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}},"required":["since","until"],"additionalProperties":false}},{"name":"cve_lookup_tool","description":"Who is probing a specific CVE. Use whenever the user names a CVE: 'is CVE-2024-4577\nbeing exploited in the wild?', 'who is scanning for this CVE?', 'show me actors probing\nCVE-2023-1389'. Returns severity, KEV (actively_exploited), event and unique-IP counts,\nthe top probing IPs with country/ASN/scanner tag, top ASNs, exploiter fingerprints,\nsample request paths and a daily timeline. window: 24h, 7d, 30d or 90d.\n`observed: false` with a note means we hold no detection pattern for that CVE, which is\nNOT the same as nobody scanning it. Do not use payload_search for a CVE id: the id is\nour tag for a pattern and never appears in the payload text.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cve_id":{"type":"string"},"window":{"default":"7d","type":"string"},"limit":{"default":25,"type":"integer"}},"required":["cve_id"],"additionalProperties":false}},{"name":"fingerprint_population_tool","description":"The population behind a single client fingerprint: how many source IPs carry it,\nacross how many networks (ASNs) and countries, the ports they hit, the top networks\nand a sample of the IPs, plus a read on its shape: concentrated (many IPs on few\nnetworks), dispersed (many networks but one short burst on one or two ports, which\nis a coordinated operation spread thinly on purpose), spread (a common client)\nor mixed. Concentrated and dispersed are both coordinated operations.\nUse when a user asks: 'is this JA4 one botnet or a common tool?', 'how many networks\nuse this HASSH?', 'how specific / concentrated is this fingerprint?'. fp_type: 'ja4'\n(TLS), 'ja4h' (HTTP), 'hassh' (SSH). Covers the full retained window (no date range).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"fingerprint":{"type":"string"},"fp_type":{"type":"string"}},"required":["fingerprint","fp_type"],"additionalProperties":false}},{"name":"fingerprint_search_tool","description":"Search honeypot activity by TLS, HTTP, or SSH fingerprint. Use when a user asks:\n'have you seen this JA4 fingerprint?', 'which IPs share this TLS fingerprint?', 'how\ncommon is this HASSH?', 'find all scanners with this SSH client fingerprint'. fp_type:\n'ja4' (TLS client), 'ja3' (legacy TLS client, MD5 — still keyed by many TI feeds),\n'ja4h' (HTTP client), 'hassh' (SSH client). since/until are ISO-8601 UTC strings.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"fingerprint":{"type":"string"},"fp_type":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"limit":{"default":50,"type":"integer"}},"required":["fingerprint","fp_type","since","until"],"additionalProperties":false}},{"name":"ioc_lookup_tool","description":"Look up any IP address, CIDR network, set of networks, or domain in the honeypot\n    dataset. Use this FIRST whenever the\n    user asks: 'is this IP malicious?', 'is this a known scanner?', 'have you seen this IP?',\n    'what does this IP do?', 'when was it last seen?', 'is this IP in your data?'. Returns:\n    total_events (0 = never observed), first_seen, last_seen, country, ASN, the 50 most-hit\nports plus ports_targeted_count for the true total,\n    top user agents, top URL paths, TLS/HTTP/SSH fingerprints. Covers both IPv4 and domains.\n    Also returns our own judgement: `verdict` (human sentence) with `verdict_key` (stable\n    machine value to alert on) and `verdict_why`; `scanner` (benign-scanner identity from our\n    classification table, or null) so research traffic can be told apart from real attacks;\n    and `cve_probes`, the CVE signatures this address was seen probing.\n\n    WINDOW: `days` bounds the query to the last N days. For a single address\n    leave it unset for every retained event, which is the right default for\n    \"have we ever seen this\". A CIDR or a domain defaults to the last 90 days,\n    because neither can use an index and unbounded they read the whole table;\n    pass `days` explicitly to widen either back out. The website's /lookup\n    defaults to 7 days for anonymous visitors, so the same address can read very\n    differently on the two surfaces. Every response states which window it used\n    in `window`; quote it alongside any count you report.\n\n    RANGES: pass a CIDR ('103.66.28.0/22') for a whole-network aggregate, or several at once\n    separated by commas, spaces or newlines ('103.66.28.0/22, 8.34.210.32/27') to answer\n    'have any of this vendor's ranges touched us' in ONE call. Never expand a network into\n    individual addresses and loop -- that is hundreds of calls for an answer this returns in\n    one, and it will exhaust your quota. A range answer sets query_type to 'cidr' or\n    'cidr_set', lists every range back in `ranges`, and gives `per_range` counts plus\n    `top_source_ips`; total_events 0 with those fields present is a real observed absence.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"ioc":{"type":"string"},"days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}},"required":["ioc"],"additionalProperties":false}},{"name":"payload_search_tool","description":"Literal substring search over captured request text: URL path, request body,\nrequest headers and event summary. Use for: 'find attacks targeting /wp-admin',\n'find requests with this user agent string', 'what payloads hit port 80 last week'.\n\nIt matches text that literally appeared in the request, and nothing else. These do\nNOT work and will return an empty list:\n  - a CVE id ('CVE-2024-4577'), which is our tag for a pattern, never payload text.\n    Use cve_lookup instead. This tool rejects them rather than answering emptily.\n  - a product or vendor name ('Cisco FMC', '7-Zip'), which appears in an advisory,\n    not in the request. Search the endpoint it exposes instead, e.g. '/ccmadmin' or\n    the vulnerable path.\n  - a description of behaviour ('SQL injection attempts'). Search a marker that\n    occurs in the traffic, e.g. 'UNION SELECT' or '../'.\n\nAn empty list is a real answer: it means no captured request in that window\ncontained the string. Widen since/until before concluding the activity does not\nexist. Free to call; volume is metered like every other tool.\nsince/until are ISO-8601 UTC strings.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"limit":{"default":50,"type":"integer"}},"required":["query","since","until"],"additionalProperties":false}},{"name":"search_events_tool","description":"Return individual raw honeypot events with all fields. Use when the user wants to see\nactual records: 'show me events from this IP', 'what hit port 443 last week', 'events from\nRussia yesterday'. Filters: source_ip, country (2-letter code), asn (e.g. 'AS12345'),\ndest_port, protocol ('tls' or '' = the coarse TLS/raw-TCP signal),\napp_protocol (nDPI L7 protocol label: 'bittorrent', 'ssh', 'rdp', 'mssql-tds', 'mining',\n'rtsp', 'smbv1', ... — find everything speaking a protocol regardless of port),\nhttp_method, request_header (substring of the masked\nHTTP request headers), ja4/ja3 (exact TLS client fingerprint),\nhas_client_cert (true = only events where the client presented an mTLS cert),\nip_version (4 or 6 = only IPv4 or IPv6 sources).\nsince/until are ISO-8601 UTC strings. Each record includes: source_ip, country, asn,\ndest_port, user_agent, url_path, http_request_headers, tls_client_ja4, tls_client_ja3,\nhttp_request_ja4h, ssh_client_hassh, tls_client_cert_subject/issuer,\nevent_sequence, event_duration, source_bytes/dest_bytes/network_bytes, network_protocol,\napplication_protocol, timestamp.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"},"source_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"asn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"dest_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"app_protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"http_method":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"request_header":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"ja4":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"ja3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"has_client_cert":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null},"ip_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"limit":{"default":100,"type":"integer"}},"required":["since","until"],"additionalProperties":false}},{"name":"top_attackers_tool","description":"Ranked leaderboard of attack sources. Use for: 'who is attacking the most?', 'top\nattacking countries', 'most targeted ports', 'most common user agents', 'top ASNs by\nattack volume', 'top IPs from China', 'top attackers hitting port 22'.\n'by' controls grouping: ip, asn, country, port, user_agent, ja4, url_path, domain, cve.\nby='cve' answers 'what CVEs are being mass-scanned right now' and returns\nvalue (the CVE id), title, severity, actively_exploited and counts; drill into any of\nthem with cve_lookup. by='cve' does not accept the country/dest_port/asn filters.\nOptional filters: country (2-letter ISO, e.g. 'CN'), dest_port, asn (e.g. 'AS12345').\nAdding a filter is required for large time ranges to stay within memory limits.\nsince/until are ISO-8601 UTC strings.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"},"by":{"default":"ip","type":"string"},"limit":{"default":20,"type":"integer"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"dest_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"asn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"required":["since","until"],"additionalProperties":false}}],"scan":{"score":81,"grade":"B","scanned_at":"2026-09-20T21:00:59.825Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T21:00:59.793Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1650ms"]},"poisoning":{"score":13,"max":15,"notes":["9 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool ioc_lookup_tool: …Look up any IP address, CIDR network, set of networks, or domain in the honeypot dataset. Use this FIRST whenever the user asks: 'is this IP malicious?', 'is this a known scanner?', 'have you seen this IP?', 'what does this IP do?', 'when was it last seen?', 'is this IP in your data?'. Returns: total_events (0 = never observed), first_seen, last_seen, country, ASN, the 50 most-hit ports plus ports_targeted_count for the true total, top user agents, top URL paths, TLS/HTTP/SSH fingerprints. Covers both IPv4 and domains. Also returns our own judgement: `verdict` (human sentence) with `verdict_key` (stable machine value to alert on) and `verdict_why`; `scanner` (benign-scanner identity from our classification table, or null) so research traffic can be told apart from real attacks; and `cve_probes`, the CVE signatures this address was seen probing. WINDOW: `days` bounds the query to the last N days. For a single address leave it unset for every retained event, which is the right default for \"have we ever seen this\". A CIDR or a domain defaults to the last 90 days, because neither can use an index and unbounded they read the whole table; pass `days` explicitly to widen either back out. The website's /lookup defaults to 7 days for anonymous visitors, so the same address can read very differently on the two surfaces. Every response states which window it used in `window`; quote it alongside any count you report. RANGES: pass a CIDR ('103.66.28.0/22') for a whole-network aggregate, or several at once separated by commas, spaces or newlines ('103.66.28.0/22, 8.34.210.32/27') to answer 'have any of this vendor's ranges touched us' in ONE call. Never expand a network into individual addresses and loop -- that is hundreds of calls for an answer this returns in one, and it will exhaust your quota. A range answer sets query_type to 'cidr' or 'cidr_set', lists every range back in `ranges`, and gives `per_range` counts plus `top_source_ips`; total_events 0 with those fields present is a real observed absence.…"}],"inputs":{"probes":[{"url":"https://mcp.honeylabs.net/mcp","reachable":true,"authRequired":false,"latencyMs":1650,"serverInfo":{"name":"HoneyLabs Threat Intelligence","version":"1.0.0"}}],"packages":[],"repo":{"found":true,"owner":"honeylabshq","repo":"honeylabs-mcp","archived":false,"pushedAt":"2026-09-20T05:43:11Z","stars":2,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/263323790?v=4","ownerCreatedAt":"2026-02-23T08:37:36Z","license":"MIT"},"icon":{"url":"https://honeylabs.net/icon.svg?icon.14u05png-dvbx.svg","source":"site"},"presence":{"stars":2,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-20T05:43:11.000Z","score":28}}}},"grade_history":[],"reviews":[]}