OffshoreVps
Anleitungen6 Okt. 20266 Min. LesezeitVon dem OffshoreVps-Team

So hosten Sie einen MCP-Server auf einem VPS

Einen Remote-Server für das Model Context Protocol betreiben: lokal oder remote, ein Python-Beispiel, ein systemd-Dienst, HTTPS mit Token und eine Sicherheits-Checkliste.

Das Model Context Protocol (MCP) ermöglicht es KI-Assistenten, Tools aufzurufen und Daten von Servern zu lesen, die Sie betreiben. Viele MCP-Server laufen lokal, doch ein entfernter auf einem VPS ist nützlich, wenn mehrere Personen, Tools oder Agenten dieselben Fähigkeiten teilen müssen. Diese Anleitung behandelt die Einrichtungsoptionen und eine sichere Grundlage.

Terminalfenster auf einem VPS mit den Befehlen zum Hosten eines MCP-Servers, beginnend mit „sudo adduser --disabled-password --gecos "" mcp“
Die Art von Befehlen, die Sie in dieser Anleitung auf Ihrem Server ausführen.

Lokales oder entferntes MCP?

  • Lokal (stdio). Der Client startet den Server als Kindprozess auf Ihrem eigenen Rechner. Einfach und privat, funktioniert aber nur auf diesem Rechner.
  • Entfernt (HTTP). Der Server läuft auf einem VPS, und Clients verbinden sich über HTTPS. Das ist die Variante, die Sie hosten. Sie eignet sich für gemeinsam genutzte Tools, lang laufende Aufgaben und Tools, die eine feste IP brauchen.

Prüfen Sie in der aktuellen MCP-Spezifikation, welchen Transport Ihr Client unterstützt. Streamable HTTP ist die übliche Wahl für entfernte Server. Dimensionierungen für typische Workloads finden Sie auf unserer Seite MCP-Server-Hosting.

Schritt 1: Den Server vorbereiten

Verwenden Sie einen frischen Ubuntu-LTS-Server und die Schritte aus So sichern Sie einen neuen VPS. Legen Sie einen Benutzer für den Dienst an.

sudo adduser --disabled-password --gecos "" mcp

Schritt 2: Den Server ausführen

Verwenden Sie das offizielle SDK oder einen vorhandenen Server. Dieses Python-Beispiel nutzt den FastMCP-Helfer des MCP-SDK:

sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo", host="127.0.0.1", port=8000)

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

if __name__ == "__main__":
    mcp.run(transport="streamable-http")
Die Schritte dieser Anleitung in der Reihenfolge: 1. Lokales oder Remote-MCP?; 2. Den Server vorbereiten; 3. Den Server ausführen; 4. Als Dienst betreiben; 5. HTTPS und Authentifizierung; 6. Sicherheits-Checkliste
Die Schritte dieser Anleitung in der Reihenfolge.

Schritt 3: Als Dienst ausführen

[Unit]
Description=MCP server
After=network-online.target

[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always

[Install]
WantedBy=multi-user.target

Speichern Sie es als /etc/systemd/system/mcp.service und führen Sie sudo systemctl enable --now mcp aus.

Schritt 4: HTTPS und Authentifizierung

Ein MCP-Server kann Code ausführen und Daten lesen, lassen Sie ihn daher niemals offen. Stellen Sie ihn hinter einen Reverse-Proxy mit TLS und verlangen Sie ein Token:

mcp.example.com {
  @noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
  respond @noauth 401
  reverse_proxy 127.0.0.1:8000
}

Verwenden Sie für ein Produktivsystem OAuth gemäß der MCP-Autorisierungsspezifikation statt eines gemeinsamen Tokens.

Sicherheits-Checkliste

  • Geben Sie Tools nur den minimal nötigen Zugriff. Geben Sie einem Tool keinen Shell-Zugriff, außer genau das ist der Zweck.
  • Bewahren Sie Geheimnisse in Umgebungsdateien mit chmod 600 auf.
  • Protokollieren Sie Tool-Aufrufe, damit Sie sehen können, was passiert ist.
  • Lassen Sie den Port an 127.0.0.1 gebunden und machen Sie nur den Proxy zugänglich.