Skip to main content
Glama
vadimsey

ChatGPT Orchestrator MCP Server

by vadimsey

ChatGPT Orchestrator MCP Server

Минимальный remote MCP server на Python для схемы:

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

На первом этапе сервер содержит один tool:

  • run_orchestrator

  • вход: goal: string

  • выход: простой JSON

Внутри сейчас стоит заглушка. Позже ее можно заменить на вызов вашего настоящего главного агента.

Почему FastMCP

FastMCP выбран потому, что он позволяет описать MCP tool обычной Python-функцией и сразу запустить remote MCP endpoint по HTTP. Для подключения в ChatGPT нужен публичный HTTPS endpoint вида /mcp.

Структура проекта

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

Локальный запуск

Требования:

  • Python 3.11+

  • pip

1. Создать виртуальное окружение

PowerShell:

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

Если на Windows команда python открывает Microsoft Store или не показывает версию, используйте:

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

macOS/Linux:

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

2. Установить зависимости

pip install -r requirements.txt

3. Запустить сервер

python server.py

Локальный MCP endpoint:

http://localhost:8000/mcp

Обычная проверка, что сервер жив:

http://localhost:8000/health

Если клиент просит endpoint со слэшем в конце, используйте:

http://localhost:8000/mcp/

Проверка локально

Оставьте python server.py запущенным. Во втором терминале выполните:

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

Ожидаемый ответ:

{
  "status": "ok"
}

Важно: если открыть http://localhost:8000/mcp в браузере или дернуть его обычным curl без MCP-заголовков, можно увидеть ошибку:

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

Это нормально для MCP endpoint. Проверяйте /health обычным браузером, а /mcp проверяйте MCP-клиентом.

@'
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

Ожидаемый смысл ответа: сервер покажет tool run_orchestrator и вернет JSON с текстом, что заглушка приняла задачу.

Можно также проверить через MCP Inspector:

npx @modelcontextprotocol/inspector

В UI выберите transport Streamable HTTP и URL:

http://localhost:8000/mcp

Деплой на Render

Вариант через GitHub

  1. Создайте новый GitHub-репозиторий.

  2. Загрузите туда эти файлы.

  3. Откройте Render.

  4. Нажмите New -> Web Service.

  5. Подключите GitHub-репозиторий.

  6. Render обычно сам прочитает render.yaml.

  7. Если настраиваете вручную:

    • Runtime: Python

    • Build Command: pip install -r requirements.txt

    • Start Command: python server.py

  8. Нажмите Deploy.

После деплоя Render выдаст URL примерно такого вида:

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

Production MCP endpoint будет:

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

Production health endpoint для проверки в браузере:

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

Именно этот URL нужно вставлять в ChatGPT.

Как подключить к ChatGPT

  1. Откройте ChatGPT в браузере.

  2. Перейдите в Settings.

  3. Откройте Apps & Connectors или Connectors.

  4. Включите Developer Mode, если он еще выключен:

    • Advanced settings

    • Developer mode

  5. Нажмите Create или Create connector.

  6. Заполните:

    • Name: Orchestrator

    • Description: Runs my main orchestrator agent through MCP.

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

  7. Сохраните.

  8. В новом чате выберите этот connector/tool и попросите ChatGPT вызвать оркестратор.

Пример тестового запроса в ChatGPT

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

Ожидаемый ответ от tool сейчас будет примерно:

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

Где заменить заглушку на реального агента

Откройте server.py и найдите функцию:

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

Сейчас она возвращает тестовый JSON. Позже замените ее тело на реальный вызов вашего главного агента.

Пример будущей замены:

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

Важно: не создавайте отдельный MCP server для каждого подручного агента на первом этапе. Пусть ChatGPT видит только один tool run_orchestrator, а уже ваш главный агент внутри решает, каких подручных вызывать.

Итоговые URL

Локально:

http://localhost:8000/mcp

Production URL-шаблон:

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

URL для ChatGPT:

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

Полезные официальные документы

  • OpenAI: https://developers.openai.com/apps-sdk/deploy/connect-chatgpt

  • OpenAI: https://developers.openai.com/api/docs/mcp

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vadimsey/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server