Query

The Query protcol is used to query a Minecraft server for server information. The Minecraft query protocol has two query modes: basic stats and full stats.

Warning

Enabling Query on a public IP address may constitute a information disclosure vulnerability.

Basic stats

To get basic stats from a Minecraft server, it must enable the Query protocol. You can enable the query protocol on a Minecraft server by setting enable-query = true in the server’s server.properties file. To specify a deviating port, you can set query.port = <port> in the same file. The following example assumes a server running on 127.0.0.1 and on the default query port 25565:

from mcipc.query import Client

with Client('127.0.0.1', 25565) as client:
    basic_stats = client.stats()

print(basic_stats)

Full stats

For retrieving full stats of a server, the same premises apply.

from mcipc.query import Client

with Client('127.0.0.1', 25565) as client:
    full_stats = client.stats(full=True)

print(full_stats)

JSON serialization

Both mcipc.query.proto.basic_stats.BasicStats and mcipc.query.proto.full_stats.FullStats objects can be serialized into a JSON-ish dict by passing them to the dict() constructor:

basic_stats_as_json = dict(basic_stats)     # Is of type dict.
full_stats_as_json = dict(full_stats)       # Is of type dict.