# VPNDetection (npm · vpndetection-mcp)

VPN, proxy, Tor, hosting and CDN detection for any IP address, from the VPNDetection API.

- Trust score: 34/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-08

## Components

- remote · `mcp.vpndetection.io`: 39/100, [markdown](https://verifymcp.io/servers/vpndetection-io-mcp/mcp.md), [page](https://verifymcp.io/servers/vpndetection-io-mcp/mcp)
- npm · `vpndetection-mcp`: 34/100 (this document), [markdown](https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp.md), [page](https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp)

## Channel facts

- Registry: `npm`
- Package: `vpndetection-mcp`
- Version: `6.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-08.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 9 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to vpndetection-io/mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 0/100
  - Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.
- **Capabilities**: 0/100
  - Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.

**Unverified: 5 categories.** Categories scored 0 because our sandbox has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you.

## Install

### How do I install the VPNDetection MCP server?

VPNDetection runs locally as an npm package, launched with npx -y vpndetection-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add vpndetection-io-mcp -- npx -y vpndetection-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "vpndetection-io-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "vpndetection-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "vpndetection-io-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "vpndetection-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add vpndetection-io-mcp -- npx -y vpndetection-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vpndetection-io-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "vpndetection-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add vpndetection-io-mcp --command npx --arg -y --arg vpndetection-mcp
```

### Hermes

```yaml
mcp_servers:
  vpndetection-io-mcp:
    command: "npx"
    args: ["-y", "vpndetection-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "vpndetection-io-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "vpndetection-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add vpndetection-io-mcp -t stdio -c npx -a -y vpndetection-mcp
```

### Other

```json
{
  "mcpServers": {
    "vpndetection-io-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "vpndetection-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-08 (score 34, −47)

- [security regression] Malware scan: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: 0.86 → 1.00
- [functional] First check of Schema quality: unverified
- [functional] Package version: 5.3.6 → 6.0.0

### 2026-10-04 (score 81, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-03 (score 66)

First indexed and scored.

## MCP tools (7)

### `lookup_ip` (~105 tokens)

Look up an IP address

Classify a single IPv4 or IPv6 address: whether it belongs to a VPN, a residential, datacenter or mobile proxy, a Tor node, a public relay, a hosting provider or a CDN, with the provider name where we have one. Private and reserved addresses are answered locally and cost nothing. Always read `coverage.note` before concluding anything from a field that is not in the result.

Input parameters:

- `ip` (string, required): The IPv4 or IPv6 address to classify.

Output parameters:

- `coverage` (object): Which datasets this result covered. Read `note` before interpreting any absent field.
- `result` (object): The union of every plan's answer. Only `ip` and `is_vpn` are guaranteed; each remaining field is present when your plan includes it, and absent otherwise. A client that must work across plans should…

### `lookup_ips` (~134 tokens)

Look up several IP addresses

Classify a list of addresses in one call, returning a map keyed by address so duplicates collapse and the order you passed them stops mattering. Pass the whole list rather than splitting it yourself: a long one is batched for you. Prefer this over repeated `lookup_ip` calls when you already have the list, for example when triaging a log file. An address that fails carries its error in place of a result rather than failing the batch. Always read `coverage.note` before concluding anything from a field that is not in the result.

Input parameters:

- `ips` (array, required): The IPv4 or IPv6 addresses to classify.

Output parameters:

- `coverage` (object): Which datasets this result covered. Read `note` before interpreting any absent field.
- `results` (object): Keyed by address. A value is either a result or an error.

### `my_entitlement` (~117 tokens)

Plan and usage for this key

What this API key is entitled to and how much of it has been used: the plan, the field tier that decides how much of a lookup answer comes back, the requests counted so far, the allowance, and when it resets. Use it to explain why a field is missing from a lookup, or before a large batch. Usage counts against the anniversary of the subscription rather than the calendar month, and can lag a few seconds behind. A null `hard_limit` means we never stop serving - it is NOT a limit of zero.

Output parameters:

- `entitlement` (object)

### `list_databases` (~149 tokens)

List databases

The database catalog as this API key's organization may see it, one entry per database FAMILY, with `standing` saying where their license stands: `licensed` if the family is theirs today, `expired` if the term has ended, `unlicensed` if it is published but has never been bought. Each entry has a `base` id, which is what the license names, and a `versions` array whose `id` is what the other database tools take - pass `versions[].id` (`cdn_ip_v1`), never the `base` (`cdn_ip`). Ask again rather than holding on to this: it is answered per key and is not the same for everyone.

Output parameters:

- `databases` (array)

### `database_metadata` (~127 tokens)

Describe a database

What is inside one database before you fetch it: the columns in each published format with their types, a few sample rows, the row count, the build date and the file sizes. Use this to answer questions about what a database contains without downloading it - the files reach several GB - and to budget a transfer before starting one.

Input parameters:

- `dataset_id` (string, required): A VERSIONED database id, from `versions[].id` in `list_databases` - `cdn_ip_v1`, not `cdn_ip`. The unversioned base id is a license reference and is not accepted here.

Output parameters:

- `entries` (integer): Row count in the current build
- `id` (string)
- `sample` (object): A few real rows, keyed by format
- `sample_entries` (integer): Row count in the evaluation sample
- `sample_size` (object): Bytes per format of the evaluation sample, where one is published
- `schema` (object): Columns, keyed by format
- `size` (object): Bytes per format
- `update_freq` (string): How often a new build is published
- `updated` (string)

### `database_checksum` (~140 tokens)

Get a database's checksums

The published digests for one database file, for verifying a copy you already hold or deciding whether a build has changed since you last fetched it. It is licensed like the download itself, so a database this key cannot download is refused here too. Looking up a checksum is not a download and does not appear in `list_downloads`.

Input parameters:

- `dataset_id` (string, required): A VERSIONED database id, from `versions[].id` in `list_databases` - `cdn_ip_v1`, not `cdn_ip`. The unversioned base id is a license reference and is not accepted here.
- `format` (string, required): Which published file to digest.

Output parameters:

- `checksums` (object): The published digests for one database file.

### `list_downloads` (~134 tokens)

List recent download attempts

This organization's own recent download attempts, newest first, REFUSALS INCLUDED - a denial carries the `outcome` and `http_status` that answer "it stopped working", which nothing else here can. Use it to explain a failing fetch, to confirm a transfer ran, or to check whether a request was theirs. This is a bounded WINDOW of at most 200 rows, so a database missing from the answer means it is not in this window - never that it was never downloaded.

Input parameters:

- `limit` (integer): How many attempts to return, newest first. At most 200; the API defaults to 50.

Output parameters:

- `downloads` (array)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp#diagnostics

## Score history

- 2026-10-08: 34
- 2026-10-06: 81
- 2026-10-04: 81
- 2026-10-03: 66

## Common questions

### What is the VPNDetection MCP server?

VPNDetection is an MCP server listed in the public MCP registry as io.github.vpndetection-io/mcp. VPN, proxy, Tor, hosting and CDN detection for any IP address, from the VPNDetection API. This page covers its npm package (vpndetection-mcp).

### Is the VPNDetection MCP server safe to use?

VPNDetection scores 34 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 8 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the VPNDetection MCP server expose?

VPNDetection exposes 7 tools: lookup_ip, lookup_ips, my_entitlement, list_databases, database_metadata, and 2 more. Their descriptions and schemas cost roughly 906 tokens of context every time the server is loaded.

### Is the VPNDetection MCP server still maintained?

VPNDetection is still listed as active in the MCP registry. We last reached this channel on 8 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the VPNDetection MCP server under?

VPNDetection declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/vpndetection-mcp
- Socket report: https://socket.dev/npm/package/vpndetection-mcp
- Repository: https://github.com/vpndetection-io/mcp
- Website: https://vpndetection.io/
- Changelog RSS feed: https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp.json
- HTML version of this page: https://verifymcp.io/servers/vpndetection-io-mcp/vpndetection-mcp
