Claude connector (MCP)
Yggdrasil speaks the Model Context Protocol, so Claude can
read and drive the panel in conversation — “is anything down?”, “show me the last hundred lines
from the Minecraft server”, “restart it”. It is one endpoint, /api/mcp, and adding it takes a
URL and one click of Allow.
Claude acts as you: the connection is bound to the account that approved it and gets exactly that account’s permissions. Everything it does lands in the audit log next to everything you do by hand.
Adding it
- In the panel: Settings → System → Claude connector. Copy the URL — it looks like
https://panel.example.com/api/mcp. - In Claude: Settings → Connectors → Add custom connector, paste the URL, and add it.
- Claude opens this panel in your browser and asks you to approve the connection. If the page says
you are not signed in, open the panel in another tab, sign in, and press Allow again — the
panel’s session cookie is
SameSite=Strict, so it does not travel on the first arrival from claude.ai, only on the same-site press of the button. - Done. Ask Claude what your servers are doing.
The panel must be reachable from the internet over HTTPS. Claude’s own servers make the
connection, not your browser, so a LAN address, a .lab hostname or a VPN-only panel cannot work —
the Settings card says so when it detects one. For a panel that stays private, use an
API token with an MCP client running on your own machine instead.
What Claude can do
| Tool | What it does |
|---|---|
list_servers |
Every server you can see, with status, rune, ports and realm |
get_server |
One server in full — status, ports, limits, install state, rune version |
server_logs |
The tail of a server’s container log (default 100 lines, max 500) |
start_server |
Start a stopped server |
stop_server |
Stop a running server — disconnects anyone connected |
restart_server |
Restart now, recreating the container so rune/env changes apply |
panel_status |
Panel version and how many servers are running, stopped or in trouble |
Tools take a server’s name as shown in the panel, so you can say “restart Bimmelim” rather than quoting an id. A name that matches two servers is refused rather than guessed at.
The destructive ones stop there on purpose. Creating servers, editing files, deleting anything, changing settings and installing runes are not exposed — those want the panel in front of you.
Safety
- Claude asks you before every call. The connector tools are subject to Claude’s own confirmation prompts, and the stop/restart tools say plainly in their description that they disconnect players, so a model has reason to check first.
- Permissions are yours, not more. A delegate who can only view their own realm’s servers connects a Claude that can only do that. See Users & permissions.
- Revoke any time from the same Settings card. Disconnecting invalidates the tokens immediately; the client can only come back by asking you to approve again.
- Audited. Every start, stop and restart is written to the audit log with the user who approved the connection, exactly as a click would be.
How the connection is authorized
Yggdrasil is its own OAuth 2.1 authorization server — there is no third party in the flow and
nothing to configure. Claude registers itself
(RFC 7591), discovers the panel through
/.well-known/oauth-protected-resource
(RFC 9728), sends you to the consent screen with
PKCE, and exchanges the resulting code for a token bound to this panel’s MCP endpoint. Tokens are
stored hashed, are rejected if presented to any other address, and refresh tokens rotate on every
use.
The MCP endpoint itself is Streamable HTTP: JSON-RPC in a POST, one JSON object back. There is no
server-initiated stream and no session id, so GET and DELETE answer 405 — which is how the
transport spec says to advertise exactly that.
When it does not connect
| What you see | What it means |
|---|---|
| Claude cannot reach the server | The panel is not reachable from the internet, or a firewall blocks Anthropic’s addresses. The Settings card flags a local-only address. |
| The approval page says you are not signed in | Sign in to the panel in another tab, then press Allow again. |
| Connected, but no servers listed | The approving account cannot see any servers — check its realm grants. |
| A tool answers “no server called …” | Use the name exactly as the panel shows it; list_servers prints them. |