Skip to main content
Glama
ChatGPT Orchestrator MCP Server

ChatGPT Orchestrator MCP Server

by vadimsey

ChatGPT Orchestrator MCP Server

Minimaler Remote-MCP-Server in Python für das folgende Schema:

ChatGPT -> MCP server -> main orchestrator -> helper agents

In der ersten Phase enthält der Server ein Tool:

  • run_orchestrator

  • Eingabe: goal: string

  • Ausgabe: einfacher JSON

Im Inneren befindet sich derzeit ein Platzhalter. Später kann dieser durch den Aufruf Ihres echten Hauptagenten ersetzt werden.

Warum FastMCP

FastMCP wurde gewählt, weil es ermöglicht, ein MCP-Tool mit einer normalen Python-Funktion zu beschreiben und sofort einen Remote-MCP-Endpunkt über HTTP zu starten. Für die Verbindung mit ChatGPT ist ein öffentlicher HTTPS-Endpunkt der Form /mcp erforderlich.

Related MCP server: native-agent-router

Projektstruktur

.
├── .gitignore
├── server.py
├── requirements.txt
├── Procfile
├── render.yaml
└── README.md

Lokaler Start

Anforderungen:

  • Python 3.11+

  • pip

1. Virtuelle Umgebung erstellen

PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

Falls unter Windows der Befehl python den Microsoft Store öffnet oder die Version nicht anzeigt, verwenden Sie:

py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1

macOS/Linux:

python3 -m venv .venv
source .venv/bin/activate

2. Abhängigkeiten installieren

pip install -r requirements.txt

3. Server starten

python server.py

Lokaler MCP-Endpunkt:

http://localhost:8000/mcp

Standardprüfung, ob der Server läuft:

http://localhost:8000/health

Wenn der Client einen Endpunkt mit einem Schrägstrich am Ende anfordert, verwenden Sie:

http://localhost:8000/mcp/

Lokale Überprüfung

Lassen Sie python server.py laufen. Führen Sie in einem zweiten Terminal Folgendes aus:

Invoke-RestMethod http://localhost:8000/health

Erwartete Antwort:

{
  "status": "ok"
}

Wichtig: Wenn Sie http://localhost:8000/mcp im Browser öffnen oder mit einem normalen curl ohne MCP-Header aufrufen, sehen Sie möglicherweise einen Fehler:

{
  "error": {
    "message": "Not Acceptable: Client must accept text/event-stream"
  }
}

Das ist für einen MCP-Endpunkt normal. Überprüfen Sie /health mit einem normalen Browser und /mcp mit einem MCP-Client.

@'
import asyncio
from fastmcp import Client

async def main():
    async with Client("http://localhost:8000/mcp") as client:
        tools = await client.list_tools()
        print("TOOLS:")
        for tool in tools:
            print("-", tool.name)

        result = await client.call_tool(
            "run_orchestrator",
            {"goal": "Create an MVP launch plan"}
        )
        print("RESULT:")
        print(result)

asyncio.run(main())
'@ | python

Erwartete Bedeutung der Antwort: Der Server zeigt das Tool run_orchestrator an und gibt ein JSON mit dem Text zurück, dass der Platzhalter die Aufgabe akzeptiert hat.

Sie können dies auch über den MCP Inspector überprüfen:

npx @modelcontextprotocol/inspector

Wählen Sie in der UI den Transport Streamable HTTP und die URL:

http://localhost:8000/mcp

Deployment auf Render

Variante über GitHub

  1. Erstellen Sie ein neues GitHub-Repository.

  2. Laden Sie diese Dateien dort hoch.

  3. Öffnen Sie Render.

  4. Klicken Sie auf New -> Web Service.

  5. Verbinden Sie das GitHub-Repository.

  6. Render liest normalerweise render.yaml automatisch.

  7. Bei manueller Konfiguration:

    • Runtime: Python

    • Build Command: pip install -r requirements.txt

    • Start Command: python server.py

  8. Klicken Sie auf Deploy.

Nach dem Deployment gibt Render eine URL in etwa dieser Form aus:

https://chatgpt-orchestrator-mcp.onrender.com

Der Production-MCP-Endpunkt lautet:

https://chatgpt-orchestrator-mcp.onrender.com/mcp

Production-Health-Endpunkt zur Überprüfung im Browser:

https://chatgpt-orchestrator-mcp.onrender.com/health

Genau diese URL muss in ChatGPT eingefügt werden.

Verbindung mit ChatGPT herstellen

  1. Öffnen Sie ChatGPT im Browser.

  2. Gehen Sie zu Settings.

  3. Öffnen Sie Apps & Connectors oder Connectors.

  4. Aktivieren Sie den Developer Mode, falls dieser noch nicht eingeschaltet ist:

    • Advanced settings

    • Developer mode

  5. Klicken Sie auf Create oder Create connector.

  6. Ausfüllen:

    • Name: Orchestrator

    • Description: Runs my main orchestrator agent through MCP.

    • Connector URL: https://YOUR-RENDER-SERVICE.onrender.com/mcp

  7. Speichern.

  8. Wählen Sie in einem neuen Chat diesen Connector/Tool aus und bitten Sie ChatGPT, den Orchestrator aufzurufen.

Beispiel für eine Testanfrage in ChatGPT

Используй Orchestrator и вызови run_orchestrator с goal:
"Составь пошаговый план запуска MVP моего продукта"

Die erwartete Antwort des Tools sieht derzeit etwa so aus:

{
  "status": "ok",
  "message": "Stub orchestrator accepted the goal.",
  "goal": "Составь пошаговый план запуска MVP моего продукта",
  "next_step": "Replace call_real_orchestrator() in server.py with your real agent call."
}

Wo der Platzhalter durch den echten Agenten ersetzt wird

Öffnen Sie server.py und suchen Sie die Funktion:

def call_real_orchestrator(goal: str) -> dict[str, Any]:

Derzeit gibt sie ein Test-JSON zurück. Ersetzen Sie später den Funktionskörper durch den echten Aufruf Ihres Hauptagenten.

Beispiel für eine zukünftige Ersetzung:

def call_real_orchestrator(goal: str) -> dict[str, Any]:
    result = my_main_agent.run(goal)
    return {
        "status": "ok",
        "goal": goal,
        "result": result,
    }

Wichtig: Erstellen Sie in der ersten Phase keinen separaten MCP-Server für jeden Hilfsagenten. Lassen Sie ChatGPT nur das Tool run_orchestrator sehen, und lassen Sie Ihren Hauptagenten intern entscheiden, welche Hilfsagenten aufgerufen werden sollen.

Zusammenfassende URLs

Lokal:

http://localhost:8000/mcp

Production-URL-Vorlage:

https://YOUR-RENDER-SERVICE.onrender.com/mcp

URL für ChatGPT:

https://YOUR-RENDER-SERVICE.onrender.com/mcp

Nützliche offizielle Dokumente

Related MCP Connectors

Related MCP Servers