A Model Context Protocol (MCP) server that provides comprehensive geolocation and network intelligence through MaxMind databases.
MaxMindDB MCP server has 4 well-named tools with clear action verbs (lookup_*, list_*, update_*). All tools have descriptions and most parameters have type annotations and descriptions. However, schema documentation is incomplete, output schemas are not explicitly documented in the source, array parameters lack item type definitions, and filter object structure is described only in text. Error handling returns structured error objects but lacks actionable recovery guidance. The lookup_network tool has complex nested parameter logic (filters with field/operator/value) that is documented in text rather than formal schema constraints, forcing LLMs to parse domain-specific syntax. Overall: solid foundation with professional naming and parameter coverage, but schema completeness and output documentation could be stronger.
List all available MaxMind databases
Look up information for a specific IP address
Query a CIDR range with optional filters. filters must be an array of objects with keys: field, operator, value. Example: {"field":"traits.user_type","operator":"equals","value":"residential"}. Supported operators: equals, not_equals, in, not_in, contains, regex, greater_than, greater_than_or_equal, less_than, less_than_or_equal, exists.
Trigger manual update of MaxMind databases
Output schemas are completely undocumented. lookup_ip, lookup_network, list_databases, and update_databases have no documented return types or field structures. LLMs cannot infer what data to expect or plan downstream tool composition.
lookup_network 'filters' parameter is an untyped array. No schema defines the itemType (object with field/operator/value properties), nor are operator values constrained as an enum. LLMs must guess or parse text description to construct valid filter objects.
Iterator protocol (iterator_id, resume_token in lookup_network) is undocumented. No spec for token format, expiration, or when to use each. This invites LLM confusion about resumption semantics.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
update_databases is a destructive WRITE operation with no confirmation step, dry-run mode, or documented rollback. Agents could trigger unintended data overwrites without safeguard.
Error responses return structured error objects with code and message, but lack actionable recovery guidance. E.g., 'db_not_found' error should suggest 'Call list_databases() to see available options'.
lookup_network description is 340+ characters, exceeds recommended 200-char threshold per production baselines. Mixes tool purpose with detailed filter syntax; should use parameter descriptions instead.