MCP-MCSTATUS
Provides tools to interact with Kuma status-page APIs to monitor node health, allowing users to check node states (UP, DOWN, PENDING, or MAINTENANCE) by name or alias and retrieve heartbeat and connection details.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-MCSTATUSCheck the status and current player count for mc.hypixel.net"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-MCSTATUS
MCP server (Python) with tools for https://mcstatus.xyz/api and Kuma status-page API.
Implemented MCP Tools
get_minecraft_status- Minecraft server status (Java/Bedrock), endpoint/api/statusget_java_status- Java status shortcut, endpoint/api/statusget_bedrock_status- Bedrock status shortcut, endpoint/api/statusget_srv_records- SRV records, endpoint/api/srvresolve_dns- DNS resolution and provider info, endpoint/api/dnsrdns- reverse DNS (PTR) lookup for IPgeoip_maxmind- GeoIP lookup using local MaxMind GeoLite2 databaseget_ip_provider_info- provider/operator info for IP viabgp.toolswhois + ASN databaseis_ip_anycast- check if player IP is Anycast by curated known-node listget_bgp_info- BGP/ASN details for an IP, endpoint/api/bgpcheck_node_status- find Kuma node by name or short alias (e.g.,s3,br4) and returnUP/DOWN/PENDING/MAINTENANCE
check_node_status For GPT
Use this tool when you need node state from Kuma by human-friendly alias.
Input parameters:
node_name(string, required) - full node name or short alias.timeout_ms(integer, optional, default4000, must be> 0).
Supported alias patterns:
full name:
s3.joinserver.xyzshort hostname before first dot:
s3fors3.joinserver.xyztoken from short name split by
-,_, or space:br4case-insensitive variants:
BR4normalized alias (non-alphanumeric chars ignored in fallback matching)
interpreted noisy aliases with generic prefixes:
Node-x21,node x 21,Nodex21,Нода-x21->x21.oinserver.xyzplain separated aliases also work:
x 21->x21.oinserver.xyz
Status mapping:
1->UP0->DOWN2->PENDINGany other/unknown ->
MAINTENANCE
Result format (ok = true):
{
"ok": true,
"input_node_name": "x 21",
"interpreted_query": {
"normalized": "x21",
"core_parts": ["x", "21"],
"core_fingerprint": "x21"
},
"node_name": "x21.oinserver.xyz",
"node_id": 386,
"matched_by": "short_hostname_normalized",
"match_priority": 3,
"status": "DOWN",
"status_code": 0,
"heartbeat_time": "2026-03-15 13:52:53",
"message": "",
"ping": null,
"has_heartbeat": true,
"matched_by_case_insensitive_name": true
}Result format (ok = false):
not found:
{
"ok": false,
"input_node_name": "unknown",
"interpreted_query": {
"normalized": "unknown",
"core_parts": ["unknown"],
"core_fingerprint": "unknown"
},
"error": "Node with this name/alias was not found on Kuma status page."
}broad or ambiguous alias:
{
"ok": true,
"input_node_name": "fra",
"interpreted_query": {
"normalized": "fra",
"core_parts": ["fra"],
"core_fingerprint": "fra"
},
"ambiguous": true,
"match_count": 2,
"match_priority": 6,
"matched_by_modes": ["core_terms_subset"],
"matches": [
{
"node_name": "fra9.joinserver.xyz",
"node_id": 245,
"matched_by": "core_terms_subset",
"match_priority": 6,
"status": "UP",
"status_code": 1
},
{
"node_name": "MySQL-FRA9",
"node_id": 290,
"matched_by": "core_terms_subset",
"match_priority": 6,
"status": "UP",
"status_code": 1
}
]
}GPT usage flow:
Try the best human string you have:
s3,br4,fra28,x 21,Node-x21.If response contains
matches, inspect returned statuses directly; broad queries now return all best matches.Only retry with a more specific name when you need a single exact node.
Compatibility note:
MCP tool responses are returned as regular JSON payloads so FastMCP emits both text
contentandstructuredContent, which avoids "returned no result" behavior in clients that ignore empty structured-only replies.
Architecture
mcstatus_mcp/client.py- typed API client (MCStatusApiClient)mcstatus_mcp/tools.py- abstractBaseMCStatusTool+ one class per MCP toolmcstatus_mcp/server.py- MCP app bootstrap and tool registration
Each tool is implemented as a class that inherits from BaseMCStatusTool.
All tools depend on a shared MCStatusApiClient instance.
Install
.\.venv\Scripts\python.exe -m pip install -r requirements.txtRun With Docker Compose
docker compose up -d --buildStop:
docker compose downDefault MCP endpoint from compose:
http://localhost:8000/mcp
Run MCP Server
Default transport is stdio:
.\.venv\Scripts\python.exe main.pyOptional transport override:
$env:MCP_TRANSPORT="sse"
.\.venv\Scripts\python.exe main.pyAllowed MCP_TRANSPORT values: stdio, sse, streamable-http.
Local Stdio Config Example
{
"mcpServers": {
"mcstatus": {
"command": "C:\\Users\\rakse\\PycharmProjects\\MCP-MCSTATUS\\.venv\\Scripts\\python.exe",
"args": ["C:\\Users\\rakse\\PycharmProjects\\MCP-MCSTATUS\\main.py"]
}
}
}Environment Variables
MCP_TRANSPORT- MCP transport (default:stdio)MCSTATUS_API_BASE_URL- API base URL (default:https://mcstatus.xyz/api)KUMA_API_BASE_URL- Kuma API base URL forcheck_node_status(default:http://status.dsts.cloud:3001/api)MCSTATUS_TIMEOUT_MS- default timeout in milliseconds for tools (default:4000)MCP_HOST- host for HTTP transports (sseandstreamable-http, default:127.0.0.1)MCP_PORT- port for HTTP transports (default:8000)MCP_STREAMABLE_HTTP_PATH- streamable HTTP path (default:/mcp)MCP_SSE_PATH- SSE path (default:/sse)MAXMIND_LICENSE_KEY- MaxMind license key for GeoLite2 download (required for auto-download if DB is missing/outdated)MAXMIND_DB_PATH- local path to.mmdbfile (default:data/GeoLite2-City.mmdb)MAXMIND_EDITION_ID- MaxMind edition ID (default:GeoLite2-City)MAXMIND_REFRESH_HOURS- database refresh interval in hours;0disables periodic refresh (default:24)BGPTOOLS_USER_AGENT- descriptive user-agent with contact for downloadinghttps://bgp.tools/asns.csv(recommended)BGPTOOLS_ASN_DB_URL- ASN CSV source URL (default:https://bgp.tools/asns.csv)BGPTOOLS_ASN_DB_PATH- local path to ASN CSV cache (default:data/bgp_tools_asns.csv)BGPTOOLS_ASN_REFRESH_HOURS- ASN CSV refresh interval in hours;0disables periodic refresh (default:24)BGPTOOLS_WHOIS_HOST- bgp.tools whois host (default:bgp.tools)BGPTOOLS_WHOIS_PORT- bgp.tools whois port (default:43)
Use With OpenAI
Important: OpenAI MCP integration uses remote MCP servers.
Local stdio servers are good for local dev/testing, but for OpenAI binding you should expose a public HTTPS endpoint.
1) Run as streamable HTTP for deployment
$env:MCP_TRANSPORT="streamable-http"
$env:MCP_HOST="0.0.0.0"
$env:MCP_PORT="8000"
.\.venv\Scripts\python.exe main.pyAfter deployment your MCP URL will look like:
https://your-domain.example/mcp
2) Bind MCP server in OpenAI Responses API
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "mcp",
"server_label": "mcstatus",
"server_url": "https://your-domain.example/mcp",
"require_approval": "never",
"allowed_tools": [
"get_minecraft_status",
"get_java_status",
"get_bedrock_status",
"get_srv_records",
"resolve_dns",
"rdns",
"geoip_maxmind",
"get_ip_provider_info",
"is_ip_anycast",
"get_bgp_info",
"check_node_status",
],
}
],
input="Check DNS and Java status for mc.hypixel.net",
)
print(response.output_text)3) Bind in ChatGPT (Connectors)
Open ChatGPT connector settings.
Add a custom connector using your remote MCP URL.
Select tools and permissions.
Reference docs:
https://platform.openai.com/docs/guides/tools-remote-mcp
https://platform.openai.com/docs/guides/mcp
https://help.openai.com/en/articles/11487775-connectors-in-chatgpt/
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AxoRm/MCP-MCSTATUS'
If you have feedback or need assistance with the MCP directory API, please join our Discord server