Skip to main content
Glama
vaulpann

IZZO Platform MCP Server

by vaulpann

IZZO — Platform

The backend of IZZO: the autonomous agents that hunt X for supply-chain compromises, plus the public MCP server that delivers confirmed intel to coding agents. One codebase, two roles — the detection pipeline writes to Postgres; the MCP/REST server reads from it.

The problem. Supply-chain attacks are one of the most prominent and damaging forms of cyber-attack in the age of AI-powered social engineering and vulnerability detection. Modern enterprises treat a published CVE as ground truth — too slow for this new age. Meanwhile engineering teams, paired with agents like Grok Build, Claude Code, and Codex, ship faster than ever with no real-time knowledge of which packages are compromised.

The insight. The security and engineering communities on X identify and disclose critical supply-chain compromises as they happen — routinely hours to days ahead of security vendors and traditional vulnerability databases. That gap is the difference between a win and a loss. IZZO is built directly around it.

The pipeline

IZZO runs as a pipeline of a few core agents, all driven by the X API via its MCP tools:

  1. Hunt. Agent-driven search on two cadences — a light sweep every 10 minutes for anything critical just reported in that window, and a deep sweep every hour with full coverage across every major package ecosystem (npm, PyPI, crates, RubyGems, NuGet, Go, Docker, extensions), attack patterns, and known security-researcher accounts. The agent doesn't just run fixed queries — it pivots off any finding (package names, unique publishers, the X accounts that reported it). When a finding is confirmed, IZZO keeps monitoring that account every hour for new details or new vulnerabilities they report. → agents/scout.py

  2. Validate. Every candidate is treated as a potential real attack. Validation leans both on and off X — pulling the linked security-firm advisory (Socket, Checkmarx, Snyk) for exact package names/versions/IOCs and cross-referencing OSV — to confirm authenticity. → agents/validator.py

  3. Analyze. For confirmed incidents, IZZO downloads the actual artifact from the registry (never executing it), diffs it against the last known-good version, and statically scans for the payload — corroborating or invalidating the report. It then pivots on the publisher to surface sibling packages shipped in the same window. → agents/analyst.py, tools/

  4. Correlate across X. With a full picture of the incident and its IOCs (publisher handles, C2 domains, wallets, PR authors), IZZO goes back to the X API to search for those exact indicators — pinning the earliest sighting and surfacing connections to other actors and campaigns that no single report has combined. → agents/ioc_pivot.py

  5. Deliver. Confirmed incidents land in a structured database (incidents, IOCs, X users/posts, full activity trace), auto-post to @IZZOdetections, and are served through the unauthenticated MCP server + REST API below. → pipeline.py, poster.py, server.py

Related MCP server: DepHealth MCP

The delivery layer — server.py

A read-only window onto the same database, for coding agents and the web:

MCP server — /mcp (streamable HTTP, no API key):

  • check_packages(["npm:left-pad","pypi:requests"]) — call before adding/upgrading a dependency

  • list_recent_incidents(days, ecosystem, only_confirmed) · get_incident(id)

claude mcp add --transport http izzo https://izzo-api-…run.app/mcp/

REST — /api/v1: vulnerabilities, vulnerabilities/{id}, packages/check, activity (the live call-trace of every X API query), feed, stats.

Layout

src/izzo/
  agents/      scout (hunt), validator, analyst, context, ioc_pivot, schemas
  tools/       registry download (no-exec) + diff + static scanner + web fetch + OSV
  db/          SQLAlchemy models (the shared schema)
  pipeline.py  orchestration: hunt → validate → analyze → correlate → deliver
  poster.py    posts confirmed incidents to @IZZOdetections via the X API
  server.py    FastAPI: REST /api/v1 + mounted MCP server at /mcp
  cli.py       run-once, schedule, auth, drafts, vulns, announcements …

Run

uv sync
cp .env.example .env     # OPENAI_API_KEY, X CLIENT_ID/SECRET/BEARER_TOKEN, IZZO_DATABASE_URL

# detection pipeline
uv run izzo auth         # one-time X OAuth for the posting account
uv run izzo run-once     # a single hunt → validate → analyze → correlate → deliver cycle
uv run izzo schedule     # continuous: light every 10m, deep every hour

# MCP + REST server
uv run uvicorn izzo.server:app --port 8080

The X API is reached through the hosted X MCP server (api.x.com/mcp): app-only bearer token for search, user-context OAuth for posting. Package artifacts are only ever downloaded and statically analyzed — never executed.

Deployed on GCP Cloud Run (a scheduled detection job + a public MCP/REST service) + Postgres.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Validates and checks packages across 19 ecosystems to prevent AI agents from installing hallucinated, deprecated, or malicious packages.
    55 npm
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides software supply-chain intelligence for AI agents, enabling them to query package metadata, versions, downloads, dependencies, and health signals for npm, PyPI, and crates.io packages without API keys.
    MIT