Local dev: Docker + MCP (рекомендуемый пилот)
Идея: Forge всегда в Docker; агент в Cursor ходит через AgentForge.Mcp на http://127.0.0.1:8770. Терминалы с dotnet run не нужны.
1. Поднять стек
cd agent-forge
.\scripts\docker-up.ps1
Создаёт .env из .env.example, собирает и запускает:
| Сервис | Порт | Роль |
|---|---|---|
forge |
8770 | API + UI + WitDB (volume forge-data) |
git-ssh |
2222 | git clone / push по SSH |
Остановить: .\scripts\docker-up.ps1 -Down
Логи: docker compose logs -f forge
Схема WitDB: EF migrations (src/AgentForge/Data/Migrations/). При старте — Migrate(); старые volume после EnsureCreated допатчиваются автоматически. Полный сброс данных: docker compose down -v.
Новая миграция после смены модели (из корня репо, dotnet-ef 10.0.9 в dotnet-tools.json):
dotnet tool restore
cd src/AgentForge
dotnet ef migrations add <Name> --output-dir Data/Migrations
2. Auth (один раз на хосте)
Токен живёт на хосте в ~/.forge/credentials.json — контейнер его не монтирует.
forge auth login --device --host http://127.0.0.1:8770
# Approve в http://127.0.0.1:8770/view/auth/device с FORGE_BOOTSTRAP_TOKEN из .env
3. MCP в Cursor
.\scripts\publish-mcp.ps1
В Cursor → MCP:
{
"mcpServers": {
"forge": {
"command": "D:\\agent-forge-mcp\\AgentForge.Mcp.exe",
"env": {
"FORGE_BASE_URL": "http://127.0.0.1:8770"
}
}
}
}
После forge auth login MCP подхватит Bearer из ~/.forge/credentials.json.
4. Git (опционально)
В .env задай FORGE_GIT_AUTHORIZED_KEYS (содержимое id_ed25519.pub), перезапусти compose.
Почему не dotnet run
- один
docker compose upвместо фоновых терминалов; - данные в volume, перезапуск ОС не теряет репо;
- тот же compose ближе к IT CAD deploy.
MCP остаётся на хосте (stdio + Cursor) — так у всех MCP-серверов; в Docker кладём только HTTP API.