
TatNet
cloud.tatnetv1.0.0更新于 Sep 29, 2026
Deploy and manage web apps on TatNet, a Russian cloud: builds, logs, env, domains, balance
概览
让助手在 TatNet 云上部署和管理 Web 应用:创建应用、部署文件、查看构建与日志、管理环境变量和域名、查询余额。
- 功能
- 这是 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

