Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Threatcluster

by Jam0kversion 0.2.3i★ –iComputer or cloud
Registry nameio.github.Jam0k/threatcluster

Install

Overview

Description from the maker (original English)

Live threat intel for agents: incidents, actors, CVEs with KEV/EPSS, ransomware leak-site victims.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Computer or cloud
  • Transport: stdio, Streamable HTTP
  • Category: Other
  • You need to fill in: THREATCLUSTER_API_KEY, X-API-Key

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • You fill in yourself: THREATCLUSTER_API_KEY, THREATCLUSTER_API_BASE, X-API-Key

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "threatcluster": {
      "command": "npx",
      "args": [
        "-y",
        "threatcluster-mcp"
      ],
      "env": {
        "THREATCLUSTER_API_KEY": "your-value",
        "THREATCLUSTER_API_BASE": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add --transport http threatcluster https://threatcluster.io/mcp --header 'X-API-Key: your-value'

Or run it on your computer

claude mcp add threatcluster --env THREATCLUSTER_API_KEY=your-value --env THREATCLUSTER_API_BASE=your-value -- npx -y threatcluster-mcp

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "threatcluster": {
      "url": "https://threatcluster.io/mcp",
      "headers": {
        "X-API-Key": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "threatcluster": {
      "command": "npx",
      "args": [
        "-y",
        "threatcluster-mcp"
      ],
      "env": {
        "THREATCLUSTER_API_KEY": "your-value",
        "THREATCLUSTER_API_BASE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "threatcluster": {
      "type": "http",
      "url": "https://threatcluster.io/mcp",
      "headers": {
        "X-API-Key": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "threatcluster": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "threatcluster-mcp"
      ],
      "env": {
        "THREATCLUSTER_API_KEY": "your-value",
        "THREATCLUSTER_API_BASE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • THREATCLUSTER_API_KEY secret required env
    ThreatCluster API key (tc_live_... / tc_agent_...). Free keys: https://threatcluster.io/api
  • THREATCLUSTER_API_BASE env
    API base URL
  • X-API-Key secret required HTTP header
    ThreatCluster API key. Free keys: https://threatcluster.io/api

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account Jam0k, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Otheri

  • More stars than 0% of the other 32572 servers in this category
  • Published to the registry more recently than 50% of the other 32572 servers in this category
  • Basic checks equal to or better than 100% of the other 32572 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Threatcluster safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: THREATCLUSTER_API_KEY, X-API-Key

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.2.3) reached the registry 41 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, AvaHR

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated yesterday
Install

AvaHR

by avahr.com

Read hiring data and create inactive assessment and questionnaire drafts for human review.

Runs in the cloudUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

ThreatCluster: free CTI API and MCP server

A free threat intelligence API (100 credits a day, no card) and an MCP server over it. Ask Claude, Cursor or any MCP client what is new, who was hit, whether a CVE is exploited, and get answers from a live corpus of deduplicated incident clusters, actor and malware profiles, CVEs with KEV and EPSS, and ransomware leak-site victims.

An MCP server that gives Claude, Cursor, VS Code, Windsurf, Zed and any other MCP client live threat intelligence from ThreatCluster (setup guide): incident clusters (one deduplicated story per incident, with a threat score, timeline and extracted entities), entity profiles (actors, malware, tools, vendors, CVEs), CVE records with KEV / EPSS / exploit status, and ransomware leak-site victims.

It is a thin, auditable wrapper over the public REST API. Every tool call is one or two GETs to https://threatcluster.io/api/public/v1 with your API key; nothing else leaves your machine, and there is no telemetry.

Why this and not a feed aggregator

Most free CTI MCP servers wrap other people's indicator feeds (OTX, abuse.ch, AbuseIPDB). ThreatCluster is the corpus itself: every story is one cluster built from every source that covered it, with a threat score, a timeline and the entities extracted from the text, plus the leak-site victim list and CVE exploit status in the same API. The free key covers all of it with a 7-day lookback; paid plans extend the window. Details and the hosted endpoint (https://threatcluster.io/mcp) are at threatcluster.io/about/free-api.

Published twice from one tool spec, so both are identical:

RuntimeInstallPackage
Python 3.10+uvx threatcluster-mcp (or pipx run threatcluster-mcp)PyPI: threatcluster-mcp
Node 18+npx -y threatcluster-mcpnpm: threatcluster-mcp

1. Get a key

Free keys carry the five read scopes, 100 credits a day, 30 requests a minute and a 7-day lookback: https://threatcluster.io/api. Put it in THREATCLUSTER_API_KEY. If you use the tc CLI and have run tc auth login, the Python server picks that credential up automatically (keyring or the ~/.config/tc-cli/credentials file); the Node server reads the file only.

2. Add the server

Claude Code

claude mcp add threatcluster -e THREATCLUSTER_API_KEY=tc_live_... -- npx -y threatcluster-mcp

or the Python build:

claude mcp add threatcluster -e THREATCLUSTER_API_KEY=tc_live_... -- uvx threatcluster-mcp

Claude Desktop (claude_desktop_config.json, Settings > Developer > Edit Config)

{

"mcpServers": { "threatcluster": { "command": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } }

Cursor — one-click: see listings/cursor-deeplink.md, or add to ~/.cursor/mcp.json / .cursor/mcp.json:

{ "mcpServers": { "threatcluster": { "command": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } }

VS Code (.vscode/mcp.json; the input prompts for the key instead of storing it in the file)

{

"inputs": [{ "type": "promptString", "id": "tc-key", "description": "ThreatCluster API key", "password": true }], "servers": { "threatcluster": { "type": "stdio", "command": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "${input:tc-key}" } } } }

Windsurf (~/.codeium/windsurf/mcp_config.json) — same mcpServers block as Claude Desktop.

Zed (settings.json)

{ "context_servers": { "threatcluster": { "command": { "path": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } } }

Check a configuration without starting a client: THREATCLUSTER_API_KEY=... npx -y threatcluster-mcp --check (prints where the key came from and where it will be sent — never the key).

3. Tools

Costs are ThreatCluster API credits (free keys: 100 a day). Every result carries cost (credits this call spent), budget (remaining today, from the response headers), as_of, and url fields on every cluster, entity, victim and CVE for citation.

ToolWhat it answersAPI endpoint(s)Credits
search_threatsKeyword search over incident clusters; phrase, then all words, then any word; matched_stage says whichGET /threats?keyword= per term1 per term (max 8 calls)
search_everythingClusters, entity profiles and dark-web hits in one callGET /search5
newest_threatsWhat is new in 1h / 24h / 7d / 30d, by first report or by momentumGET /threats1
get_threatFull record for one cluster: summary, timeline, articles, entities; include_iocs adds validated indicatorsGET /threats/{id} (+ /iocs)1 (+1)
leak_site_victimsRansomware leak-site listings by sector / group / country / victim, plus a tally of the whole windowGET /darkweb/ransomware/victims + /facets2
lookup_entityProfile of an actor, malware, tool, vendor, product, country, industry or CVEGET /entities/search + GET /entities/{type}/{value}2
get_vulnerabilityOne CVE: CVSS, EPSS, KEV with due date, exploits, vendors, productsGET /vulnerabilities/{cve_id}1
exploited_vulnerabilitiesCVEs in a window filtered to KEV / public exploit / severity / vendor / productGET /vulnerabilities1
trending_entitiesActors, malware, tools, vendors, CVEs, countries rising over a windowGET /entities/trending1
api_budgetRemaining credits and rate state from the last responses — no API call—0

One prompt, threatcluster_analyst, carries the analyst rules (tools first, cite every fact with the returned url, say what period you searched, leak-site listings are claims).

Errors come back as MCP tool errors with the API's own message: 401 tells the agent to set THREATCLUSTER_API_KEY and where a free key comes from, 429 carries the Retry-After, 403 names the missing scope or the lookback window and the plan that lifts it.

More on threatcluster.io

Security

  • The key is read from THREATCLUSTER_API_KEY (then TC_REFRESH_TOKEN, then the tc-cli store) and sent only as the X-API-Key header (or Authorization: Bearer for a JWT minted by tc login) to THREATCLUSTER_API_BASE.
  • It is never logged, never printed by --check, never written to disk, and scrubbed from every error string; the test suites assert the key is absent from all stdout and stderr bytes, including on a 401 whose body quotes it.
  • stdio only. No outbound connection other than the API. No analytics.
  • All tools are read-only (readOnlyHint: true) and validate arguments against the spec before any request is made.

Environment

VariableDefaultPurpose
THREATCLUSTER_API_KEY—your key (tc_live_…, tc_agent_…) or a bearer from tc login
THREATCLUSTER_API_BASEhttps://threatcluster.io/api/public/v1API base (self-hosted or local test servers)
THREATCLUSTER_SITEhttps://threatcluster.iobase for the url fields in results

Repository layout

tools/tools.json   the single source of truth: tools, schemas, endpoint mapping, credits, prompt

python/ PyPI package (hatchling; mcp + httpx) -> console script threatcluster-mcp node/ npm package (TypeScript; @modelcontextprotocol/sdk + zod) -> bin threatcluster-mcp tests/fixtures/ recorded API responses and tool outputs; both packages must replay them identically listings/ directory manifests and submission copy (Smithery, MCP registry, Glama, mcp.so, Cursor, VS Code) .github/workflows/ CI (both suites) and tag-triggered publishing (PyPI trusted publishing, npm provenance)

python3 tools/sync_tools.py copies the spec into both packages; CI fails if the copies drift.

Development

pip install -e "python/[test]" && (cd python && pytest)

cd node && npm install && npm test

live validation against a real API (spends ~30 credits, re-records tests/fixtures):

THREATCLUSTER_LIVE=1 THREATCLUSTER_API_KEY=... THREATCLUSTER_API_BASE=... pytest python/tests/test_live.py

Related: the tc CLI, the API reference, the agent-tool recipe for a bare tool-calling function, and the integration guide.

GPL-3.0-or-later © ThreatCluster Ltd.

Ask PopNx