Turning it on
The MCP server is off by default. Enable it in your values:helm upgrade your release. When turning it on for an existing release,
upgrade with --reset-then-reuse-values rather than --reuse-values, so the
new thorasMcp defaults are applied.
Modes
Tools
Read tools
Available in both modes.list_scale_targets lists workloads in recommendation mode by default. Ask it
for the managed ones to see the workloads Thoras scales autonomously.
Write tools
Only inread-write mode.
A few things to know about them:
set_scale_modeneedsfeatureFlags.enableUpdateScaleModeApiturned on in the chart. Without it, the API server refuses the change and the tool says so. Horizontalautonomousmode needs an HPA on the workload, and switching vertical scaling to or fromautonomouscan restart the workload’s pods.set_scaling_pausedworks like pausing scaling from the dashboard: applying a change restarts Thoras’s operator, worker and API server. Asking for the state it’s already in changes nothing.enroll_workloadsonly enrolls the workloads you name, never a whole namespace, and leaves the workloads themselves unchanged. Itsdry_runoption previews the result without creating anything.
Connecting a client
Get the token
Clients authenticate with a bearer token. Unless you supply your own, Thoras generates one into thethoras-config-controller Secret shortly after the server is turned on. Read it
with:
Reach the server
The server speaks MCP over Streamable HTTP at/mcp on the thoras-mcp
Service, port 80. To try it from your machine, port-forward the Service:
TOKEN:
401.
Configure your client
Point your MCP client athttp://localhost:8080/mcp with the Streamable HTTP
transport, and have it send the header Authorization: Bearer <token>. The
server has no OAuth flow, so the client must send the header itself. The exact
format depends on the client. Many take an entry like this:
Reaching it from outside the cluster
To use the server without a port-forward, put your own Ingress or Gateway in front of thethoras-mcp Service, and serve it over TLS, since every request
carries the token. With networkPolicy.enabled, the server’s port accepts
traffic from any source. Narrow it with thorasMcp.extraIngressRules.
Treat the token like a password. Anyone who has it can use every tool the
server’s mode allows.
Supplying your own token
The token resolves like Thoras’s other credentials:- A Secret you manage, referenced via
thorasMcp.auth.existingSecret. - A value pinned in
thorasMcp.auth.token. - Generated by Thoras into the
thoras-config-controllerSecret (default).
kubectl create secret generic --from-file works even though the file ends with
a newline.
To rotate the token, take ownership of it as described in
Rotating a credential. When
the token changes, Thoras restarts the MCP server, and clients need the new
token.
What’s recorded
Every request the MCP server sends names it as the actor, so changes made through its write tools appear in the audit trail with the actormcp.
Further reading
- Chart README: Thoras MCP Server
- Credentials
- Audit Trail
- Pausing Autonomous Scaling

