osint-mcp-server
Provides tools for domain reputation analysis and threat intelligence, allowing AI agents to query VirusTotal for malicious activity detections, URL safety checks, and historical infrastructure records.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@osint-mcp-server Perform a full OSINT recon on example.com and identify its attack surface."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
The Problem
OSINT collection is the first step of every penetration test, bug bounty, and threat assessment. The data you need is scattered across a dozen platforms — each with its own API, its own auth, its own rate limits, its own output format. Today you open Shodan in one tab, VirusTotal in another, run dig in a terminal, copy-paste from WHOIS, switch to crt.sh for certificates, and then spend 30 minutes manually correlating everything.
Traditional OSINT workflow:
resolve DNS records → dig / nslookup CLI
check WHOIS registration → whois CLI or web tool
enumerate subdomains → crt.sh + SecurityTrails + VirusTotal (3 different UIs)
scan for open ports/services → Shodan web interface
check domain reputation → VirusTotal web interface
map IP infrastructure → Censys + BGP lookups
find archived pages → Wayback Machine web UI
check email security → manual MX/SPF/DMARC lookups
correlate everything → copy-paste into a spreadsheet
─────────────────────────────────
Total: 45+ minutes per target, most of it switching contextsosint-mcp-server gives your AI agent 37 tools across 12 data sources via the Model Context Protocol. The agent queries all sources in parallel, correlates data, identifies risks, and presents a unified intelligence picture — in a single conversation.
With osint-mcp-server:
You: "Do a full recon on target.com"
Agent: → DNS: 4 A records, 3 MX (Google Workspace), 2 NS
→ WHOIS: Registered 2019, expires 2025, GoDaddy
→ crt.sh: 47 unique subdomains from CT logs
→ HackerTarget: 23 hosts with IPs
→ Email: SPF soft-fail (~all), DMARC p=none, no DKIM
→ Shodan: 3 IPs, 12 open ports, Apache 2.4.49 (CVE-2021-41773)
→ VirusTotal: Clean reputation, 0 detections
→ "target.com has 47 subdomains, weak email security
(SPF soft-fail, DMARC monitoring only), and one IP
running Apache 2.4.49 with a known path traversal CVE.
Priority: patch Apache, upgrade SPF to -all, set DMARC to p=reject."Related MCP server: OhSINT MCP Server
How It's Different
Existing OSINT tools give you raw data one source at a time. osint-mcp-server gives your AI agent the ability to reason across all sources simultaneously.
Quick Start
Option 1: npx (no install)
npx osint-mcp-server21 public OSINT tools work immediately. No API keys required.
Option 2: Clone
git clone https://github.com/badchars/osint-mcp-server.git
cd osint-mcp-server
bun installEnvironment variables (optional)
# Premium OSINT sources — all optional
export SHODAN_API_KEY=your-key # Enables 4 Shodan tools
export VT_API_KEY=your-key # Enables 4 VirusTotal tools
export ST_API_KEY=your-key # Enables 3 SecurityTrails tools
export CENSYS_API_ID=your-id # Enables 3 Censys tools
export CENSYS_API_SECRET=your-secret # Required with CENSYS_API_IDAll premium API keys are optional. Without them, you still get 21 tools covering DNS, WHOIS, crt.sh, GeoIP, BGP, Wayback Machine, HackerTarget, and Microsoft 365 tenant discovery.
Connect to your AI agent
# With npx
claude mcp add osint-mcp-server -- npx osint-mcp-server
# With local clone
claude mcp add osint-mcp-server -- bun run /path/to/osint-mcp-server/src/index.tsAdd to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"osint": {
"command": "npx",
"args": ["-y", "osint-mcp-server"],
"env": {
"SHODAN_API_KEY": "optional",
"VT_API_KEY": "optional",
"ST_API_KEY": "optional",
"CENSYS_API_ID": "optional",
"CENSYS_API_SECRET": "optional"
}
}
}
}Same JSON config format. Point the command to npx osint-mcp-server or your local installation path.
Start querying
You: "What can you find about example.com?"That's it. The agent handles DNS, WHOIS, subdomains, email security, and more automatically.
What The AI Can Do
Domain Reconnaissance
You: "Do a full recon on target.com"
Agent: → osint_domain_recon {domain: "target.com"}
→ DNS: A records point to 3 IPs (AWS us-east-1)
→ WHOIS: Registered 2018 via Namecheap, expires 2026
→ crt.sh: 62 subdomains discovered
→ HackerTarget: 31 hosts with resolved IPs
→ Email: SPF hard-fail, DMARC p=reject, DKIM found (selector1)
→ "target.com is well-configured for email security.
62 subdomains found — notable: staging.target.com,
admin-portal.target.com, api-v2.target.com.
Infrastructure is on AWS (us-east-1)."Attack Surface Mapping
You: "Map the attack surface for 203.0.113.50"
Agent: → shodan_host {ip: "203.0.113.50"}
→ geoip_lookup {ip: "203.0.113.50"}
→ bgp_ip {ip: "203.0.113.50"}
→ whois_ip {ip: "203.0.113.50"}
→ dns_reverse {ip: "203.0.113.50"}
→ "203.0.113.50 (Hetzner, DE, AS24940)
Open ports: 22/SSH, 80/HTTP, 443/HTTPS, 8080/HTTP-Proxy
Apache 2.4.51, OpenSSH 8.9, nginx reverse proxy on 8080
Reverse DNS: web1.target.com
3 known CVEs flagged by Shodan"Subdomain Enumeration (Multi-Source)
You: "Find all subdomains of target.com using every source available"
Agent: → crtsh_search {domain: "target.com"} → 62 subdomains
→ st_subdomains {domain: "target.com"} → 84 subdomains
→ vt_subdomains {domain: "target.com"} → 41 subdomains
→ hackertarget_hostsearch {domain: "target.com"} → 31 hosts
→ dns_wildcard_check {domain: "target.com"} → No wildcard
→ "127 unique subdomains after dedup across 4 sources.
Notable findings: staging.target.com, dev-api.target.com,
jenkins.target.com (CI/CD exposure risk),
old-admin.target.com (potential legacy system)"Email Security Audit
You: "Analyze the email security posture of target.com"
Agent: → dns_email_security {domain: "target.com"}
→ dns_spf_chain {domain: "target.com"}
→ m365_tenant {domain: "target.com"}
→ "Email Security: HIGH RISK
SPF: ~all (soft fail — spoofable)
DMARC: p=none (monitoring only — not enforcing)
DKIM: Found for selector1 (2048-bit, good)
SPF chain: 7 includes, 2 services (Google Workspace, SendGrid)
M365: Not a Microsoft tenant
Recommendations:
1. Upgrade SPF from ~all to -all
2. Change DMARC from p=none to p=quarantine, then p=reject
3. Add rua= to DMARC for aggregate reporting"Historical Intelligence
You: "What was target.com running 3 years ago?"
Agent: → wayback_urls {domain: "target.com", limit: 500}
→ st_dns_history {domain: "target.com", type: "a"}
→ wayback_snapshots {url: "https://target.com/robots.txt"}
→ "DNS history: target.com moved from 198.51.100.1 (DigitalOcean)
to 203.0.113.50 (AWS) in 2023.
Wayback found 342 unique URLs including:
- /admin/ (removed in 2024, was accessible)
- /api/v1/docs (Swagger UI, still cached)
- /wp-content/ (was WordPress, migrated)
Old robots.txt disallowed /internal/ and /debug/"Tools Reference (37 tools)
Tool | Description |
| Resolve A, AAAA, MX, TXT, NS, SOA, CNAME, SRV records |
| Reverse DNS (PTR) lookup for an IP address |
| SPF + DMARC + DKIM analysis with risk scoring and recommendations |
| Recursive SPF include chain resolution with service detection |
| SRV + CNAME service discovery (Autodiscover, LDAP, SIP, Kerberos, etc.) |
| Wildcard DNS detection via random subdomain probe |
Tool | Description |
| RDAP domain lookup — registrar, dates, nameservers, contacts |
| RDAP IP lookup — network name, CIDR, country, entities |
Tool | Description |
| Search CT logs via crt.sh — subdomain discovery + certificate details |
Tool | Description |
| IP details: open ports, services, banners, vulnerabilities, OS, ASN |
| Search Shodan query language (e.g. |
| Bulk hostname-to-IP resolution via Shodan |
| Search public exploit database (PoC, Metasploit modules) |
Tool | Description |
| Domain reputation, detection stats, categories, DNS records |
| IP reputation, detection stats, ASN, network |
| Subdomain enumeration via VirusTotal |
| URL scan + malware/phishing analysis |
Tool | Description |
| Subdomain enumeration (returns FQDNs) |
| Historical DNS records with first/last seen dates |
| Enhanced WHOIS with registrant/admin/technical contacts |
Tool | Description |
| Host search — IPs, services, ports, location, ASN |
| Single host full details with all services |
| Certificate search by domain, fingerprint, issuer |
Tool | Description |
| IP geolocation: country, city, ISP, ASN, proxy/hosting/VPN detection |
| Batch IP geolocation (up to 100 IPs at once) |
Tool | Description |
| ASN details + all announced IPv4/IPv6 prefixes |
| IP prefix/ASN routing lookup with RIR allocation |
| Prefix details + announcing ASNs |
Tool | Description |
| Archived URL discovery — find old endpoints, hidden paths, removed content |
| Snapshot history with timestamps and direct archive links |
Tool | Description |
| Host/subdomain discovery with resolved IPs |
| Reverse IP lookup — find all domains on an IP |
| ASN information lookup |
Tool | Description |
| Discover M365 tenant ID, region, and OpenID configuration |
| Detect auth type (Managed/Federated), federation brand, auth endpoints |
Tool | Description |
| List all OSINT sources, API key status, and tool counts |
| Quick recon combining all free sources (DNS + WHOIS + crt.sh + HackerTarget + email security) |
GitHub Actions
Use any of the 37 tools directly in your CI/CD pipeline:
# .github/workflows/security.yml
name: OSINT Security Check
on:
schedule:
- cron: '0 8 * * 1' # Weekly Monday 8am
workflow_dispatch:
jobs:
recon:
runs-on: ubuntu-latest
steps:
- name: Domain reconnaissance
uses: badchars/osint-mcp-server@v1
id: recon
with:
tool: osint_domain_recon
args: '{"domain": "example.com"}'
- name: Email security audit
uses: badchars/osint-mcp-server@v1
with:
tool: dns_email_security
args: '{"domain": "example.com"}'
- name: Subdomain enumeration
uses: badchars/osint-mcp-server@v1
with:
tool: crtsh_search
args: '{"domain": "example.com"}'
- name: Shodan scan (optional)
uses: badchars/osint-mcp-server@v1
with:
tool: shodan_host
args: '{"ip": "203.0.113.50"}'
env:
SHODAN_API_KEY: ${{ secrets.SHODAN_API_KEY }}The action output is available via steps.<id>.outputs.result for further processing.
CLI Usage
# List all available tools
npx osint-mcp-server --list
# Run any tool directly
npx osint-mcp-server --tool dns_lookup '{"domain":"example.com","type":"A"}'
npx osint-mcp-server --tool osint_domain_recon '{"domain":"example.com"}'
npx osint-mcp-server --tool dns_email_security '{"domain":"example.com"}' --format text
# Tools requiring API keys
SHODAN_API_KEY=your-key npx osint-mcp-server --tool shodan_host '{"ip":"1.1.1.1"}'Data Sources (12)
Source | Auth | Rate Limit | What it provides |
None | None | A, AAAA, MX, TXT, NS, SOA, CNAME, SRV, PTR records | |
None | 1 req/s | Domain & IP WHOIS data (registrar, dates, contacts, CIDR) | |
None | 0.5 req/s | Certificate Transparency logs, subdomain discovery | |
None | 45 req/min | IP geolocation, ISP, ASN, proxy/VPN/hosting detection | |
None | 0.5 req/s | ASN details, announced prefixes, IP routing info | |
None | 2 req/s | Host search, reverse IP, ASN lookup (50/day free) | |
None | 1 req/s | Archived URLs, snapshot history, historical content | |
None | None | Tenant discovery, federation detection, auth type | |
| 1 req/s | Internet-wide port/service/banner scanning | |
| 4 req/min | Domain/IP/URL reputation, malware detection | |
| 1 req/s | DNS history, subdomain enumeration, enhanced WHOIS | |
| 1 req/s | Host search, certificate transparency, service discovery |
Design decisions:
12 providers, 1 server — Every OSINT source is an independent module. The agent picks which tools to use based on the query.
21 free tools — DNS, WHOIS, crt.sh, BGP, GeoIP, Wayback, HackerTarget, and M365 work without any API keys. Premium sources are additive.
Parallel queries —
osint_domain_reconcalls 8 sources viaPromise.allSettled. If one source times out, the rest still return data.Per-provider rate limiters — Each data source has its own
RateLimiterinstance calibrated to that API's limits. No shared bottleneck.TTL caching — crt.sh (15min), BGP (30min), Shodan (5min), VirusTotal (10min) results are cached to avoid redundant API calls during multi-tool workflows.
Graceful degradation — Missing API keys don't crash the server. Tools return descriptive error messages: "Set SHODAN_API_KEY to enable Shodan tools."
SPF chain analysis — Recursive include resolution with loop detection, service identification (Google Workspace, Microsoft 365, SendGrid, etc.), and RFC 7208 lookup limit checking.
2 dependencies —
@modelcontextprotocol/sdkandzod. All HTTP via nativefetch. All DNS vianode:dns/promises.
Limitations
Free-tier rate limits apply: HackerTarget (50/day), ip-api.com (45/min), VirusTotal community (4/min)
crt.sh can be slow for large domains (30s timeout applied)
ip-api.com requires HTTP (not HTTPS) for free tier
Wayback Machine CDX API can timeout for very popular domains
WHOIS via RDAP may not cover all TLDs (some registrars don't support RDAP yet)
macOS / Linux tested (Windows not tested)
Part of the MCP Security Suite
Project | Domain | Tools |
Browser-based security testing | 39 tools, Firefox, injection testing | |
Cloud security (AWS/Azure/GCP) | 38 tools, 60+ checks | |
GitHub security posture | 39 tools, 45 checks | |
Vulnerability intelligence | 23 tools, 5 sources | |
osint-mcp-server | OSINT & reconnaissance | 37 tools, 12 sources |
Available Tools
37 toolsbgp_asnB
Look up ASN details and announced IPv4/IPv6 prefixes via BGPView. Returns ASN name, description, contacts, and all announced prefixes.
Inputs: asn (required).
bgp_ipA
Look up BGP routing information for an IP address. Returns matching prefixes, ASNs, and RIR allocation.
Inputs: ip (required).
bgp_prefixA
Look up details for a specific IP prefix/CIDR. Returns announcing ASNs, name, country, and RIR.
Inputs: prefix (required), cidr (required).
censys_certificatesA
Search Censys certificate database. Returns certificate fingerprints, subjects, issuers, validity, and SANs. Requires CENSYS_API_ID + CENSYS_API_SECRET.
Inputs: query (required), per_page.
censys_host_detailsA
Get detailed Censys host information for a single IP: all services, certificates, OS, location, ASN. Requires CENSYS_API_ID + CENSYS_API_SECRET.
Inputs: ip (required).
censys_hostsA
Search Censys for hosts matching a query. Returns IPs, services, ports, location, ASN. Requires CENSYS_API_ID + CENSYS_API_SECRET.
Inputs: query (required), per_page.
crtsh_searchC
Search Certificate Transparency logs via crt.sh. Returns unique subdomains and certificate details (issuer, validity, SANs).
Inputs: domain (required), exclude_expired.
dns_email_securityA
Analyze email security posture: SPF, DMARC, DKIM records with risk assessment and recommendations. Checks common DKIM selectors (google, selector1, selector2, k1, etc.).
Inputs: domain (required), dkim_selectors.
dns_lookupB
Resolve DNS records for a domain. Supports A, AAAA, MX, TXT, NS, SOA, CNAME, SRV record types.
Inputs: domain (required), type (required).
dns_reverseA
Perform reverse DNS (PTR) lookup for an IP address. Returns associated hostnames.
Inputs: ip (required).
dns_spf_chainA
Recursively resolve SPF include chain. Shows all included domains, IP ranges, detected services (Google Workspace, Microsoft 365, SendGrid, etc.), and RFC 7208 lookup limit compliance.
Inputs: domain (required), max_depth.
dns_srv_discoverA
Discover SRV records and common service CNAMEs for a domain. Probes for SIP, XMPP, Autodiscover, LDAP, Kerberos, CalDAV, CardDAV, and checks CNAMEs for autodiscover, lyncdiscover, OWA, ADFS, etc.
Inputs: domain (required).
dns_wildcard_checkA
Check if a domain has wildcard DNS configured by resolving a random subdomain.
Inputs: domain (required).
geoip_batchA
Batch geolocate up to 100 IP addresses at once. Uses ip-api.com (free, no API key).
Inputs: ips (required).
geoip_lookupA
Geolocate an IP address: country, city, ISP, ASN, proxy/hosting/mobile detection. Uses ip-api.com (free, no API key).
Inputs: ip (required).
hackertarget_aslookupC
Look up ASN information for an IP or ASN via HackerTarget. Free tier: 50 queries/day.
Inputs: query (required).
hackertarget_hostsearchA
Find subdomains and their IPs for a domain via HackerTarget. Free tier: 50 queries/day.
Inputs: domain (required).
hackertarget_reverseipA
Reverse IP lookup via HackerTarget — find all domains hosted on an IP. Free tier: 50 queries/day.
Inputs: ip (required).
m365_tenantB
Discover Microsoft 365 tenant information for a domain. Returns tenant ID, region, and OpenID configuration endpoints.
Inputs: domain (required).
m365_userrealmB
Detect authentication type for a domain's Microsoft 365 tenant. Returns namespace type (Managed/Federated), federation brand name, and auth endpoints.
Inputs: domain (required).
osint_domain_reconA
Quick domain reconnaissance combining free sources: DNS (A/MX/NS/TXT), WHOIS, crt.sh subdomains, HackerTarget hosts, and email security analysis. No API keys required.
Inputs: domain (required).
osint_list_sourcesA
List all OSINT data sources, their availability, API key requirements, and tool counts. Use this to check which sources are configured.
Inputs: no named parameters.
shodan_dns_resolveB
Resolve hostnames to IPs using Shodan's DNS resolver. Requires SHODAN_API_KEY.
Inputs: hostnames (required).
shodan_exploitsA
Search Shodan's exploit database for public exploits matching a query. Requires SHODAN_API_KEY.
Inputs: query (required), type.
shodan_hostA
Get Shodan host details for an IP: open ports, services, banners, vulns, OS, ASN, geolocation. Requires SHODAN_API_KEY.
Inputs: ip (required).
shodan_searchA
Search Shodan for hosts matching a query (e.g. 'apache port:443 country:US'). Requires SHODAN_API_KEY.
Inputs: query (required), page, facets.
st_dns_historyA
Get historical DNS records for a domain via SecurityTrails. Shows first/last seen dates, values, and organizations. Requires ST_API_KEY.
Inputs: domain (required), type (required).
st_subdomainsA
Enumerate subdomains for a domain via SecurityTrails. Returns FQDNs. Requires ST_API_KEY.
Inputs: domain (required).
st_whoisA
Enhanced WHOIS lookup via SecurityTrails with registrant/admin/technical contacts. Requires ST_API_KEY.
Inputs: domain (required).
vt_domainA
VirusTotal domain analysis: reputation score, detection stats, categories, registrar, DNS records. Requires VT_API_KEY.
Inputs: domain (required).
vt_ipA
VirusTotal IP analysis: reputation, detection stats, country, ASN, network. Requires VT_API_KEY.
Inputs: ip (required).
vt_subdomainsB
Enumerate subdomains for a domain via VirusTotal. Requires VT_API_KEY.
Inputs: domain (required), limit.
vt_urlB
Submit a URL to VirusTotal for scanning and get analysis results (malicious/suspicious/harmless). Requires VT_API_KEY.
Inputs: url (required).
wayback_snapshotsA
Get Wayback Machine snapshot history for a specific URL. Returns timestamps, status codes, and direct archive links. Shows first/last seen dates.
Inputs: url (required), limit.
wayback_urlsA
Search Wayback Machine for archived URLs of a domain. Returns unique URLs with timestamps, status codes, and MIME types. Useful for finding old endpoints, hidden paths, and removed content.
Inputs: domain (required), match_type, filter, limit.
whois_domainA
RDAP/WHOIS lookup for a domain. Returns registrar, registration/expiration dates, nameservers, and contact entities.
Inputs: domain (required).
whois_ipB
RDAP/WHOIS lookup for an IP address. Returns network name, CIDR range, country, and responsible entities.
Inputs: ip (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 37 tools
Most tools are clearly distinct by source and operation. A few overlaps exist: multiple whois-like tools (whois_domain, whois_ip, st_whois) and DNS tools, but descriptions differentiate them well. No critical ambiguity.
Predominantly source_verb pattern (e.g., bgp_asn, shodan_search). Some tools like geoip_lookup and hackertarget_* deviate but are consistent within their group. Minor inconsistencies reduce it from 5.
37 tools is high for an MCP server. While the breadth of OSINT sources justifies many tools, it may overwhelm agents. Still well-scoped for its purpose, but borderline.
Covers a comprehensive set of OSINT domains: DNS, WHOIS, BGP, Shodan, Censys, VirusTotal, certificate transparency, email security, Microsoft 365, Wayback Machine. No obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
30 security tools for AI agents: phishing links, exposure maps, DNS, SSL, PQC, history, pivots.
Hyperion — MCP tool marketplace for AI agents: web, OSINT, security, research via one key.
54 AI agent tools: OSINT, intel feeds, DeFi, crypto, weather, DNS, proxies. x402 micropayments.
35 WHOIS, DNS, IP, threat intelligence, email, and bulk tools for AI agents via WhoisXML API.
Related MCP Servers
- AlicenseAqualityCmaintenanceA comprehensive reconnaissance toolset that provides AI agents with 37 tools across 12 data sources like Shodan and VirusTotal for automated intelligence gathering. It enables agents to perform domain reconnaissance, attack surface mapping, and cross-platform data correlation within a single conversational interface.37364 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to orchestrate OSINT reconnaissance pipelines, including subdomain takeover detection, URL harvesting, secret scanning, and JS analysis, by chaining 73 tools with smart target detection and deduplication.MIT
- AlicenseAqualityCmaintenanceEnables AI-driven open-source intelligence investigations by exposing 30 tools for scanning emails, usernames, domains, IPs, and more, with real subprocess execution.3139 PyPI12MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to perform anti-bot web scraping, dynamic SPA rendering, YouTube transcript extraction, and deep OSINT/GEOINT intelligence gathering through 23 integrated tools.-