
TatNet
cloud.tatnetv1.0.0更新於 Sep 29, 2026
Deploy and manage web apps on TatNet, a Russian cloud: builds, logs, env, domains, balance
概覽
讓助手在 TatNet 雲端部署與管理網站應用:建立應用、部署檔案、查看建置與日誌、管理環境變數與網域、查詢餘額。
- 功能
- 這是 TatNet 公開 /v1 API 之上的遠端 MCP 薄層。工具涵蓋讀取帳號與專案(whoami)、列出與檢視應用、從 git 或 Docker 映像建立應用、把對話中的檔案部署為靜態或 SSR 網站、觸發建置、讀取建置狀態、日誌與歷史,以及列出、設定或刪除環境變數與網域。也會向帳號擁有者提供餘額資訊。同名重複呼叫會沿用既有應用,不會重複建立。
- 適用情境
- 適合讓助手把網站或應用發佈到 TatNet 並持續維運:確認建置是否成功、查看日誌、調整環境變數或綁定網域。部署前核對帳號餘額與專案範圍時也有用。
- 執行需求
- 遠端 streamable HTTP 端點 OAuth(用戶端自行註冊,使用者登入 TatNet 並選擇帳號、專案與存取層級),或以 Authorization: Bearer 標頭傳入 API 金鑰;金鑰在 TatNet 面板建立,可依專案與操作限制。查看餘額需要金鑰具備 billing:read,或 OAuth 連線取得整個帳號的授權。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 TatNet,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"mcp": {
"type": "http",
"url": "https://mcp.tatnet.cloud/mcp"
}
}
}README
tatnet-mcp
MCP-сервер TatNet: управление платформой из Claude (claude.ai, Desktop, Code),
ChatGPT и любого клиента Model Context Protocol.
«Сделай сайт и выложи на TatNet» — это вызов deploy_files.
Устройство
- Тонкий слой над публичным
/v1. Своей БД, своих прав и бизнес-логики нет: каждый инструмент зовётapi.tatnet.ru/v1черезtatnet-goключом того, кто подключился. Права — политика ключа ∩ живая роль создателя, как у CLI и SDK. Чего нет в/v1, того нет и здесь: сначала ручка в/v1, потом инструмент. - Streamable HTTP без состояния (
/mcp), официальныйmodelcontextprotocol/go-sdk. Реплики взаимозаменяемы, выкат клиентов не рвёт. - Авторизация — OAuth или ключ
/v1. Клиент без поля для заголовка регистрируется сам (DCR), человек входит в TatNet и на экране согласия выбирает аккаунт, проекты и уровень доступа; подключение появляется в панели рядом с API-ключами и отзывается там же. Токен выдан только для MCP и дальше сервера не уходит — в/v1сервер ходит сам от имени подключения. Клиенты, которые умеют передать заголовок, могут прийти и с ключомAuthorization: Bearer tn_live_…. Права в обоих случаях решает api на каждом вызове: политика подключения или ключа пересекается с ролью человека.
Инструменты (приложения и баланс)
Удаления аппов нет намеренно: необратимые действия появятся только с двухшаговым подтверждением.
Правила, на которых держится
- Секрет не попадает в контекст модели. Контекст логируется у провайдера
модели; секрет, попавший туда, считается утёкшим.
.envизdeploy_filesв архив не кладётся (как уtatnet deploy), значения секретов не возвращаются. - Пустой список ≠ «ничего нет».
/v1отвечает 200 и пустым списком, когда ключу не видно ресурсов; инструменты говорят это прямо, если ключ ограничен. - Отказ — текст, по которому можно действовать: что случилось и что делать (403 → «расширьте ключ, не повторяйте», 5xx → «наша сторона, повторите»).
- Лог сборки — недоверенные данные. Его пишет код клиента; инструкции сервера и схемы полей говорят модели не исполнять найденное в нём.
- «Сборка прошла» ≠ «работает».
get_buildждёт конца раскатки и отдаётdeploy_state; живым апп называется только приlive. - Повторы не плодят ресурсы. Модели повторяют вызовы;
create_appиdeploy_filesнаходят апп по имени вместо создания второго.
Подключение
Адрес сервера — https://mcp.tatnet.cloud/mcp.
Через OAuth — в клиенте с поддержкой удалённых MCP-серверов (веб-чаты, десктопные приложения, IDE) достаточно указать адрес и выбрать OAuth: клиент зарегистрируется сам и откроет вход в TatNet.
Ключом — для клиентов, которые передают заголовок, и для скриптов. Ключ создаётся в панели TatNet → «API-ключи»; можно ограничить проектами и действиями.
Окружение
Метрики: tatnet_mcp_tool_calls_total{tool,outcome},
tatnet_mcp_tool_duration_seconds{tool}, tatnet_mcp_auth_failures_total{reason}.
Разработка
Сквозной тест (cmd/tatnet-mcp/e2e_test.go) поднимает настоящий MCP-клиент
SDK против сервера, а сервер — против поддельного /v1 с состоянием в памяти,
и проверяет последствия вызовов: что ушло в архив, сколько аппов создано,
что попало в ответ модели.
Каталоги
Сервер один; каталогов, из которых о нём узнают клиенты, три, и в каждый он подаётся отдельно.
Реестр. Пространство имён cloud.tatnet/* подтверждается TXT-записью на
АПЕКСЕ tatnet.cloud (не под селектором вроде _mcp.), адрес сервера держим
на том же домене (тест TestServerJSONFitsTheRegistry; реестр этого не
требует, это наше правило). Ключ Ed25519 — только OpenSSL 3 (системный
openssl macOS — LibreSSL, Ed25519 не умеет):
⚠ Каждая публикация требует НОВОЙ version в server.json: реестр
отвергает повтор уже опубликованной версии.
Аннотации. Оба каталога читают title, readOnlyHint,
destructiveHint, openWorldHint с провода, а ChatGPT отклоняет инструмент,
у которого флаг не указан явно. Тест TestToolAnnotationsAreExplicitOnTheWire
проверяет сырой tools/list.
來源:README.md,提交 b5cf1b9
工具
0版本歷史
1- v1.0.0最新Sep 29, 2026

