Skip to main content
Glama
internetdata

InternetData MCP Server

by internetdata

InternetData MCP Server

npm license

The official Model Context Protocol server for the InternetData API.

InternetData publishes IP databases: VPN and proxy address space, hosting and CDN ranges, provider catalogs, bogons and more, as gzipped CSV and as MMDB. This server gives an AI agent four read-only tools over them - which databases your organization is licensed for, what is inside one, the digests to verify a copy you already hold, and your recent download history.

Getting Started

You need an API key carrying the db.download scope. Databases are licensed by contract rather than bought self-serve, so a key arrives with the licence; see the API documentation or write to dev@internetdata.io.

Add this to your MCP client's config:

{
  "mcpServers": {
    "internetdata": {
      "command": "npx",
      "args": ["-y", "internetdata-mcp"],
      "env": { "INTERNETDATA_API_KEY": "your-key" }
    }
  }
}

Then ask it something like "which IP databases are we licensed for, and how big is the latest VPN build?".

Requires Node.js 22 or newer. INTERNETDATA_BASE_URL overrides the endpoint if you need to point somewhere else.

Related MCP server: db-mcp

Tools

Tool

What it answers

list_databases

The databases your organization is licensed for, with the licence type and term.

database_metadata

A database's columns, sample rows, row count, build date and file sizes.

database_checksum

The published digests for one database file.

list_downloads

Your organization's recent download attempts, refusals included.

Every tool is read-only.

Two spellings of a database id

list_databases answers a base id and a versions array:

{
  "base": "vpn_ip",
  "standing": "licensed",
  "versions": [{ "id": "vpn_ip_v1", "version": 1, "formats": ["csvgz", "mmdb"] }]
}

The base is what a licence names. versions[].id is what a download names, and it is the one database_metadata and database_checksum accept. The tools say so in their own descriptions, so an agent generally gets this right on its own; it is worth knowing when you read a transcript where one was refused.

There is no download tool, deliberately

The published builds run to several GB, which is not something an agent should pull into a conversation. database_metadata is how you find out what a transfer would cost, and the client libraries or the API are how you actually move the bytes.

Reading the download history

list_downloads is a bounded window - at most 200 attempts, newest first - and it lists refusals alongside successes, because a denial and its http_status are what answer "it stopped working". A database missing from the answer means it is not in that window, never that it was never fetched.

Other Libraries

There are official InternetData client libraries available for many languages including PHP, Python, Go, Java, Ruby, and many popular frameworks such as Django, Rails, and Laravel. See our GitHub at https://github.com/internetdata for more.

About InternetData

IP intelligence databases: VPN, proxy, hosting, CDN and relay address space, provider catalogs and network metadata, published as CSV and MMDB.

License

This project is licensed under the MIT License.

Available Tools

4 tools
database_checksumGet a database's checksumsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesWhich published file to digest.
dataset_idYesA VERSIONED database id, from `versions[].id` in `list_databases` - `bogon_ip_v1`, not `bogon_ip`. The unversioned base id is a licence reference and is not accepted here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
checksumsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered without the description. The text adds the verification-oriented intent but says nothing about auth, rate limits, or whether digests cover all published formats. Adequate, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource comes first and the motivating use cases follow compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and annotations cover the safety profile, so the description only needs purpose and usage — both present. Minor gap: it does not reinforce that the id must be versioned, though the schema handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already carries a detailed dataset_id note about versioned vs unversioned ids plus the format enum. The description adds nothing parameter-specific beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (published digests for one database file) and states the goal it serves, so an agent can tell it apart from list_databases, database_metadata and list_downloads. It is a noun phrase rather than a verb+resource construction, and it never names a sibling, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives two concrete situations that select this tool: verifying a copy you already hold, and checking whether a build changed since the last fetch. That is clear usage context, but it does not state when NOT to use it or name the sibling that handles metadata/download listing instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

database_metadataDescribe a databaseA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesA VERSIONED database id, from `versions[].id` in `list_databases` - `bogon_ip_v1`, not `bogon_ip`. The unversioned base id is a licence reference and is not accepted here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
sizeYesBytes per format.
sampleNoA few real rows, keyed by format.
schemaYesColumns, keyed by format.
entriesYesRow count in the current build.
updatedYesISO-8601 date (YYYY-MM-DD) the published build was generated on.
update_freqNoHow often a new build is published.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: the operation inspects without fetching, and the underlying files reach several GB, which is useful cost/size framing for an agent. It omits any note on latency or whether the sample rows are truncated, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the return contents and then the use case; the em-dash clause about file size is the only embellishment and it earns its place by justifying the tool's existence. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only inspection tool with an output schema present and rich annotations, the description covers what is returned, why to use it, and the cost tradeoff. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the dataset_id schema text already spells out the versioned-vs-unversioned id distinction in detail. The description adds no parameter-level meaning at all, so the baseline 3 for high-coverage schemas is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource ('one database') and enumerates exactly what is returned: columns per published format with types, sample rows, row count, build date, file sizes. That enumeration makes it unmistakable against siblings like database_checksum (hashes) and list_databases (catalog listing), so an agent can pick it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear when-to-use with rationale: 'answer questions about what a database contains without downloading it - the files reach several GB - and to budget a transfer before starting one.' That implies the alternative (downloading) and two distinct intents, but no sibling tool is named as an explicit alternative, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_databasesList databasesA
Read-onlyIdempotent

