aft.page

Deploy HTML or dist/ to a live HTTPS URL. No account. Drop, MCP, or CLI.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
88%
Integridad del esquema
83%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'aft_rollback' description lacks action verben aft_rollback
  • LOWTool 'aft_health' description lacks action verben aft_health

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,080Tokens (definiciones de herramientas)
~1.3 KBTamaño de respuesta típico
Impacto moderado en la atención (0.84% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.aft.page/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.aft.page/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (5)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡deploy(html, files, preferred_slug, edit_token, expires)

Publish to a live URL. Pass html (one page) OR files (built site). Plain HTML → html. Vite/React → npm run build, then files from dist/. Next static export → files from out/. Always include index.html. Never upload src/, node_modules, or .next/. First hit: preferred_slug from aft.json (include aft.json in files). Later: same slug + edit_token from .aft/state.json. Limits: 500 files, 25MB each, 100MB total.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "html": {
      "description": "One HTML document. Ignored if files is set.",
      "type": "string",
      "minLength": 1
    },
    "files": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "minLength": 1,
            "description": "Relative path, e.g. index.html"
          },
          "content": {
            "type": "string",
            "description": "UTF-8 text (or base64 if encoding=base64)"
          },
          "encoding": {
            "type": "string",
            "enum": [
              "utf8",
              "base64"
            ]
          }
        },
        "required": [
          "path",
          "content"
        ]
      }
    },
    "preferred_slug": {
      "description": "aft.json slug. Required with edit_token.",
      "type": "string",
      "pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
    },
    "edit_token": {
      "type": "string",
      "minLength": 1,
      "description": "From first deploy / .aft/state.json. Required to update or rollback the same URL."
    },
    "expires": {
      "type": "string",
      "pattern": "^\\d+(s|m|h|d)?$",
      "description": "Optional quick-view expiry, e.g. \"1h\", \"24h\", \"90s\", \"7d\". Anonymous (unclaimed) deploys only — the link 404s after this."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡deploy_repo(url)

Same engine as aft.page/run: public GitHub URL → detect → build → live URL. Static is instant; Vite and Next.js build in the background (polls until live or failed). Private repos are refused. For a local project dir, use hosted CLI aft deploy instead.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "description": "GitHub URL or owner/repo, e.g. https://github.com/mdn/beginner-html-site"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢aft_deploys(slug, edit_token)

List rollback-able deploys for a slug. Needs edit_token from .aft/state.json (or the first deploy). Same history the project UI shows after claim.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$",
      "description": "Site slug from aft.json or .aft/state.json"
    },
    "edit_token": {
      "type": "string",
      "minLength": 1,
      "description": "From first deploy / .aft/state.json. Required to update or rollback the same URL."
    }
  },
  "required": [
    "slug",
    "edit_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴aft_rollback(slug, edit_token, deploy_id)

Point the live slug at a prior deployId from aft_deploys. Same URL. Needs edit_token from .aft/state.json. Claim not required.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$",
      "description": "Site slug from aft.json or .aft/state.json"
    },
    "edit_token": {
      "type": "string",
      "minLength": 1,
      "description": "From first deploy / .aft/state.json. Required to update or rollback the same URL."
    },
    "deploy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Prior deployId from aft_deploys"
    }
  },
  "required": [
    "slug",
    "edit_token",
    "deploy_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢aft_health

Ping the aft.page deploy API.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada5 herramientas
verificadoversión no registrada5 herramientas
verificadoversión no registrada5 herramientas