Skydeo Landing MCP
Enables creating, previewing, and revising Skydeo landing pages with authenticated Sandbox previews and draft state management.
README
Skydeo Landing MCP
Hosted control plane for creating, previewing, revising, and eventually publishing Skydeo landing pages through Model Context Protocol clients.
Documentation
docs/README.md— documentation indexdocs/ARCHITECTURE.md— layer-by-layer integration, trust boundaries, request flow, and implementation statusdocs/LIFECYCLE_VERIFICATION.md— real alarm/container smoke tests and the production verification gatedocs/WORK_PLAN.md— tracked implementation milestones for the unified create, update, preview, revise, and publish workflow
Current milestone
This repository currently provides a production-authenticated draft and preview workflow:
- Streamable HTTP MCP transport through Cloudflare Agents SDK
- a Cloudflare Access OAuth integration for Skydeo team identity
manage_landingfor deterministic initial page discovery and persisted legacy-draft status readsconfirm_publishas a separatelandings:publishboundary that currently fails closed without reading draft state or taking repository actioncreate_draft,get_draft,update_draft, andrevoke_previewMCP tools- a typed landing-draft state machine
- one SQLite-backed Durable Object per draft
- one isolated Sandbox preview runtime per draft
- immutable SHA-256 revisions with revision-bound preview URLs
- a fail-closed preview proxy that verifies Cloudflare Access assertions before forwarding production preview traffic to a Sandbox
- a configurable preview TTL (24 hours by default), revocation, Durable Object alarms, and idempotent Sandbox cleanup
- no production publishing capability or credentials
manage_landing is the intended public workflow boundary. Its safe discovery
and status paths are active now. Repository-backed create/edit requests and all
publish requests fail closed without allocating a Sandbox or changing state
until the canonical repository and credentials are configured. The direct-HTML
draft tools remain available as legacy foundation capabilities during that
migration.
The deployed /mcp route uses Cloudflare Access-backed OAuth. npm run dev
explicitly enables a local-only mode, while npm run dev:access exercises the
complete Access OAuth flow after local secrets are configured.
Local checks
npm run cf-typegen
npm run check
Docker is required when starting the Sandbox-backed Worker locally:
npm run dev
The first container build can take several minutes. The MCP endpoint is available
at http://localhost:8787/mcp, and health is available at
http://localhost:8787/healthz.
The repository includes a project-scoped Codex MCP configuration at
.codex/config.toml. Trust the repository, keep npm run dev running, and restart
Codex (or open a new task) to make the skydeo_landing tools available directly in
the app, CLI, or IDE extension. The configuration allow-lists only status and the
draft/create/update workflow; it contains no publish tool.
create_draft accepts a hostname, base revision, and complete HTML document.
update_draft replaces the HTML and requires the current revision as
expected_revision, preventing one editor from silently overwriting another.
Every successful create or update returns a preview URL for that immutable HTML
revision. Local preview URLs remain development-only capability URLs. Production
preview hostnames are routed through the Worker and require a valid assertion from
the wildcard Cloudflare Access preview application before Sandbox proxying. The
Worker also asks the draft coordinator for an active lifecycle decision before
proxying. get_draft reports active, expired, revoked, or cleaned_up, and
revoke_preview fails closed immediately while cleanup proceeds durably.
Planned capability sequence
- Create isolated repository workspaces from a pinned
skydeo-landingsrevision instead of accepting complete HTML. - Add validation and structured landing-page edit operations.
- Add a durable, explicitly approved publish workflow with production safeguards.
The MCP session is not the source of truth for a draft. Each draft is addressed by a stable Skydeo-scoped ID and stored in its own Durable Object so work survives client reconnections and can be resumed from different MCP hosts.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.