ChatGPT Orchestrator MCP Server
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.
Related MCP server: native-agent-router
Структура проекта
.
├── .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.ps1macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate2. Установить зависимости
pip install -r requirements.txt3. Запустить сервер
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
Создайте новый GitHub-репозиторий.
Загрузите туда эти файлы.
Откройте Render.
Нажмите
New->Web Service.Подключите GitHub-репозиторий.
Render обычно сам прочитает
render.yaml.Если настраиваете вручную:
Runtime:
PythonBuild Command:
pip install -r requirements.txtStart Command:
python server.py
Нажмите
Deploy.
После деплоя Render выдаст URL примерно такого вида:
https://chatgpt-orchestrator-mcp.onrender.comProduction MCP endpoint будет:
https://chatgpt-orchestrator-mcp.onrender.com/mcpProduction health endpoint для проверки в браузере:
https://chatgpt-orchestrator-mcp.onrender.com/healthИменно этот URL нужно вставлять в ChatGPT.
Как подключить к ChatGPT
Откройте ChatGPT в браузере.
Перейдите в
Settings.Откройте
Apps & ConnectorsилиConnectors.Включите Developer Mode, если он еще выключен:
Advanced settingsDeveloper mode
Нажмите
CreateилиCreate connector.Заполните:
Name:
OrchestratorDescription:
Runs my main orchestrator agent through MCP.Connector URL:
https://YOUR-RENDER-SERVICE.onrender.com/mcp
Сохраните.
В новом чате выберите этот 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/mcpProduction URL-шаблон:
https://YOUR-RENDER-SERVICE.onrender.com/mcpURL для ChatGPT:
https://YOUR-RENDER-SERVICE.onrender.com/mcpПолезные официальные документы
This server cannot be deployed
Related MCP Connectors
LLM Orchestration Agent (Mcp)
MCP-Native LLM Orchestration Agent
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables any MCP client to drive a multi-agent orchestration engine with planning, specialist tools, critic revision, and human-in-the-loop approval for sensitive actions.3MIT
- AlicenseAqualityBmaintenanceEnables orchestrator agents to route coding tasks to native CLI worker agents via MCP, providing tools for agent discovery, task submission, waiting, inspection, and cancellation.53MIT
- FlicenseNot gradedqualityDmaintenanceEnables MCP clients to chat with a single Watson Orchestrate agent by exposing invoke_agent and get_agent tools for sending messages and fetching agent details.-
- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT to interact with Engineering MCP through a secure MCP endpoint, including executing C2C plans and workspace file access with operator approval.Apache 2.0