Package verdicts for AI coding agents: check npm, PyPI, Go and NuGet installs before they run.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer token: a CyberXYZ dashboard API key (sk_xyz_) or the token from xyz login. Without it the server offers the public tier: public verdicts, advisories, package search and model reports.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Public safety verdict for ONE package (optionally one version) from CyberXYZ's global threat data: known-malicious releases (always shown in full), advisories, commit-level analysis and version anomalies. Call it BEFORE adding or installing an npm, PyPI, Go or NuGet dependency. `decision`: block or quarantine = do not install; alert = installable but flagged; allow = ok; unknown = no record, not vetted: ask the user; unverified = the check did not complete: retry, then ask the user. Signing in adds the full install-time verdict (see `sign_in_adds`).
Package name as published (npm scopes like @org/pkg; Go module path; NuGet id)
Package ecosystem: npm, pypi, go or nuget
Exact version, e.g. 1.2.3. Omit to check the latest known release.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http xyz-mcp https://mcp.cyberxyz.io/mcp
Headers
Authorization (optional, not in the config above): Optional. Bearer token: a CyberXYZ dashboard API key (sk_xyz_) or the token from xyz login. Without it the server offers the public tier: public verdicts, advisories, package search and model reports.Public safety verdict for ONE package (optionally one version) from CyberXYZ's global threat data: known-malicious releases (always shown in full), advisories, commit-level analysis and version anomalies. Call it BEFORE adding or installing an npm, PyPI, Go or NuGet dependency. `decision`: block or quarantine = do not install; alert = installable but flagged; allow = ok; unknown = no record, not vetted: ask the user; unverified = the check did not complete: retry, then ask the user. Signing in adds the full install-time verdict (see `sign_in_adds`).
| Argument | Type | Description |
|---|---|---|
| name* | string | Package name as published (npm scopes like @org/pkg; Go module path; NuGet id) |
| version | any | Exact version, e.g. 1.2.3. Omit to check the latest known release. |
| ecosystem* | string | Package ecosystem: npm, pypi, go or nuget |
{
"type": "object",
"title": "check_packageArguments",
"required": [
"ecosystem",
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name",
"maxLength": 214,
"minLength": 1,
"description": "Package name as published (npm scopes like @org/pkg; Go module path; NuGet id)"
},
"version": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Version",
"default": null,
"description": "Exact version, e.g. 1.2.3. Omit to check the latest known release."
},
"ecosystem": {
"enum": [
"npm",
"pypi",
"go",
"nuget"
],
"type": "string",
"title": "Ecosystem",
"description": "Package ecosystem: npm, pypi, go or nuget"
}
}
}Full detail for one advisory id (CVE-..., GHSA-..., or an OSV id such as PYSEC-...): every affected package (`affected_packages`: package, ecosystem, ranges, fixed), the primary one's version ranges and fixed version, severity, CVSS, EPSS (probability of exploitation in 30 days), CISA KEV (exploited in the wild), references and how many packages depend on the affected one. Pass `package` / `ecosystem` to describe a specific affected package. Use it to explain an advisory to the user.
| Argument | Type | Description |
|---|---|---|
| id* | string | CVE-YYYY-NNNN, GHSA-xxxx-xxxx-xxxx or an OSV id |
| package | any | Optional: the affected package to describe, when the advisory covers several |
| ecosystem | any | Optional: that package's ecosystem |
{
"type": "object",
"title": "get_vulnerabilityArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"maxLength": 80,
"minLength": 5,
"description": "CVE-YYYY-NNNN, GHSA-xxxx-xxxx-xxxx or an OSV id"
},
"package": {
"anyOf": [
{
"type": "string",
"maxLength": 214
},
{
"type": "null"
}
],
"title": "Package",
"default": null,
"description": "Optional: the affected package to describe, when the advisory covers several"
},
"ecosystem": {
"anyOf": [
{
"enum": [
"npm",
"pypi",
"go",
"nuget",
"maven",
"cargo",
"rubygems",
"packagist"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Ecosystem",
"default": null,
"description": "Optional: that package's ecosystem"
}
}
}CyberXYZ's public report on a Hugging Face model's install risk: risk level, XYZ score, the driving reason, the worst dependencies and recent risk events. verdict UNKNOWN (not watched, pending, gated) is not safe: ask the user. Signing in adds every reason, all flagged dependencies and per-file load safety.
| Argument | Type | Description |
|---|---|---|
| repo_id* | string | Hugging Face repo id, owner/name (e.g. meta-llama/Llama-3.1-8B) |
{
"type": "object",
"title": "model_riskArguments",
"required": [
"repo_id"
],
"properties": {
"repo_id": {
"type": "string",
"title": "Repo Id",
"maxLength": 240,
"minLength": 3,
"description": "Hugging Face repo id, owner/name (e.g. meta-llama/Llama-3.1-8B)"
}
}
}CyberXYZ's public report for a package: every published advisory (CVE/GHSA ids, severity, CVSS, EPSS, KEV, affected ranges, fixed version), malicious-package records in full, how many packages depend on it, what it pulls in (counts and worst severity) and AI-model usage. Package-level; for a verdict on a specific version call check_package.
| Argument | Type | Description |
|---|---|---|
| name* | string | Package name as published (npm scopes like @org/pkg; Go module path; NuGet id) |
| ecosystem* | string | Package ecosystem |
{
"type": "object",
"title": "package_infoArguments",
"required": [
"ecosystem",
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name",
"maxLength": 214,
"minLength": 1,
"description": "Package name as published (npm scopes like @org/pkg; Go module path; NuGet id)"
},
"ecosystem": {
"enum": [
"npm",
"pypi",
"go",
"nuget",
"maven",
"cargo",
"rubygems",
"packagist"
],
"type": "string",
"title": "Ecosystem",
"description": "Package ecosystem"
}
}
}Find a package by name across every ecosystem (exact match first, then prefix, then most advisories), with its advisory count and worst severity. Use it when you do not know a package's ecosystem or exact spelling; then call package_info or check_package.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (1-25) |
| query* | string | Package name or part of one |
{
"type": "object",
"title": "searchArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Max results (1-25)"
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 214,
"minLength": 2,
"description": "Package name or part of one"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.