@shipstatic/mcp 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # @shipstatic/mcp
2
2
 
3
- MCP server for [ShipStatic](https://shipstatic.com) - deploy and manage static sites from AI agents.
3
+ MCP server for [ShipStatic](https://shipstatic.com) free, no account needed. Deploy static websites, landing pages, and prototypes instantly from AI agents.
4
4
 
5
- ShipStatic is a simpler alternative to Vercel and Netlify, specialized for static website hosting. No build steps, no framework lock-in - just upload your files and get a URL.
6
-
7
- Works with Claude Code, Cursor, VS Code Copilot, and any MCP-compatible client.
5
+ ShipStatic is static hosting without the complexity. No build steps, no framework lock-in upload your files and get a live URL.
8
6
 
9
7
  <a href="https://glama.ai/mcp/servers/@shipstatic/shipstatic">
10
8
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@shipstatic/shipstatic/badge" alt="shipstatic MCP server" />
@@ -15,28 +13,50 @@ Works with Claude Code, Cursor, VS Code Copilot, and any MCP-compatible client.
15
13
  ### Claude Code
16
14
 
17
15
  ```bash
18
- claude mcp add shipstatic -e SHIP_API_KEY=ship-... -- npx @shipstatic/mcp
16
+ claude mcp add shipstatic -- npx @shipstatic/mcp
19
17
  ```
20
18
 
21
- ### Other MCP clients
19
+ ### Cursor
22
20
 
23
- Add to your MCP client configuration:
21
+ Add to `~/.cursor/mcp.json`:
24
22
 
25
23
  ```json
26
24
  {
27
25
  "mcpServers": {
28
26
  "shipstatic": {
29
27
  "command": "npx",
30
- "args": ["@shipstatic/mcp"],
31
- "env": {
32
- "SHIP_API_KEY": "ship-..."
33
- }
28
+ "args": ["@shipstatic/mcp"]
34
29
  }
35
30
  }
36
31
  }
37
32
  ```
38
33
 
39
- Get your API key at [my.shipstatic.com](https://my.shipstatic.com).
34
+ ### Antigravity
35
+
36
+ Add to `~/.gemini/antigravity/mcp_config.json`:
37
+
38
+ ```json
39
+ {
40
+ "mcpServers": {
41
+ "shipstatic": {
42
+ "command": "npx",
43
+ "args": ["@shipstatic/mcp"]
44
+ }
45
+ }
46
+ }
47
+ ```
48
+
49
+ ### Windsurf, Zed, and other MCP clients
50
+
51
+ Same config format — `npx @shipstatic/mcp` via stdio. Works with any MCP-compatible client.
52
+
53
+ That's it. Your site is live instantly.
54
+
55
+ Without an API key, deployments are public and expire in 3 days. For permanent deployments, add a free API key from [my.shipstatic.com/api-key](https://my.shipstatic.com/api-key):
56
+
57
+ ```bash
58
+ claude mcp add shipstatic -e SHIP_API_KEY=ship-... -- npx @shipstatic/mcp
59
+ ```
40
60
 
41
61
  ## Tools
42
62
 
@@ -44,36 +64,36 @@ Get your API key at [my.shipstatic.com](https://my.shipstatic.com).
44
64
 
45
65
  | Tool | Description |
46
66
  |------|-------------|
47
- | `deployments_upload` | Deploy a static site by uploading files from a directory |
48
- | `deployments_list` | List all deployments with their URLs, status, and labels |
49
- | `deployments_get` | Get deployment details including URL, status, file count, size, and labels |
50
- | `deployments_set` | Update deployment labels |
51
- | `deployments_remove` | Permanently delete a deployment and its files |
67
+ | `deployments_upload` | Publish files and get a live URL instantly no account needed |
68
+ | `deployments_list` | List all your deployed sites with their URLs, status, and labels |
69
+ | `deployments_get` | Get details for a specific deployment including URL, status, and file count |
70
+ | `deployments_set` | Update the labels on a deployment for organization and filtering |
71
+ | `deployments_remove` | Permanently remove a deployment and all its files |
52
72
 
53
73
  ### Domains
54
74
 
55
75
  | Tool | Description |
56
76
  |------|-------------|
57
- | `domains_set` | Create or update a custom domain |
58
- | `domains_list` | List all domains with their linked deployments and verification status |
59
- | `domains_get` | Get domain details including linked deployment, verification status, and labels |
60
- | `domains_records` | Get the DNS records the user needs to configure at their DNS provider |
61
- | `domains_dns` | Look up the DNS provider for a domain |
62
- | `domains_share` | Get a shareable DNS setup hash for a domain |
63
- | `domains_validate` | Check if a domain name is valid and available |
64
- | `domains_verify` | Trigger DNS verification for a custom domain |
65
- | `domains_remove` | Permanently delete a domain |
77
+ | `domains_set` | Connect a custom domain to your site, switch deployments, or update labels |
78
+ | `domains_list` | List all your custom domains with their linked sites and verification status |
79
+ | `domains_get` | Get details for a specific domain including its linked site and DNS status |
80
+ | `domains_records` | Get the DNS records you need to configure at your DNS provider |
81
+ | `domains_dns` | Look up which DNS provider hosts a domain (e.g. Cloudflare, Namecheap) |
82
+ | `domains_share` | Get a shareable link so someone else can see the required DNS records |
83
+ | `domains_validate` | Check if a domain name is valid and available before connecting it |
84
+ | `domains_verify` | Check if DNS is configured correctly after you set up the records |
85
+ | `domains_remove` | Permanently disconnect and remove a custom domain |
66
86
 
67
87
  ### Account
68
88
 
69
89
  | Tool | Description |
70
90
  |------|-------------|
71
- | `whoami` | Show authenticated account details including email, plan, and usage |
91
+ | `whoami` | Get your account details including email, plan, and usage |
72
92
 
73
93
  ## Registry
74
94
 
75
- Published to the [MCP Registry](https://modelcontextprotocol.io) as [`com.shipstatic/mcp`](https://registry.modelcontextprotocol.io/v0.1/servers?search=com.shipstatic/mcp).
95
+ Published to the [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=com.shipstatic/mcp) as `com.shipstatic/mcp`.
76
96
 
77
97
  ## License
78
98
 
79
- MIT
99
+ MIT
package/dist/call.js CHANGED
@@ -14,8 +14,8 @@ export async function call(fn) {
14
14
  function handleError(error) {
15
15
  if (isShipError(error)) {
16
16
  let message = error.message;
17
- if (error.isType(ErrorType.Authentication)) {
18
- message += '\n\nHint: Set the SHIP_API_KEY environment variable in your MCP server configuration.';
17
+ if (error.isType(ErrorType.Authentication) && !message.includes('Too many requests')) {
18
+ message += '\n\nHint: Set a free SHIP_API_KEY environment variable in your MCP server configuration.';
19
19
  }
20
20
  if (error.isType(ErrorType.Validation) && error.details) {
21
21
  message += `\n\nDetails: ${JSON.stringify(error.details)}`;
package/dist/index.js CHANGED
@@ -3,22 +3,9 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
3
3
  import Ship from '@shipstatic/ship';
4
4
  import { createServer } from './server.js';
5
5
  const apiKey = process.env.SHIP_API_KEY;
6
- if (!apiKey) {
7
- console.error('SHIP_API_KEY environment variable is required.');
8
- console.error('Add to your MCP client config:\n');
9
- console.error(JSON.stringify({
10
- mcpServers: {
11
- shipstatic: {
12
- command: 'npx',
13
- args: ['@shipstatic/mcp'],
14
- env: { SHIP_API_KEY: 'ship-...' },
15
- },
16
- },
17
- }, null, 2));
18
- process.exit(1);
19
- }
20
6
  async function main() {
21
- const server = createServer(new Ship({ apiKey }));
7
+ const ship = apiKey ? new Ship({ apiKey }) : new Ship({});
8
+ const server = createServer(ship);
22
9
  const transport = new StdioServerTransport();
23
10
  await server.connect(transport);
24
11
  console.error('ShipStatic MCP Server running on stdio');
package/dist/server.js CHANGED
@@ -6,15 +6,19 @@ const READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true,
6
6
  const CREATE = { destructiveHint: false, ...OPEN_WORLD };
7
7
  const WRITE = { destructiveHint: false, idempotentHint: true, ...OPEN_WORLD };
8
8
  const DESTRUCTIVE = { destructiveHint: true, idempotentHint: true, ...OPEN_WORLD };
9
- const INSTRUCTIONS = `ShipStatic hosts static websites.
9
+ const INSTRUCTIONS = `ShipStatic deploys static websites instantly. No account required.
10
10
 
11
- Concepts:
12
- - Deployment: an immutable set of uploaded files. Every deployment gets a permanent URL (e.g. happy-cat-abc1234.shipstatic.com) immediately — no domain setup needed.
13
- - Domain: a custom domain (e.g. www.example.com) that points to a deployment. Optional. Only subdomains are supported (www.example.com, blog.example.com) not apex domains (example.com).
11
+ To deploy: call deployments_upload with the build output directory path. The site is live immediately.
12
+
13
+ Without SHIP_API_KEY, deployments are public and expire in 3 days. The response includes a claim URL — always show the deployment URL and the claim URL to the user so they can keep the site permanently.
14
14
 
15
- To deploy a site: call deployments_upload with the absolute path to the build output directory. The response includes the deployment hostname.
15
+ With SHIP_API_KEY configured, deployments go to the user's account and never expire. Listing, managing, and domain operations also require SHIP_API_KEY.
16
+
17
+ Concepts:
18
+ - Deployment: an immutable set of files with an instant URL (e.g. happy-cat-abc1234.shipstatic.com). No setup needed.
19
+ - Domain: a custom domain (e.g. www.example.com) pointing to a deployment. Optional. Subdomains only — not apex domains.
16
20
 
17
- To add a custom domain: domains_validate → domains_set (with the deployment) → domains_records (show the DNS records to the user) → user configures DNS → domains_verify.`;
21
+ To add a custom domain: domains_validate → domains_set → domains_records (show DNS records to user) → user configures DNS → domains_verify.`;
18
22
  export function createServer(ship) {
19
23
  const server = new McpServer({
20
24
  name: 'shipstatic',
@@ -24,7 +28,7 @@ export function createServer(ship) {
24
28
  });
25
29
  // Deployments
26
30
  server.registerTool('deployments_upload', {
27
- description: 'Deploy a static site by uploading files from a directory. Returns the deployment details including hostname, file count, and size.',
31
+ description: 'Deploy a static site instantly. No account or API key required. Returns the live URL, file count, and size. Without SHIP_API_KEY, the response includes a claim URL (site expires in 3 days) — always show both the deployment URL and claim URL to the user.',
28
32
  annotations: CREATE,
29
33
  inputSchema: {
30
34
  path: z.string().describe('Absolute path to the build output directory to deploy (e.g. "/Users/me/project/dist")'),
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@shipstatic/mcp",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "mcpName": "com.shipstatic/mcp",
5
- "description": "MCP server for ShipStatic — deploy and manage static sites from AI agents",
5
+ "description": "Free, no account needed — deploy static websites, landing pages, and prototypes instantly from AI agents",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
@@ -14,18 +14,21 @@
14
14
  "README.md"
15
15
  ],
16
16
  "keywords": [
17
+ "ai",
18
+ "claude",
19
+ "deploy",
20
+ "hosting",
21
+ "llm",
17
22
  "mcp",
18
23
  "mcp-server",
19
24
  "model-context-protocol",
20
- "shipstatic",
21
- "deploy",
22
- "static-hosting",
23
- "hosting",
24
- "static",
25
- "cloud",
26
25
  "ship",
27
- "ai",
28
- "claude"
26
+ "static-hosting",
27
+ "static-site",
28
+ "typescript",
29
+ "vibe-coding",
30
+ "web-hosting",
31
+ "website"
29
32
  ],
30
33
  "homepage": "https://github.com/shipstatic/mcp",
31
34
  "repository": {
@@ -41,12 +44,12 @@
41
44
  "author": "ShipStatic",
42
45
  "license": "MIT",
43
46
  "dependencies": {
44
- "@modelcontextprotocol/sdk": "^1.28.0",
45
- "@shipstatic/ship": "^0.8.1",
47
+ "@modelcontextprotocol/sdk": "^1.29.0",
48
+ "@shipstatic/ship": "^0.8.6",
46
49
  "zod": "^4.3.6"
47
50
  },
48
51
  "devDependencies": {
49
- "@shipstatic/types": "^0.8.1",
52
+ "@shipstatic/types": "^0.8.2",
50
53
  "@types/node": "^20.19.37",
51
54
  "husky": "^9.1.7",
52
55
  "typescript": "^5.9.3",