The IP database catalog as this API key's organization may see it, one entry per database FAMILY, with standing saying where their licence 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 a licence names, and a versions array whose id is what the other tools take - pass versions[].id (bogon_ip_v1), never the base (bogon_ip). Ask again rather than holding on to this: it is answered per key and is not the same for everyone.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
databasesYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld), yet the description adds material context they cannot: answers are per-key and not identical across callers, so results should not be cached, plus the semantic decomposition of `standing` and the id-vs-base rule. This is exactly the kind of behavioral nuance only prose can carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph with no filler; the core statement (catalog, one entry per family) is front-loaded ahead of the `standing` and id guidance. It is slightly heavy for one block, but every clause carries operative detail rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description supplies the interpretive layer an agent needs (what `standing` means, which id to feed downstream, why not to cache). Combined with the read-only annotations, nothing essential for correct invocation or use of the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description's treatment of `versions[].id` vs `base` is about the response rather than inputs, so there is no parameter semantics to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and verb: the IP database catalog as the API key's org sees it, one entry per database FAMILY. It goes further than a name restatement by defining the meaning of `standing` values and the `base` vs `versions[].id` distinction, so an agent knows exactly what comes back and how it differs from a generic catalog listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It instructs the agent to call again rather than cache the result ('Ask again rather than holding on to this'), which is real usage guidance tied to per-key answers. It also routes the agent to pass `versions[].id` to 'the other tools', implying this is the discovery step before database_metadata/checksum. It stops short of naming those siblings as explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_downloadsList recent download attemptsA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many attempts to return, newest first. At most 200; the API defaults to 50.

Output Schema

ParametersJSON Schema
NameRequiredDescription
downloadsYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare only readOnly/openWorld/idempotency; the description adds the substantive behavior: refusals are included as rows, a denial populates `outcome` and `http_status`, results are ordered newest first, and the result set is a bounded window of at most 200 rows. That is real behavioral disclosure beyond the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler and the crucial 'refusals included' point front-loaded. The all-caps emphasis and the trailing window caveat make it slightly heavier than necessary, but every sentence carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return fields, yet it still flags the two fields that matter for diagnosis (outcome, http_status) and warns about the window boundary. For a single-parameter read tool with annotations, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `limit` parameter is fully documented in the schema (range 1-200, default 50). The description only restates the 200-row window rather than adding format or interaction semantics for `limit`, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('recent download attempts, newest first') and immediately scopes it to the caller's own organization. The inclusion of REFUSALS is spelled out, which separates it from list_databases and database_metadata siblings that deal with catalog objects rather than transfer attempts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete use cases ('explain a failing fetch', 'confirm a transfer ran', 'check whether a request was theirs') and a critical non-use condition: a database absent from the answer is not in this 200-row window, not proof it was never downloaded. That is explicit when-to-use and when-not-to-conclude guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observeddatabase_checksum
    • First observeddatabase_metadata
    • First observedlist_databases
    • First observedlist_downloads

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct purpose: catalog listing, database content metadata, file checksums, and download history. Descriptions make boundaries explicit, so an agent can easily select the right tool.

Naming Consistency4/5

Two tools use the list_* pattern (list_databases, list_downloads) and two use database_* (database_metadata, database_checksum). This is a logical grouping but not a uniform verb_noun convention across all tools, so minor deviation.

Tool Count5/5

Four tools is well-scoped for an information service about IP databases and downloads. Each tool earns its place without redundancy.

Completeness3/5

The tools cover catalog, metadata, checksum verification, and download history, but there is no tool to actually initiate a download or retrieve a download URL. Given descriptions reference fetching and transfers, this is a notable missing operation.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes a SQLite database to AI assistants with structured, read-safe access. Includes five tools for schema exploration, querying, and sampling data.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only database access for AI agents across multiple databases (Postgres, MySQL, MongoDB, Elasticsearch) with enforced read-only guarantees and separate tools for prod and non-prod environments.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to inspect a mock data platform locally via SQLite, using read-only tools for schemas, row counts, freshness, queries, and pipeline status without cloud credentials.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only database access for AI agents, enabling table listing, schema inspection, and filtered row queries through MCP tools.
    -