@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 +49 -29
- package/dist/call.js +2 -2
- package/dist/index.js +2 -15
- package/dist/server.js +11 -7
- package/package.json +16 -13
package/README.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# @shipstatic/mcp
|
|
2
2
|
|
|
3
|
-
MCP server for [ShipStatic](https://shipstatic.com)
|
|
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
|
|
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
|
|
16
|
+
claude mcp add shipstatic -- npx @shipstatic/mcp
|
|
19
17
|
```
|
|
20
18
|
|
|
21
|
-
###
|
|
19
|
+
### Cursor
|
|
22
20
|
|
|
23
|
-
Add to
|
|
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
|
-
|
|
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` |
|
|
48
|
-
| `deployments_list` | List all
|
|
49
|
-
| `deployments_get` | Get deployment
|
|
50
|
-
| `deployments_set` | Update
|
|
51
|
-
| `deployments_remove` | Permanently
|
|
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` |
|
|
58
|
-
| `domains_list` | List all domains with their linked
|
|
59
|
-
| `domains_get` | Get domain
|
|
60
|
-
| `domains_records` | Get the DNS records
|
|
61
|
-
| `domains_dns` | Look up
|
|
62
|
-
| `domains_share` | Get a shareable
|
|
63
|
-
| `domains_validate` | Check if a domain name is valid and available |
|
|
64
|
-
| `domains_verify` |
|
|
65
|
-
| `domains_remove` | Permanently
|
|
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` |
|
|
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://
|
|
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
|
|
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
|
|
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
|
|
9
|
+
const INSTRUCTIONS = `ShipStatic deploys static websites instantly. No account required.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
+
"version": "0.4.1",
|
|
4
4
|
"mcpName": "com.shipstatic/mcp",
|
|
5
|
-
"description": "
|
|
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
|
-
"
|
|
28
|
-
"
|
|
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.
|
|
45
|
-
"@shipstatic/ship": "^0.8.
|
|
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.
|
|
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",
|