MCP server for the Shiplo deploy platform — deploy and manage static sites from your AI client
Shiplo MCP has well-structured tool definitions with complete input schemas and descriptions for all 8 tools. Naming follows verb_noun convention (platform_*). However, several parameter descriptions lack actionable detail (e.g., 'Site UUID override' without format guidance), and output schemas are generic (additionalProperties: true) rather than documented. Error handling exists but lacks recovery guidance. The platform_deploy_static tool has an exceptionally detailed description (280+ chars) that guides LLM behavior, but others are terse (30-50 chars). No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications in metadata.
Get account status, plan, and usage information
Create a new static site with a platform hostname
Delete a site
Deploy the current project as a static site. On first use, detects settings and writes .shiplo/project.json; later calls reuse it. Runs build_command first when configured. Honors plan upload limits (per-file size cap and account-wide file cap — call platform_account_status first to get them); set oversized explicitly to optimize or skip files over the plan cap. The tool polls the URL after activation and only returns once the edge serves the site (`live: true`, up to ~75s); if it times out, `live` is false and the user should retry the URL in a minute — the deploy itself is already active.
Get the status of a deployment
Output schemas are generic (additionalProperties: true) with no documented field structure. LLMs cannot plan downstream calls or extract specific fields without trial-and-error.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are missing despite clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties without explicit hints.
Parameter descriptions lack actionable constraints. E.g., 'Site UUID override' does not specify format; 'Preferred subdomain' lacks length/character restrictions; 'max_bytes' lacks guidance on typical values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2025-06-18+ | v2 |
Inspect the current project to detect build configuration
List all sites for the authenticated account
Shrink an oversized local image or video file to fit a byte cap, in place (images re-encode via sharp; videos require ffmpeg on PATH). This tool always performs the requested optimization.
Error responses from apiRequest() throw ShiploRequestError but do not provide recovery guidance. LLMs receive error codes/messages without actionable next steps (e.g., 'Try search_users() first').
platform_deploy_static description is excellent (280+ chars, includes prerequisites and timeout behavior), but 6 other tools have terse descriptions (30-60 chars) that lack context for LLM selection.