MCP-MCSTATUS
Provides tools for retrieving Minecraft Java and Bedrock server status via the mcstatus.xyz API. It also includes advanced network diagnostic features such as DNS resolution, GeoIP lookups, and BGP/ASN provider information.
README
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.xyz - short hostname before first dot:
s3fors3.joinserver.xyz - token from short name split by
-,_, or space:br4 - case-insensitive variants:
BR4 - normalized alias (non-alphanumeric chars ignored in fallback matching)
Status mapping:
1->UP0->DOWN2->PENDING- any other/unknown ->
MAINTENANCE
Result format (ok = true):
{
"ok": true,
"input_node_name": "s3",
"node_name": "s3.joinserver.xyz",
"node_id": 124,
"matched_by": "short_hostname",
"status": "DOWN",
"status_code": 0,
"heartbeat_time": "2026-02-19 11:48:48",
"message": "",
"ping": null,
"has_heartbeat": true,
"matched_by_case_insensitive_name": true
}
Result format (ok = false):
- not found:
{"ok": false, "input_node_name": "unknown", "error": "Node with this name/alias was not found on Kuma status page."}
- ambiguous alias:
{
"ok": false,
"input_node_name": "hmfra1",
"error": "Multiple nodes matched this name/alias at the same confidence level. Use a more specific node name.",
"matches": [{"id": 305, "name": "HMFRA1-7950"}, {"id": 304, "name": "HMFRA1-R9"}]
}
GPT usage flow:
- Try short alias first (
s3,br4,fra28). - If ambiguous, retry with a more specific name from
matches. - If not found, retry with full node name.
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.txt
Run With Docker Compose
docker compose up -d --build
Stop:
docker compose down
Default MCP endpoint from compose:
http://localhost:8000/mcp
Run MCP Server
Default transport is stdio:
.\.venv\Scripts\python.exe main.py
Optional transport override:
$env:MCP_TRANSPORT="sse"
.\.venv\Scripts\python.exe main.py
Allowed 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.py
After 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/
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.