EntwicklerMCP-Server
Hostwolf Apps MCP-Server
Mit @hostwolf/apps-mcp können KI-Assistenten deine Apps auf Hostwolf Apps deployen und betreiben. Es funktioniert mit Claude, Cursor, VS Code und jedem anderen Client, der das Model Context Protocol unterstützt. Frag zum Beispiel:
- „Warum ist das letzte Deployment meines Shops fehlgeschlagen?“
- „Deploye github.com/acme/api auf meinem App-Server, auf Port 8080.“
- „Setze STRIPE_KEY in der App api und deploye sie neu.“
- „Erstelle eine kleine Postgres-Datenbank in Amsterdam und verbinde sie mit dem Shop.“
- „Lass den Shop auf 4 Kopien skalieren, aber halte das Autoscaling unter 40 $ im Monat.“
- „Füge meinem App-Server eine 50-GB-Disk mit Backups hinzu und nenn mir vorher den Preis.“
Siehe auch: TypeScript-SDK · REST-API-Referenz · Changelog · API-Token holen
Einrichtung#
- Erstelle in der Konsole ein API-Token unter Schlüssel & Tokens → API-Tokens. Hake Lesen, Schreiben und Deploy für die volle Nutzung an; füge Sensible Daten lesen hinzu, wenn der Assistent Logs und Variablenwerte lesen soll.
- Verbinde deinen Client. Du kannst den gehosteten Server unter
https://app.hostwolf.net/mcpnutzen (nichts zu installieren) oder ihn aus dem Download selbst betreiben (braucht Node.js 18+).
Gehostet: https://app.hostwolf.net/mcp#
Nichts zu installieren, und immer die neueste Version. Dein Client sendet dein Token mit jeder Anfrage; wir speichern es nie.
Claude Code
claude mcp add --transport http hostwolf-apps https://app.hostwolf.net/mcp --header "Authorization: Bearer your_token"Claude Desktop
Claude Desktop betreibt nur lokale Server und verbindet sich deshalb über mcp-remote mit dem gehosteten. Füge dies in claude_desktop_config.json ein (Einstellungen → Entwickler → Konfiguration bearbeiten):
{
"mcpServers": {
"hostwolf-apps": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.hostwolf.net/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer your_token" }
}
}
}Cursor
Füge dies in ~/.cursor/mcp.json ein, oder in .cursor/mcp.json in einem Projekt:
{
"mcpServers": {
"hostwolf-apps": {
"url": "https://app.hostwolf.net/mcp",
"headers": { "Authorization": "Bearer your_token" }
}
}
}VS Code
Füge dies in .vscode/mcp.json ein:
{
"servers": {
"hostwolf-apps": {
"type": "http",
"url": "https://app.hostwolf.net/mcp",
"headers": { "Authorization": "Bearer your_token" }
}
}
}Hänge ?readonly=1 an die URL (https://app.hostwolf.net/mcp?readonly=1), um nur lesende Tools anzubieten.
Selbst betreiben#
Derselbe Server als Download. Er läuft auf deinem Computer, dein Token verlässt ihn also nie.
Claude Code
claude mcp add hostwolf-apps -e HOSTWOLF_APPS_TOKEN=your_token -- npx -y https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgzClaude Desktop
Füge dies in claude_desktop_config.json ein (Einstellungen → Entwickler → Konfiguration bearbeiten):
{
"mcpServers": {
"hostwolf-apps": {
"command": "npx",
"args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
"env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
}
}
}Cursor
Füge dies in ~/.cursor/mcp.json ein, oder in .cursor/mcp.json in einem Projekt:
{
"mcpServers": {
"hostwolf-apps": {
"command": "npx",
"args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
"env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
}
}
}VS Code
Füge dies in .vscode/mcp.json ein:
{
"servers": {
"hostwolf-apps": {
"command": "npx",
"args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
"env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
}
}
}Einstellungen#
Für den selbst betriebenen Server; der gehostete nimmt stattdessen ?readonly=1 an seiner URL.
| Variable | Bedeutung |
|---|---|
HOSTWOLF_APPS_TOKEN | Pflicht. Dein API-Token aus Schlüssel & Tokens. |
HOSTWOLF_READONLY | 1, um nur lesende Tools anzubieten, die nie etwas ändern. |
HOSTWOLF_APPS_URL | Konsolen-URL (Standard https://console.app.hostwolf.net). |
HOSTWOLF_NO_UPDATE_CHECK | 1, um die Prüfung auf eine neuere Version beim Start zu überspringen. |
Den HTTP-Server selbst hosten#
hostwolf-apps-mcp --http betreibt denselben Streamable-HTTP-Endpunkt, den wir unter app.hostwolf.net/mcp hosten, für Teams, die einen eigenen wollen. Er ist zustandslos: Jede Anfrage bringt das eigene Token des Aufrufers als Authorization: Bearer … mit, und nichts wird gespeichert.
Node
npm install -g https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz
HOST=0.0.0.0 PORT=8791 hostwolf-apps-mcp --http
curl http://localhost:8791/mcp/healthDocker
cat > Dockerfile <<'EOF'
FROM node:22-alpine
RUN npm install -g --omit=dev https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz && npm cache clean --force
ENV HOST=0.0.0.0 PORT=8791
USER node
EXPOSE 8791
CMD ["hostwolf-apps-mcp", "--http"]
EOF
docker build -t hostwolf-apps-mcp .
docker run -d --name hostwolf-apps-mcp --memory 192m -p 127.0.0.1:8791:8791 hostwolf-apps-mcpStell ihn hinter deinen HTTPS-Proxy und richte Clients dann auf https://your-host/mcp, wie oben beim gehosteten Setup.
| Variable | Bedeutung |
|---|---|
PORT / HOST | Listen-Adresse (Standard 127.0.0.1:8791). |
MCP_PATH | Endpunkt-Pfad (Standard /mcp; Health Check unter /mcp/health). |
HOSTWOLF_APPS_URL | Konsolen-URL (Standard https://console.app.hostwolf.net). |
MCP_TRUST_CF_IP | 1, um das Rate-Limit nach dem Header CF-Connecting-IP zu bemessen. Setze das nur, wenn ausschließlich Cloudflare deinen Proxy erreichen kann. |
Limits: 300 Anfragen pro Minute pro Client-Adresse und 180 pro Token, 2 MB Anfrageinhalt, 32 Anfragen gleichzeitig. Das Zugriffslog zeigt Zeit, Adresse, die ersten 8 Zeichen eines SHA-256 des Tokens, den Tool-Namen und den Status, nie das Token oder Tool-Argumente.
Tools#
Anwendungen:
list_apps: jede App mit Status, Domains, Quelle, Projekt und Umgebung.get_app: Einstellungen, Server, letzte Deployments und Variablennamen.get_app_logs: aktuelle Container-Ausgabe (das Token braucht „Sensible Daten lesen“).get_app_metrics: CPU und Arbeitsspeicher.create_app_from_git,create_app_from_dockerfile,create_app_from_image.update_app: Name, Domains, Ports, Branch, Befehle, Health Check.deploy_app: baut und wartet bis zu etwa 40 Sekunden auf das Ergebnis.restart_app,stop_app,delete_app.
Umgebungsvariablen:
list_env_vars: Werte sind maskiert, außer du bittest den Assistenten, sie anzuzeigen.set_env_vars: mehrere auf einmal anlegen oder ändern, optional als Secrets, die sich nicht wieder auslesen lassen.delete_env_var.
Deployments:
list_deployments: die letzten Deployments einer App oder was gerade läuft.get_deployment: Status und das Ende des Build-Logs.cancel_deployment.
Projekte:
list_projects,create_project,create_environment,delete_project.
Server:
list_servers: deine App-Server und VPS mit Größe, Stadt, Status und Preis.get_server: was auf einem Server läuft, seine Domains und seine Last.add_app_server,remove_app_server: Kopien einer App auf mehreren deiner Server betreiben.get_traffic: ausgehender Traffic dieses Monats und die bisherige Rechnung dafür, pro Server oder für das Team.list_regions: Städte mit dem Preis pro Größe und wo das Autoscaling Server hinzufügen darf.
Storage-Volumes (Disks deiner Server):
list_storage_volumes,get_storage_volume_price.add_storage_volume,update_storage_volume(vergrößern, Backups, Auto-Grow): Der Assistent zeigt den Preis und braucht deine Bestätigung.detach_storage_volume,attach_storage_volume: ein Volume zwischen deinen Servern in einer Stadt verschieben.list_storage_volume_backups,backup_storage_volume,restore_storage_volume,delete_storage_volume.
App-Volumes:
list_volumes,add_volume,delete_volume.backup_volume: ein Backup-Zeitplan, ein sofortiges Backup oder beides.
Verwaltete Datenbanken:
list_databases,get_database_plans.get_database: Status, die gepoolte und die direkte Verbindungs-URL, mit maskiertem Passwort, außer du fragst danach.create_database: wird stündlich abgerechnet und braucht deshalb deine Bestätigung.attach_database: speichert die gepoolte URL alsDATABASE_URLund die direkte alsDATABASE_DIRECT_URL(oderREDIS_URL), ohne sie anzuzeigen. Nutzt die App diese Namen schon für etwas anderes, speichert es nichts und bietet einen freien Namen (env_key) oderoverwritean.upgrade_database: ein größerer Tarif; der Assistent zeigt den neuen Preis und braucht deine Bestätigung.set_database_eviction_policy: was Redis tut, wenn sein Speicher voll ist.backup_database,delete_database.
Autoscaling und Team:
get_autoscaling: Richtlinie, laufende Kopien, CPU und die Ausgaben dieses Monats.set_autoscaling: Einschalten oder höhere Limits brauchen deine Bestätigung.get_team.
Sicherheit#
- Zerstörerische Tools (Stoppen, Löschen, Entfernen einer Server-Kopie, Löschen von Variablen, Volumes oder Datenbanken) sind als
destructiveHintmarkiert und laufen erst, wenn der Assistentconfirm: trueübergibt, was er nur darf, nachdem du zugestimmt hast. Dasselbe gilt für die Tools, die Geld kosten: eine Datenbank erstellen oder upgraden, ein Storage-Volume hinzufügen oder vergrößern und Autoscaling-Limits erhöhen. Ohneconfirmaufgerufen, antworten diese mit dem Preis, damit der Assistent ihn dir zuerst zeigen kann. - Datenbank-Passwörter und Variablenwerte sind maskiert, außer du fragst danach.
attach_databaseübergibt einer App eine URL, ohne dass der Assistent sie je sieht. HOSTWOLF_READONLY=1(oder?readonly=1an der gehosteten URL) entfernt jedes Tool, das schreibt. Ein Token, das nur die Berechtigung Lesen hat, bewirkt dasselbe auf API-Seite.- Der gehostete Server prüft dein Token bei der Konsole, speichert zwischen Anfragen nichts und protokolliert nie Tokens oder Tool-Argumente. Er hat ein Rate-Limit pro Adresse und pro Token.
- API-Tokens können keine Server kaufen oder kündigen. Das geht nur in der Konsole.
- Erstelle ein eigenes Token nur für deinen Assistenten und widerrufe es jederzeit unter Schlüssel & Tokens.
Ändern#
Der gehostete Server ist immer aktuell. Den selbst betriebenen cacht npx anhand seiner URL, er aktualisiert sich also nie von selbst. Jede Version hat ihre eigene URL, und der Server prüft beim Start app.hostwolf.net/dl/index.json. Gibt es eine neuere Version, schreibt er einen Hinweis ins Log und fügt ihn dem Ergebnis von list_apps hinzu, damit dein Assistent es dir sagt. Zum Aktualisieren änderst du die Version in der URL deiner Konfiguration und startest deinen Client neu.
Basiert auf dem SDK#
Die Tools nutzen @hostwolf/apps-sdk, das in diesem Paket enthalten ist. Um den Server in deine eigene App einzubetten, installiere beide Pakete:
npm install https://app.hostwolf.net/dl/hostwolf-apps-sdk-0.2.1.tgz https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz
import { HostwolfApps } from '@hostwolf/apps-sdk';
import { createHostwolfAppsMcp } from '@hostwolf/apps-mcp/server';
Lizenz#
MIT