VPNDetection
NPM · VPNDETECTION-MCP · 2 COMPONENTS · SCANNED OCT 8
VPN, proxy, Tor, hosting and CDN detection for any IP address, from the VPNDetection API.
Available components
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. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 9 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to vpndetection-io/mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability0
- Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Stability & Change Management0
- Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Tool Coverage0
- Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Tool Safety0
- Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Capabilities0
- Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.Unverified
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. How we score packages →
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.
npm · vpndetection-mcp
claude mcp add vpndetection-io-mcp -- npx -y vpndetection-mcp
{
"mcpServers": {
"vpndetection-io-mcp": {
"command": "npx",
"args": [
"-y",
"vpndetection-mcp"
]
}
}
} {
"servers": {
"vpndetection-io-mcp": {
"command": "npx",
"args": [
"-y",
"vpndetection-mcp"
]
}
}
} codex mcp add vpndetection-io-mcp -- npx -y vpndetection-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vpndetection-io-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"vpndetection-mcp"
],
"enabled": true
}
}
} openclaw mcp add vpndetection-io-mcp --command npx --arg -y --arg vpndetection-mcp
mcp_servers:
vpndetection-io-mcp:
command: "npx"
args: ["-y", "vpndetection-mcp"] {
"McpServers": {
"vpndetection-io-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"vpndetection-mcp"
]
}
}
} assistant mcp add vpndetection-io-mcp -t stdio -c npx -a -y vpndetection-mcp
{
"mcpServers": {
"vpndetection-io-mcp": {
"command": "npx",
"args": [
"-y",
"vpndetection-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 8 Oct 26 −47
- Malware scan: pass → unverified ▼ security
- 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. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: 0.86 → 1.00 ▲ functional
- First check of Schema quality: unverified functional
- Package version: 5.3.6 → 6.0.0 functional
- 4 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 3 Oct 26 66
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 8 Oct 2026 · Analysed npm/vpndetection-mcp@6.0.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | vpndetection-io/mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/vpndetection-io/mcp/.github/workflows/release.yml@refs/tags/v6.0.0 |
| Rekor log index | 3126713044 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:013be318b07fdc88128bbf9581634bee5c09a65d181c61a0a5aa1ef78c52c100ebf8f32212d2f2d2497765f84707d9491a8e50730d20ad905e6b36294 |
Background: How many MCP packages publish verified provenance →
Dependencies 9 packages
| Packages resolved | 9 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
database_checksum Get a database's checksums ~140
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_id | string | yes | 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 | yes | Which published file to digest. |
| Name | Type | Req | Description |
|---|---|---|---|
| checksums | object | yes | The published digests for one database file. |
No examples provided.
database_metadata Describe a database ~127
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_id | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| entries | integer | yes | Row count in the current build |
| id | string | yes | – |
| 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 | yes | Columns, keyed by format |
| size | object | – | Bytes per format |
| update_freq | string | – | How often a new build is published |
| updated | string | yes | – |
No examples provided.
list_databases List databases ~149
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| databases | array | yes | – |
No examples provided.
list_downloads List recent download attempts ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many attempts to return, newest first. At most 200; the API defaults to 50. |
| Name | Type | Req | Description |
|---|---|---|---|
| downloads | array | yes | – |
No examples provided.
lookup_ip Look up an IP address ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ip | string | yes | The IPv4 or IPv6 address to classify. |
| Name | Type | Req | Description |
|---|---|---|---|
| coverage | object | yes | Which datasets this result covered. Read `note` before interpreting any absent field. |
| result | object | yes | 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… |
No examples provided.
lookup_ips Look up several IP addresses ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ips | array | yes | The IPv4 or IPv6 addresses to classify. |
| Name | Type | Req | Description |
|---|---|---|---|
| coverage | object | yes | Which datasets this result covered. Read `note` before interpreting any absent field. |
| results | object | yes | Keyed by address. A value is either a result or an error. |
No examples provided.
my_entitlement Plan and usage for this key ~117
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| entitlement | object | yes | – |
No examples provided.
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.