watchTowr Platform MCP Server
Click on "Install 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., "@watchTowr Platform MCP Serversummarize recent high-severity findings on my 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.
watchTowr Platform MCP Server
A Model Context Protocol (MCP) server that connects AI assistants to the watchTowr Platform, providing real-time access to your external attack surface data, findings, hunts, and threat intelligence.
Features
113 tools covering the full watchTowr Platform API — assets, findings, hunts, certificates, suspicious domains, and more
Read and write — query your attack surface and take action (update statuses, trigger retests, submit seed assets)
Composite intelligence — built-in tools for attack surface summaries, change detection, executive scorecards, and compliance reporting
Secure — authenticates via API key with tenant isolation; credentials never leave your environment
Related MCP server: MCP Kali Server
Prerequisites
watchTowr Platform account with API access enabled
API Key — obtained from your watchTowr Platform dashboard under Settings → API Management
Platform Host — your watchTowr instance URL (e.g.
https://your-tenant.your-region.watchtowr.io)Python 3.10+ and uv (for local installation), or Docker
Quick Start
Local Installation
The watchtowr-api-sdk is included as a git submodule. Choose the path that matches your situation:
New installation
If you are setting up for the first time (or doing a fresh clone), use --recurse-submodules so Git fetches the SDK in one step. You do not need the migration steps below.
git clone --recurse-submodules https://github.com/watchtowr/watchtowr-mcp.git
cd watchtowr-mcp
# Install everything in one step (uv resolves the SDK from the submodule)
uv sync
# Run the server
WATCHTOWR_API_KEY="your-api-key" \
WATCHTOWR_PLATFORM_HOST="https://your-tenant.your-region.watchtowr.io" \
uv run watchtowr-mcpIf you already cloned without submodules, run git submodule update --init --recursive once, then uv sync.
Existing clone (old submodule URL only)
Skip this section if you used a fresh clone as shown above.
If your checkout predates the submodule move to watchtowr-api-sdk-python, Git still points at the old URL. Reset the submodule once:
cd watchtowr-mcp
git pull
git submodule sync
git submodule deinit -f watchtowr-api-sdk
rm -rf .git/modules/watchtowr-api-sdk
git submodule update --init --recursive
uv syncThis is a one-time migration. The SDK then stays pinned to the commit recorded in this repo; git submodule update --init --recursive always checks out that pinned commit.
Docker
The Docker image installs the SDK from the watchtowr-api-sdk submodule in your checkout (copied in at build time), so it uses the same pinned SDK commit as a local install. Make sure the submodule is checked out before building.
New installation
git clone --recurse-submodules https://github.com/watchtowr/watchtowr-mcp.git
cd watchtowr-mcp
docker build -t watchtowr-mcp .If you cloned without --recurse-submodules, run git submodule update --init --recursive first.
Existing clone (old submodule URL only)
If your checkout predates the SDK move to watchtowr-api-sdk-python, run the submodule migration under Local Installation first, then build:
docker build -t watchtowr-mcp .stdio — for MCP clients
docker run -it --rm \
-e WATCHTOWR_API_KEY="your-api-key" \
-e WATCHTOWR_PLATFORM_HOST="https://your-tenant.your-region.watchtowr.io" \
watchtowr-mcpHTTP — standalone service
docker run -d --rm \
-e WATCHTOWR_API_KEY="your-api-key" \
-e WATCHTOWR_PLATFORM_HOST="https://your-tenant.your-region.watchtowr.io" \
-e MCP_TRANSPORT=streamable-http \
-p 8080:8080 \
watchtowr-mcpMCP Client Configuration
Claude Desktop / Cursor (local)
{
"mcpServers": {
"watchtowr": {
"command": "uv",
"args": [
"--directory", "/path/to/watchtowr-mcp",
"run", "watchtowr-mcp"
],
"env": {
"WATCHTOWR_API_KEY": "your-api-key",
"WATCHTOWR_PLATFORM_HOST": "https://your-tenant.your-region.watchtowr.io"
}
}
}
}Claude Desktop / Cursor (Docker)
Build the
watchtowr-mcpimage first — see the Docker section above.
{
"mcpServers": {
"watchtowr": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--env", "WATCHTOWR_API_KEY=your-api-key",
"--env", "WATCHTOWR_PLATFORM_HOST=https://your-tenant.your-region.watchtowr.io",
"watchtowr-mcp"
]
}
}
}Configuration
Variable | Required | Description |
| Yes | Your watchTowr Platform API key |
| Yes | Your watchTowr Platform instance URL |
| No | Transport mode: |
| No | HTTP port when using |
Available Tools
Findings (11 tools)
Tool | Description |
| List findings tagged as CISA Known Exploited Vulnerabilities |
| List findings filtered by severity (Critical, High, Medium, Low) |
| Get full finding detail — description, evidence, CVSS, CVE, EPSS |
| Search with filters: title, severity, status, asset, assignee, tags, date range |
| Change the status of a finding |
| Update the handling state of a finding (Uninvestigated, In Progress, Completed) |
| Trigger a retest to verify remediation |
| List available finding status values |
| Count breakdown of findings by severity level |
| List unresolved findings for a specific business unit |
| Export a finding report as PDF |
Assets (38 tools)
Tool | Description |
| List discovered IP addresses |
| Full detail for a specific IP address |
| List all ports discovered on a specific IP |
| Full detail for a port scoped to an IP address |
| List discovered root domains |
| Full detail for a specific domain |
| List discovered subdomains |
| Full detail for a specific subdomain |
| List open ports with service and banner info |
| Full detail for a specific port |
| List discovered IP ranges with ASN and country |
| Full detail for a specific IP range |
| List cloud storage buckets (S3, GCS, Azure) |
| Full detail for a specific cloud storage asset |
| List discovered code repositories |
| Full detail for a specific repository |
| List discovered container registry images |
| Full detail for a specific container image |
| List discovered SaaS platform instances |
| Full detail for a specific SaaS platform |
| List discovered mobile applications |
| Full detail for a specific mobile application |
| Update the status of any asset type |
| Submit a new seed asset for discovery |
| Get or update scan engine settings for domains, subdomains, and IPs |
| Set criticality for any supported asset type |
| Assign or unassign business units for any supported asset type |
| List, create, update, or delete custom properties on an asset |
| List, create, update, or delete notes on an asset |
| List discovered API documentation assets |
| Full detail for a specific API documentation asset |
| List discovered cloud assets (AWS, GCP, Azure, etc.) |
| Full detail for a specific cloud asset |
| List discovered package manager registry assets |
| Full detail for a specific package manager asset |
| Get change history for a specific asset |
| Get DNS records associated with a specific asset by name |
| Search DNS records across discovered assets |
Hunts (6 tools)
Tool | Description |
| List recent hunts with finding and asset counts |
| Full hunt detail — description, hypothesis, references |
| List findings discovered by a specific hunt |
| List assets tested by a specific hunt |
| Search hunts by keyword, status, type, priority, date |
| Combined summary: detail, severity breakdown, assets tested |
Threat Intelligence (7 tools)
Tool | Description |
| List domains flagged for typosquatting or brand impersonation |
| Full detail including WHOIS data |
| List leaked credentials, exposed configs, interesting endpoints |
| List SSL/TLS certificates with subject, issuer, and expiry |
| Full certificate detail including SANs and key info |
| List certificates expiring within N days |
| Search pending domains awaiting verification or discovery processing |
Intelligence (8 tools)
Tool | Description |
| List vulnerability intelligence entries (CVEs) |
| Get full details for a CVE/vulnerability |
| List adversary/threat actor profiles |
| Get full details for a threat actor |
| list_finding_retest_history | List retest history across all findings |
| get_finding_retest_history_details | Get retest history for a specific finding |
| search_active_defense_library | Search active defense library rules by name, capability, or technique |
| search_capabilities | Search watchTowr capabilities by keyword or category |
Services (2 tools)
Tool | Description |
| List exposed services with technology stack and country |
| List technology statistics for discovered services, ordered by count |
Organisation (5 tools)
Tool | Description |
| Get source IPs to whitelist for watchTowr scanning |
| Get recent platform activity logs |
| Search logs by type, user, keyword, and date range |
| List business units (useful for filtering other tools) |
| Full detail for a specific business unit |
Composite & Triage (13 tools)
Tool | Description |
| Asset counts by type and finding counts by severity |
| All newly discovered assets across every type within N days |
| Combined new assets + new findings within a time window |
| Full security posture for a BU: findings, assets, services, certs |
| Finding details enriched with the related asset's full details |
| Expiring certs cross-referenced with exposed services |
| Hunt findings expanded with details for remediation handoff |
| Executive headlines: critical/high counts, CISA-KEV, expiring certs, top findings |
| Search findings associated with a specific asset |
| Findings open longer than N days |
| Critical/high findings with no assignee |
| Unresolved findings heatmap by asset type |
| New assets not assigned to any business unit |
Reporting & Compliance (12 tools)
Tool | Description |
| Full asset inventory for a business unit |
| All assets marked as out of scope or excluded |
| Asset verification status breakdown across all types |
| Findings bucketed by age (0-7d, 7-30d, 30-90d, 90d+) and severity |
| Opened vs remediated findings per week |
| Most common open ports with service counts |
| Asset types with assets but zero findings — coverage gaps |
| Certificates grouped by health: expired, expiring, valid |
| Single-call executive dashboard: assets, findings, KEV, cert health |
| Weekly trend report: new assets and findings per week |
| Most frequently recurring finding titles — systemic issues |
| Security posture dashboard summary with executive risk metrics |
Incident Response (5 tools)
Tool | Description |
| Find all services in a specific country |
| Exposed services grouped by type with counts |
| Find all services running a specific technology |
| CISA-KEV findings grouped by remediation status |
| Blast radius mapping: subdomains, ports, services for an asset |
Workflow & Automation (6 tools)
Tool | Description |
| Findings remediated within the last N days |
| 24-hour digest: new assets, new findings, activity log |
| Trigger retests for multiple findings at once |
| Update the status of multiple findings at once |
| Prioritized queue of open findings by severity and age |
| Unassigned open findings grouped by severity — triage inbox |
Example Prompts
"Give me an attack surface summary"
"Show all critical findings"
"What new assets were discovered this week?"
"List certificates expiring in the next 30 days"
"Show me suspicious domains flagged for typosquatting"
"Get the details for finding 1234 and trigger a retest"
"List all findings for business unit 5"
"What hunts have been completed recently?"
"Give me the executive risk scorecard"
"Show me stale findings older than 30 days"
"What critical findings are unassigned?"
"Run a daily digest"
"Bulk retest findings 101,102,103"
"Show me all assets in country CN"
"What services are running Apache?"
"Give me the CISA-KEV remediation status"
"Compare week-over-week changes for the last 4 weeks"Development
Project Structure
watchtowr-mcp/
├── watchtowr_mcp_server/
│ ├── __init__.py
│ ├── mcp.py # Entry point
│ ├── client.py # API client and shared helpers
│ └── tools/
│ ├── __init__.py # Tool registration
│ ├── findings.py # Finding tools
│ ├── assets.py # Asset tools
│ ├── hunts.py # Hunt tools
│ ├── threat_intel.py # Suspicious domains, POI, certificates
│ ├── services.py # Service listing tools
│ ├── organization.py # Business units, activity logs, source IPs
│ ├── composite.py # Cross-cutting intelligence, triage, and posture tools
│ ├── reporting.py # Compliance, audit, executive reporting tools
│ ├── incident.py # Incident response and threat hunting tools
│ └── workflow.py # Bulk operations, queues, and automation tools
├── pyproject.toml
├── Dockerfile
└── README.mdTests
A two-layer test suite lives under test/ — see test/README.md for details.
Unit tests (offline, no credentials): verify every SDK method the server imports actually exists, that
README.mdstays in sync with the@mcp.tool()registry, and thatsdk_compatpatches apply cleanly.Integration tests (live tenant): one test per tool across all 104 tools. Auto-skipped when
WATCHTOWR_API_KEY/WATCHTOWR_PLATFORM_HOSTare absent. Mutating tools are gated behind a separate--run-writesflag.
# Offline checks
uv run pytest test/unit
# Full read-only sweep against a tenant
WATCHTOWR_API_KEY=... WATCHTOWR_PLATFORM_HOST=... uv run pytest test/integration -m live
# Include status flips, retests, seed asset submission
WATCHTOWR_API_KEY=... WATCHTOWR_PLATFORM_HOST=... uv run pytest test/integration -m live --run-writesSupport
API Reference: watchTowr Platform API Documentation
Technical Support: Contact the watchTowr support team
Requires a valid watchTowr Platform subscription. For more information, visit watchtowr.com.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceConnects AI agents with the CrowdStrike Falcon platform to enable intelligent security analysis, providing programmatic access to detections, incidents, threat intelligence, vulnerabilities, and other security capabilities for advanced security operations and automation.234MIT
- Flicense-qualityDmaintenanceConnects AI assistants to 55+ Kali Linux security tools for automated CTF solving, penetration testing, and security analysis across 7 categories including cryptography, forensics, web security, and binary exploitation.50
- AlicenseBqualityCmaintenanceConnects AI assistants to the Vectra AI security platform to enable intelligent analysis of threat detection data and automated incident response workflows. It allows users to investigate threats, take response actions, and generate security reports using natural language.235MIT
- AlicenseAqualityCmaintenanceProvides AI agents with 37 OSINT tools and 12 data sources to perform unified reconnaissance, domain analysis, and attack surface mapping. It enables agents to query, correlate, and reason across platforms like Shodan, VirusTotal, and Censys in parallel.3780341MIT
Related MCP Connectors
Live data gateway for AI — 3,300+ tools across 750+ sources, with citations
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/watchtowr/watchtowr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server