MaxMindDB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAXMINDDB_MCP_CONFIG | No | Config file path. An explicit path must point to an existing `.toml` file or a file named `GeoIP.conf`. A missing explicit file is an error. Do not set alongside `MAXMINDDB_MCP_DOWNLOAD_ENABLED`. | |
| MAXMINDDB_MCP_EDITIONS | No | Comma- or whitespace-separated editions. Defaults to `GeoLite2-City,GeoLite2-ASN`. | |
| MAXMINDDB_MCP_LOG_LEVEL | No | Log level: `debug`, `info` (default), `warn`, `error`. | |
| MAXMINDDB_MCP_ACCOUNT_ID | No | Positive account ID, required for downloads. | |
| MAXMINDDB_MCP_LOG_FORMAT | No | Log format: `text` (default), `json`. | |
| MAXMINDDB_MCP_LICENSE_KEY | No | License key, required for downloads. | |
| MAXMINDDB_MCP_DATABASE_DIR | No | One database folder. Required for existing files. Downloads default to the OS user cache directory under `maxminddb-mcp/databases`. | |
| MAXMINDDB_MCP_DOWNLOAD_ENABLED | No | `true` for MaxMind downloads, `false` for existing MMDB files. Setting this selects the environment configuration source and skips automatic config-file discovery. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| compare_databasesA | Compare lookup answers in two loaded databases within a CIDR, for example before and after an update. Returns paginated added, removed, and changed address ranges. Equal answers with different network boundaries are unchanged. Pages scan at most 10,000 segments and can contain no changes while has_more is true. Continue until has_more is false. |
| inspect_databaseA | Read MMDB metadata and sample field paths, types, and examples. Use this to choose fields, filter paths, or a summarize_network group_by field. Sampling starts at the first network record, so observed fields are not a complete schema. Use verify_database to check file integrity. |
| install_databaseA | Download and load a database from an HTTP or HTTPS URL. Accepts MMDB, gzip, tar, tar.gz, or ZIP with exactly one MMDB. Downloads and expanded data are limited to 1 GiB. Uses the configured download folder, or the first folder in directory mode. Does not use MaxMind credentials or save the URL for updates. |
| list_databasesA | List loaded databases, their metadata, download status, and setup instructions. Call this first to choose exact database filenames for other tools. An empty list can mean the initial download is still running. If status is downloading, wait and call again without starting another update. |
| lookup_ipA | Look up one IP address in local MMDB databases. Returns the matching record and network, with found=false when no record matches. Use lookup_ips for a batch of addresses or lookup_network to enumerate records in a CIDR. |
| lookup_ipsA | Look up a batch of IP addresses in local MMDB databases. Each result contains the matching record and network, found=false for no match, or an error for that address. Other addresses are still processed after an error. Use lookup_ip for a single address. |
| lookup_networkA | Find stored network records overlapping a CIDR, with optional filters and field selection. Returned networks may extend beyond the requested CIDR. Use lookup_range for start/end bounds or summarize_network for grouped counts. Repeat the network and database on each page. Stop when has_more is false. |
| lookup_rangeA | Find stored network records overlapping an inclusive start/end IP range, with optional filters and field selection. Use lookup_network when the bounds are a CIDR. Returns each overlapping network once, including networks extending beyond the bounds. Repeat the endpoints and database on each page. Stop when has_more is false. |
| summarize_networkA | Group matching records by a scalar field, such as country.iso_code or autonomous_system_number. Count records and covered addresses within a CIDR. Use lookup_network to retrieve individual records. IPv4 aliases are excluded. Exceeding 10,000 scanned records or 100 groups returns an error. Use a smaller CIDR if a limit is reached. |
| verify_databaseA | Check a loaded MMDB for structural corruption, such as after importing a database or encountering decode errors. Returns valid=true on success or a verification error. Use inspect_database for metadata and field samples. Only one verification runs at a time. Cancellation can stop a queued request, but verification runs to completion once started. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
The lookup family is cleanly split by input shape: single IP (lookup_ip), batch (lookup_ips), CIDR (lookup_network), and start/end range (lookup_range), and descriptions explicitly cross-reference each other to steer selection. Database tools (list, inspect, verify, compare, install) each target a distinct operation with no overlap.
All ten tools follow a consistent snake_case verb_noun pattern (lookup_*, summarize_network, compare_databases, inspect_database, list_databases, verify_database, install_database). No mixing of conventions or vague verbs.
Ten tools is well-scoped for an MMDB lookup server, covering query, aggregation, diffing, metadata, integrity, listing, and installation without redundancy. Every tool appears to earn its place.
The surface covers the full read/query lifecycle plus database installation, inspection, verification, and comparison. Minor gaps exist: no explicit unload/remove or in-place update tool, though install and list largely cover database management.