@shipstatic/mcp 0.3.0 → 0.4.0

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) deploy static sites instantly from AI agents. No account required.
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
+ Works with Claude Code, Cursor, VS Code Copilot, and any MCP-compatible client. Deployments are live immediately no setup, no credentials needed.
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
+ ### Windsurf
35
+
36
+ Add to `~/.codeium/windsurf/mcp_config.json`:
37
+
38
+ ```json
39
+ {
40
+ "mcpServers": {
41
+ "shipstatic": {
42
+ "command": "npx",
43
+ "args": ["@shipstatic/mcp"]
44
+ }
45
+ }
46
+ }
47
+ ```
48
+
49
+ ### Other MCP clients
50
+
51
+ Same config format — `npx @shipstatic/mcp` via stdio.
52
+
53
+ That's it. Deployments work immediately — sites are live with a claim URL (3-day TTL).
54
+
55
+ 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
 
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.0",
4
4
  "mcpName": "com.shipstatic/mcp",
5
- "description": "MCP server for ShipStatic deploy and manage static sites from AI agents",
5
+ "description": "Deploy static sites instantly from AI agents no account required",
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",