@suzko/mcp-server 0.1.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/CHANGELOG.md +32 -0
- package/GUIDE.md +952 -0
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/dist/bin/mcp-server.d.ts +11 -0
- package/dist/bin/mcp-server.js +108 -0
- package/dist/src/auth.d.ts +14 -0
- package/dist/src/auth.js +140 -0
- package/dist/src/client.d.ts +18 -0
- package/dist/src/client.js +78 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.js +44 -0
- package/dist/src/prompts/index.d.ts +5 -0
- package/dist/src/prompts/index.js +87 -0
- package/dist/src/resources/index.d.ts +7 -0
- package/dist/src/resources/index.js +86 -0
- package/dist/src/security.d.ts +18 -0
- package/dist/src/security.js +108 -0
- package/dist/src/tools/account.d.ts +3 -0
- package/dist/src/tools/account.js +254 -0
- package/dist/src/tools/deploy.d.ts +3 -0
- package/dist/src/tools/deploy.js +468 -0
- package/dist/src/tools/dns.d.ts +3 -0
- package/dist/src/tools/dns.js +313 -0
- package/dist/src/tools/domains.d.ts +3 -0
- package/dist/src/tools/domains.js +499 -0
- package/dist/src/tools/server-admin.d.ts +3 -0
- package/dist/src/tools/server-admin.js +738 -0
- package/dist/src/tools/services.d.ts +3 -0
- package/dist/src/tools/services.js +181 -0
- package/dist/src/tools/support.d.ts +3 -0
- package/dist/src/tools/support.js +259 -0
- package/package.json +57 -0
package/GUIDE.md
ADDED
|
@@ -0,0 +1,952 @@
|
|
|
1
|
+
# Suzko MCP Server — Usage Guide
|
|
2
|
+
|
|
3
|
+
Complete guide for using the Suzko MCP Server with VS Code Copilot, Claude Desktop, Claude Code, Cursor, and other MCP-compatible AI clients.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [What is MCP?](#what-is-mcp)
|
|
10
|
+
- [Installation](#installation)
|
|
11
|
+
- [Authentication](#authentication)
|
|
12
|
+
- [IDE Setup](#ide-setup)
|
|
13
|
+
- [VS Code (GitHub Copilot)](#vs-code-github-copilot)
|
|
14
|
+
- [Claude Desktop](#claude-desktop)
|
|
15
|
+
- [Claude Code CLI](#claude-code-cli)
|
|
16
|
+
- [Cursor](#cursor)
|
|
17
|
+
- [Windsurf](#windsurf)
|
|
18
|
+
- [Tool Categories](#tool-categories)
|
|
19
|
+
- [Deploy Tools](#deploy-tools)
|
|
20
|
+
- [Domain Tools](#domain-tools)
|
|
21
|
+
- [DNS Tools](#dns-tools)
|
|
22
|
+
- [Account & Billing Tools](#account--billing-tools)
|
|
23
|
+
- [Service Tools](#service-tools)
|
|
24
|
+
- [Support Tools](#support-tools)
|
|
25
|
+
- [Server Admin (BYOS) Tools](#server-admin-byos-tools)
|
|
26
|
+
- [Resources](#resources)
|
|
27
|
+
- [Prompts (Workflow Templates)](#prompts-workflow-templates)
|
|
28
|
+
- [Human-in-the-Loop Confirmation](#human-in-the-loop-confirmation)
|
|
29
|
+
- [Example Conversations](#example-conversations)
|
|
30
|
+
- [Configuration](#configuration)
|
|
31
|
+
- [Troubleshooting](#troubleshooting)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## What is MCP?
|
|
36
|
+
|
|
37
|
+
The [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open standard that lets AI assistants call tools, access data, and perform actions on your behalf. The Suzko MCP Server exposes 57 tools across 7 categories, giving your AI assistant the ability to manage your entire hosting infrastructure through natural language.
|
|
38
|
+
|
|
39
|
+
**What you can do:**
|
|
40
|
+
|
|
41
|
+
- Deploy apps and databases in seconds
|
|
42
|
+
- Search, register, and manage domains
|
|
43
|
+
- Configure DNS records
|
|
44
|
+
- Manage hosting services and billing
|
|
45
|
+
- Open and manage support tickets
|
|
46
|
+
- Administer your own servers via SSH
|
|
47
|
+
- All from a chat conversation with your AI assistant
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
The MCP server runs as a local process that communicates with your IDE via stdio. No global install is needed — your IDE launches it automatically.
|
|
54
|
+
|
|
55
|
+
**Prerequisites:**
|
|
56
|
+
|
|
57
|
+
- Node.js 18 or later
|
|
58
|
+
- A Suzko account (free tier works)
|
|
59
|
+
|
|
60
|
+
**Optional (for BYOS server admin):**
|
|
61
|
+
|
|
62
|
+
- SSH key pair (`~/.ssh/id_ed25519` by default)
|
|
63
|
+
- Servers you want to manage
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Authentication
|
|
68
|
+
|
|
69
|
+
Before using the MCP server, you need to log in once. This stores credentials locally at `~/.suzko/mcp-credentials.json`.
|
|
70
|
+
|
|
71
|
+
### Login
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npx @suzko/mcp-server auth login
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
This prints a URL — open it in your browser, log in to your Suzko account, copy the auth code, and paste it back in the terminal.
|
|
78
|
+
|
|
79
|
+
### Check Status
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npx @suzko/mcp-server auth status
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Output:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
✓ Logged in
|
|
89
|
+
API: https://www.suzko.com
|
|
90
|
+
Token: Valid (expires 4/16/2026, 3:00:00 PM)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Logout
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx @suzko/mcp-server auth logout
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### How Auth Works
|
|
100
|
+
|
|
101
|
+
- Uses the same device token flow as the desktop and mobile apps
|
|
102
|
+
- Access tokens auto-refresh when they're within 1 hour of expiring
|
|
103
|
+
- Credentials are stored with restricted file permissions (0600 on Unix)
|
|
104
|
+
- The `~/.suzko/` directory is created automatically on first login
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## IDE Setup
|
|
109
|
+
|
|
110
|
+
### VS Code (GitHub Copilot)
|
|
111
|
+
|
|
112
|
+
Add to your **User** or **Workspace** `settings.json`:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"mcp": {
|
|
117
|
+
"servers": {
|
|
118
|
+
"suzko": {
|
|
119
|
+
"command": "npx",
|
|
120
|
+
"args": ["-y", "@suzko/mcp-server"]
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Then in Copilot Chat (agent mode), tools appear automatically. Try:
|
|
128
|
+
|
|
129
|
+
> Deploy a PostgreSQL database for my project
|
|
130
|
+
|
|
131
|
+
### Claude Desktop
|
|
132
|
+
|
|
133
|
+
Edit `claude_desktop_config.json`:
|
|
134
|
+
|
|
135
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
136
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"mcpServers": {
|
|
141
|
+
"suzko": {
|
|
142
|
+
"command": "npx",
|
|
143
|
+
"args": ["-y", "@suzko/mcp-server"]
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Restart Claude Desktop. You'll see a hammer icon (🔨) indicating tools are available.
|
|
150
|
+
|
|
151
|
+
### Claude Code CLI
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
claude mcp add suzko -- npx -y @suzko/mcp-server
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
This adds it to your project's `.mcp.json`. To add globally:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
claude mcp add --scope user suzko -- npx -y @suzko/mcp-server
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Cursor
|
|
164
|
+
|
|
165
|
+
Add to `.cursor/mcp.json` in your project root:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"mcpServers": {
|
|
170
|
+
"suzko": {
|
|
171
|
+
"command": "npx",
|
|
172
|
+
"args": ["-y", "@suzko/mcp-server"]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Windsurf
|
|
179
|
+
|
|
180
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"mcpServers": {
|
|
185
|
+
"suzko": {
|
|
186
|
+
"command": "npx",
|
|
187
|
+
"args": ["-y", "@suzko/mcp-server"]
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Tool Categories
|
|
196
|
+
|
|
197
|
+
### Deploy Tools
|
|
198
|
+
|
|
199
|
+
Create and manage cloud deployments — containers, databases, and full application stacks.
|
|
200
|
+
|
|
201
|
+
#### `list_deploy_templates`
|
|
202
|
+
|
|
203
|
+
Browse available templates (PostgreSQL, MySQL, Redis, Node.js, etc.).
|
|
204
|
+
|
|
205
|
+
| Parameter | Required | Description |
|
|
206
|
+
|-----------|----------|-------------|
|
|
207
|
+
| `category` | No | Filter by category (e.g., "database", "runtime") |
|
|
208
|
+
|
|
209
|
+
**Example prompt:** *"What databases can I deploy?"*
|
|
210
|
+
|
|
211
|
+
#### `create_deploy_project`
|
|
212
|
+
|
|
213
|
+
Create a new deployment. Returns a cost preview and confirmation token.
|
|
214
|
+
|
|
215
|
+
| Parameter | Required | Description |
|
|
216
|
+
|-----------|----------|-------------|
|
|
217
|
+
| `name` | Yes | Project name (lowercase, alphanumeric, hyphens) |
|
|
218
|
+
| `templateId` | Yes | Template to deploy (from `list_deploy_templates`) |
|
|
219
|
+
| `tier` | Yes | Resource tier: `nano` (256MB), `micro` (512MB), `small` (1GB), `medium` (2GB), `large` (4GB), `xlarge` (8GB) |
|
|
220
|
+
| `stackId` | No | Pre-configured stack (e.g., "nextjs-postgres") |
|
|
221
|
+
| `subdomain` | No | Custom subdomain (auto-generated if omitted) |
|
|
222
|
+
| `envVars` | No | Environment variables as key-value pairs |
|
|
223
|
+
|
|
224
|
+
**Example prompt:** *"Deploy a PostgreSQL database called my-app-db on the small tier"*
|
|
225
|
+
|
|
226
|
+
#### `confirm_deploy_project`
|
|
227
|
+
|
|
228
|
+
Execute a pending project creation after reviewing the cost preview.
|
|
229
|
+
|
|
230
|
+
| Parameter | Required | Description |
|
|
231
|
+
|-----------|----------|-------------|
|
|
232
|
+
| `confirmationId` | Yes | Token from `create_deploy_project` (valid for 5 minutes) |
|
|
233
|
+
|
|
234
|
+
#### `get_deploy_project`
|
|
235
|
+
|
|
236
|
+
Get full project details — status, URL, services, domains, resource usage.
|
|
237
|
+
|
|
238
|
+
| Parameter | Required | Description |
|
|
239
|
+
|-----------|----------|-------------|
|
|
240
|
+
| `projectId` | Yes | Project ID |
|
|
241
|
+
|
|
242
|
+
#### `control_deploy_project`
|
|
243
|
+
|
|
244
|
+
Start, stop, restart, or delete a project.
|
|
245
|
+
|
|
246
|
+
| Parameter | Required | Description |
|
|
247
|
+
|-----------|----------|-------------|
|
|
248
|
+
| `projectId` | Yes | Project ID |
|
|
249
|
+
| `action` | Yes | One of: `start`, `stop`, `restart`, `delete` |
|
|
250
|
+
|
|
251
|
+
**Example prompt:** *"Restart my-app-db"*
|
|
252
|
+
|
|
253
|
+
#### `get_deploy_logs`
|
|
254
|
+
|
|
255
|
+
Read runtime container logs.
|
|
256
|
+
|
|
257
|
+
| Parameter | Required | Description |
|
|
258
|
+
|-----------|----------|-------------|
|
|
259
|
+
| `projectId` | Yes | Project ID |
|
|
260
|
+
| `tail` | No | Number of lines (default: 100) |
|
|
261
|
+
| `since` | No | ISO 8601 timestamp to start from |
|
|
262
|
+
|
|
263
|
+
**Example prompt:** *"Show me the last 50 lines of logs for my-app-db"*
|
|
264
|
+
|
|
265
|
+
#### `get_deploy_build_logs`
|
|
266
|
+
|
|
267
|
+
Read build output from the last deployment.
|
|
268
|
+
|
|
269
|
+
| Parameter | Required | Description |
|
|
270
|
+
|-----------|----------|-------------|
|
|
271
|
+
| `projectId` | Yes | Project ID |
|
|
272
|
+
|
|
273
|
+
#### `redeploy_project`
|
|
274
|
+
|
|
275
|
+
Trigger a full rebuild and restart.
|
|
276
|
+
|
|
277
|
+
| Parameter | Required | Description |
|
|
278
|
+
|-----------|----------|-------------|
|
|
279
|
+
| `projectId` | Yes | Project ID |
|
|
280
|
+
|
|
281
|
+
#### `set_deploy_env`
|
|
282
|
+
|
|
283
|
+
Set environment variables on a project. Overwrites existing keys; unmentioned keys are preserved.
|
|
284
|
+
|
|
285
|
+
| Parameter | Required | Description |
|
|
286
|
+
|-----------|----------|-------------|
|
|
287
|
+
| `projectId` | Yes | Project ID |
|
|
288
|
+
| `envVars` | Yes | Key-value pairs to set |
|
|
289
|
+
|
|
290
|
+
**Example prompt:** *"Set DATABASE_URL on my-web-app to the connection string from my-app-db"*
|
|
291
|
+
|
|
292
|
+
#### `check_subdomain`
|
|
293
|
+
|
|
294
|
+
Check if a subdomain is available.
|
|
295
|
+
|
|
296
|
+
| Parameter | Required | Description |
|
|
297
|
+
|-----------|----------|-------------|
|
|
298
|
+
| `subdomain` | Yes | Subdomain to check (e.g., "my-app") |
|
|
299
|
+
|
|
300
|
+
#### `get_deploy_usage`
|
|
301
|
+
|
|
302
|
+
Get deploy usage statistics, project counts, and plan limits.
|
|
303
|
+
|
|
304
|
+
No parameters required.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
### Domain Tools
|
|
309
|
+
|
|
310
|
+
Search, register, transfer, and manage domain names.
|
|
311
|
+
|
|
312
|
+
#### `search_domains`
|
|
313
|
+
|
|
314
|
+
Batch check availability and pricing for up to 20 domains at once.
|
|
315
|
+
|
|
316
|
+
| Parameter | Required | Description |
|
|
317
|
+
|-----------|----------|-------------|
|
|
318
|
+
| `domains` | Yes | Array of domain names to check (1–20) |
|
|
319
|
+
|
|
320
|
+
**Example prompt:** *"Check if example.com, example.io, and example.dev are available"*
|
|
321
|
+
|
|
322
|
+
#### `get_tld_pricing`
|
|
323
|
+
|
|
324
|
+
Get pricing for all supported TLDs — registration, renewal, and transfer costs.
|
|
325
|
+
|
|
326
|
+
No parameters required.
|
|
327
|
+
|
|
328
|
+
#### `suggest_domain_names`
|
|
329
|
+
|
|
330
|
+
AI-powered creative domain name suggestions based on keywords.
|
|
331
|
+
|
|
332
|
+
| Parameter | Required | Description |
|
|
333
|
+
|-----------|----------|-------------|
|
|
334
|
+
| `keywords` | Yes | Descriptive keywords (e.g., "fast cloud hosting") |
|
|
335
|
+
| `tld` | No | Preferred TLD (e.g., ".com", ".dev") |
|
|
336
|
+
|
|
337
|
+
**Example prompt:** *"Suggest domain names for my AI startup that does image generation"*
|
|
338
|
+
|
|
339
|
+
#### `register_domain`
|
|
340
|
+
|
|
341
|
+
Register a domain. Returns a cost preview and confirmation token.
|
|
342
|
+
|
|
343
|
+
| Parameter | Required | Description |
|
|
344
|
+
|-----------|----------|-------------|
|
|
345
|
+
| `domain` | Yes | Full domain name (e.g., "example.com") |
|
|
346
|
+
| `period` | Yes | Registration period in years (1–10) |
|
|
347
|
+
| `nameservers` | No | Custom nameservers (array of 2–5) |
|
|
348
|
+
|
|
349
|
+
#### `confirm_domain_registration`
|
|
350
|
+
|
|
351
|
+
Execute a pending domain registration.
|
|
352
|
+
|
|
353
|
+
| Parameter | Required | Description |
|
|
354
|
+
|-----------|----------|-------------|
|
|
355
|
+
| `confirmationId` | Yes | Token from `register_domain` |
|
|
356
|
+
|
|
357
|
+
#### `transfer_domain` / `confirm_domain_transfer`
|
|
358
|
+
|
|
359
|
+
Transfer a domain from another registrar. Same two-step confirmation flow.
|
|
360
|
+
|
|
361
|
+
| Parameter | Required | Description |
|
|
362
|
+
|-----------|----------|-------------|
|
|
363
|
+
| `domain` | Yes | Domain to transfer |
|
|
364
|
+
| `eppCode` | Yes | Authorization/EPP code from current registrar |
|
|
365
|
+
|
|
366
|
+
#### `list_domains`
|
|
367
|
+
|
|
368
|
+
List all your domains with status, expiry dates, and auto-renew settings.
|
|
369
|
+
|
|
370
|
+
#### `get_domain_details`
|
|
371
|
+
|
|
372
|
+
Get full domain info — nameservers, dates, lock status, DNS/email/ID protection.
|
|
373
|
+
|
|
374
|
+
| Parameter | Required | Description |
|
|
375
|
+
|-----------|----------|-------------|
|
|
376
|
+
| `domainId` | Yes | Domain ID (number) |
|
|
377
|
+
|
|
378
|
+
#### `update_domain_nameservers`
|
|
379
|
+
|
|
380
|
+
Change nameservers for a domain.
|
|
381
|
+
|
|
382
|
+
| Parameter | Required | Description |
|
|
383
|
+
|-----------|----------|-------------|
|
|
384
|
+
| `domainId` | Yes | Domain ID |
|
|
385
|
+
| `nameservers` | Yes | Array of 2–5 nameserver hostnames |
|
|
386
|
+
|
|
387
|
+
#### `get_domain_lock_status` / `toggle_domain_lock`
|
|
388
|
+
|
|
389
|
+
Check or toggle the registrar transfer lock on a domain.
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
### DNS Tools
|
|
394
|
+
|
|
395
|
+
Manage DNS records for your domains.
|
|
396
|
+
|
|
397
|
+
> **Note:** You must enable DNS management on a domain before creating records.
|
|
398
|
+
|
|
399
|
+
#### `enable_dns_management`
|
|
400
|
+
|
|
401
|
+
Enable DNS management for a domain (one-time setup).
|
|
402
|
+
|
|
403
|
+
| Parameter | Required | Description |
|
|
404
|
+
|-----------|----------|-------------|
|
|
405
|
+
| `domainId` | Yes | Domain ID |
|
|
406
|
+
|
|
407
|
+
#### `list_dns_records`
|
|
408
|
+
|
|
409
|
+
List all DNS records for a domain.
|
|
410
|
+
|
|
411
|
+
| Parameter | Required | Description |
|
|
412
|
+
|-----------|----------|-------------|
|
|
413
|
+
| `domainId` | Yes | Domain ID |
|
|
414
|
+
|
|
415
|
+
#### `create_dns_record`
|
|
416
|
+
|
|
417
|
+
Create a DNS record.
|
|
418
|
+
|
|
419
|
+
| Parameter | Required | Description |
|
|
420
|
+
|-----------|----------|-------------|
|
|
421
|
+
| `domainId` | Yes | Domain ID |
|
|
422
|
+
| `type` | Yes | Record type: `A`, `AAAA`, `CNAME`, `TXT`, `MX`, `NS`, `SRV`, `CAA` |
|
|
423
|
+
| `name` | Yes | Record name (e.g., "@", "www", "api") |
|
|
424
|
+
| `content` | Yes | Record value (IP, hostname, text) |
|
|
425
|
+
| `ttl` | No | Time-to-live in seconds (min: 60) |
|
|
426
|
+
| `priority` | No | Priority (required for MX, SRV) |
|
|
427
|
+
|
|
428
|
+
**Example prompt:** *"Add an A record pointing api.example.com to 203.0.113.50"*
|
|
429
|
+
|
|
430
|
+
#### `update_dns_record`
|
|
431
|
+
|
|
432
|
+
Update an existing DNS record. At least one field must change.
|
|
433
|
+
|
|
434
|
+
| Parameter | Required | Description |
|
|
435
|
+
|-----------|----------|-------------|
|
|
436
|
+
| `domainId` | Yes | Domain ID |
|
|
437
|
+
| `recordId` | Yes | Record ID (from `list_dns_records`) |
|
|
438
|
+
| `type` | No | New record type |
|
|
439
|
+
| `name` | No | New name |
|
|
440
|
+
| `content` | No | New value |
|
|
441
|
+
| `ttl` | No | New TTL |
|
|
442
|
+
| `priority` | No | New priority |
|
|
443
|
+
|
|
444
|
+
#### `delete_dns_record`
|
|
445
|
+
|
|
446
|
+
Delete a DNS record. This is irreversible.
|
|
447
|
+
|
|
448
|
+
| Parameter | Required | Description |
|
|
449
|
+
|-----------|----------|-------------|
|
|
450
|
+
| `domainId` | Yes | Domain ID |
|
|
451
|
+
| `recordId` | Yes | Record ID |
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
### Account & Billing Tools
|
|
456
|
+
|
|
457
|
+
View your profile, invoices, subscriptions, and billing information.
|
|
458
|
+
|
|
459
|
+
#### `get_account_info`
|
|
460
|
+
|
|
461
|
+
Get your profile — name, email, company, client ID, currency, and credit balance.
|
|
462
|
+
|
|
463
|
+
#### `list_invoices`
|
|
464
|
+
|
|
465
|
+
List invoices with optional status filter.
|
|
466
|
+
|
|
467
|
+
| Parameter | Required | Description |
|
|
468
|
+
|-----------|----------|-------------|
|
|
469
|
+
| `status` | No | Filter: `Paid`, `Unpaid`, `Cancelled`, `Refunded` |
|
|
470
|
+
| `page` | No | Page number for pagination |
|
|
471
|
+
|
|
472
|
+
#### `get_invoice`
|
|
473
|
+
|
|
474
|
+
Get invoice details including line items, totals, and payment info.
|
|
475
|
+
|
|
476
|
+
| Parameter | Required | Description |
|
|
477
|
+
|-----------|----------|-------------|
|
|
478
|
+
| `invoiceId` | Yes | Invoice ID (number) |
|
|
479
|
+
|
|
480
|
+
#### `list_subscriptions`
|
|
481
|
+
|
|
482
|
+
List your active local subscriptions (AI Studio, Deploy, VoIP, etc.).
|
|
483
|
+
|
|
484
|
+
#### `check_perks`
|
|
485
|
+
|
|
486
|
+
Check which subscription perks are active on your account (e.g., `deploy_hobby`, `studio_pro`, `voip_basic`).
|
|
487
|
+
|
|
488
|
+
#### `list_orders`
|
|
489
|
+
|
|
490
|
+
List recent orders.
|
|
491
|
+
|
|
492
|
+
| Parameter | Required | Description |
|
|
493
|
+
|-----------|----------|-------------|
|
|
494
|
+
| `page` | No | Page number |
|
|
495
|
+
|
|
496
|
+
#### `get_account_balance`
|
|
497
|
+
|
|
498
|
+
Get your account credit balance.
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
### Service Tools
|
|
503
|
+
|
|
504
|
+
Manage WHMCS hosting and server services.
|
|
505
|
+
|
|
506
|
+
#### `list_services`
|
|
507
|
+
|
|
508
|
+
List all your hosting services with status, domain, IP, and billing info.
|
|
509
|
+
|
|
510
|
+
| Parameter | Required | Description |
|
|
511
|
+
|-----------|----------|-------------|
|
|
512
|
+
| `page` | No | Page number |
|
|
513
|
+
|
|
514
|
+
#### `get_service_details`
|
|
515
|
+
|
|
516
|
+
Get full service details — configuration options, server info, custom fields.
|
|
517
|
+
|
|
518
|
+
| Parameter | Required | Description |
|
|
519
|
+
|-----------|----------|-------------|
|
|
520
|
+
| `serviceId` | Yes | Service ID (number) |
|
|
521
|
+
|
|
522
|
+
#### `get_service_sso_url`
|
|
523
|
+
|
|
524
|
+
Get a single sign-on URL to access your service's control panel (Plesk, Pterodactyl, etc.) without logging in separately.
|
|
525
|
+
|
|
526
|
+
| Parameter | Required | Description |
|
|
527
|
+
|-----------|----------|-------------|
|
|
528
|
+
| `serviceId` | Yes | Service ID |
|
|
529
|
+
|
|
530
|
+
**Example prompt:** *"Give me a login link for my game server"*
|
|
531
|
+
|
|
532
|
+
#### `upgrade_service`
|
|
533
|
+
|
|
534
|
+
Get upgrade/downgrade options and a link to manage the service.
|
|
535
|
+
|
|
536
|
+
| Parameter | Required | Description |
|
|
537
|
+
|-----------|----------|-------------|
|
|
538
|
+
| `serviceId` | Yes | Service ID |
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
### Support Tools
|
|
543
|
+
|
|
544
|
+
Create and manage support tickets.
|
|
545
|
+
|
|
546
|
+
#### `list_tickets`
|
|
547
|
+
|
|
548
|
+
List support tickets with optional status filter.
|
|
549
|
+
|
|
550
|
+
| Parameter | Required | Description |
|
|
551
|
+
|-----------|----------|-------------|
|
|
552
|
+
| `status` | No | `Open`, `Answered`, `Customer-Reply`, `Closed`, `On Hold` |
|
|
553
|
+
| `page` | No | Page number |
|
|
554
|
+
|
|
555
|
+
#### `get_ticket`
|
|
556
|
+
|
|
557
|
+
Get full ticket details including all replies.
|
|
558
|
+
|
|
559
|
+
| Parameter | Required | Description |
|
|
560
|
+
|-----------|----------|-------------|
|
|
561
|
+
| `ticketId` | Yes | Ticket ID (number) |
|
|
562
|
+
|
|
563
|
+
#### `open_support_ticket`
|
|
564
|
+
|
|
565
|
+
Open a new support ticket.
|
|
566
|
+
|
|
567
|
+
| Parameter | Required | Description |
|
|
568
|
+
|-----------|----------|-------------|
|
|
569
|
+
| `deptid` | Yes | Department ID (number) |
|
|
570
|
+
| `subject` | Yes | Ticket subject |
|
|
571
|
+
| `message` | Yes | Ticket body |
|
|
572
|
+
| `priority` | No | `Low`, `Medium`, `High` |
|
|
573
|
+
| `serviceId` | No | Related service ID |
|
|
574
|
+
|
|
575
|
+
**Example prompt:** *"Open a support ticket about my web hosting service being slow"*
|
|
576
|
+
|
|
577
|
+
#### `reply_to_ticket`
|
|
578
|
+
|
|
579
|
+
Add a reply to an existing ticket.
|
|
580
|
+
|
|
581
|
+
| Parameter | Required | Description |
|
|
582
|
+
|-----------|----------|-------------|
|
|
583
|
+
| `ticketId` | Yes | Ticket ID |
|
|
584
|
+
| `message` | Yes | Reply text |
|
|
585
|
+
|
|
586
|
+
#### `close_ticket`
|
|
587
|
+
|
|
588
|
+
Close a ticket with an optional closing message.
|
|
589
|
+
|
|
590
|
+
| Parameter | Required | Description |
|
|
591
|
+
|-----------|----------|-------------|
|
|
592
|
+
| `ticketId` | Yes | Ticket ID |
|
|
593
|
+
| `message` | No | Closing message |
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
### Server Admin (BYOS) Tools
|
|
598
|
+
|
|
599
|
+
Manage your own servers via SSH. These tools work entirely locally — no Suzko account is needed for server admin. Server connections are stored in `~/.suzko/servers.json`.
|
|
600
|
+
|
|
601
|
+
> **Security:** Dangerous commands (like `rm -rf /`, `dd`, `mkfs`, fork bombs) are blocked automatically.
|
|
602
|
+
|
|
603
|
+
#### `connect_server`
|
|
604
|
+
|
|
605
|
+
Register a server and test the SSH connection.
|
|
606
|
+
|
|
607
|
+
| Parameter | Required | Description |
|
|
608
|
+
|-----------|----------|-------------|
|
|
609
|
+
| `alias` | Yes | Friendly name for the server (e.g., "prod-web") |
|
|
610
|
+
| `host` | Yes | IP address or hostname |
|
|
611
|
+
| `user` | No | SSH username (default: `root`) |
|
|
612
|
+
| `port` | No | SSH port (default: `22`) |
|
|
613
|
+
| `keyPath` | No | Path to SSH key (default: `~/.ssh/id_ed25519`) |
|
|
614
|
+
|
|
615
|
+
**Example prompt:** *"Connect to my server at 203.0.113.10 as root and call it prod-web"*
|
|
616
|
+
|
|
617
|
+
#### `list_servers`
|
|
618
|
+
|
|
619
|
+
List all registered servers from the local registry.
|
|
620
|
+
|
|
621
|
+
#### `inspect_server`
|
|
622
|
+
|
|
623
|
+
Run diagnostics — OS, uptime, CPU, memory, disk, Docker status, network.
|
|
624
|
+
|
|
625
|
+
| Parameter | Required | Description |
|
|
626
|
+
|-----------|----------|-------------|
|
|
627
|
+
| `alias` | Yes | Server alias |
|
|
628
|
+
|
|
629
|
+
**Example prompt:** *"What's the status of my prod-web server?"*
|
|
630
|
+
|
|
631
|
+
#### `run_server_command`
|
|
632
|
+
|
|
633
|
+
Execute a shell command on a server via SSH.
|
|
634
|
+
|
|
635
|
+
| Parameter | Required | Description |
|
|
636
|
+
|-----------|----------|-------------|
|
|
637
|
+
| `alias` | Yes | Server alias |
|
|
638
|
+
| `command` | Yes | Shell command to run |
|
|
639
|
+
| `timeout` | No | Timeout in ms (default: 60000) |
|
|
640
|
+
|
|
641
|
+
**Example prompt:** *"Run 'nginx -t' on prod-web to check the config"*
|
|
642
|
+
|
|
643
|
+
#### `install_docker`
|
|
644
|
+
|
|
645
|
+
Install Docker and the compose plugin via the official install script.
|
|
646
|
+
|
|
647
|
+
| Parameter | Required | Description |
|
|
648
|
+
|-----------|----------|-------------|
|
|
649
|
+
| `alias` | Yes | Server alias |
|
|
650
|
+
|
|
651
|
+
#### `deploy_to_server`
|
|
652
|
+
|
|
653
|
+
Upload a local directory via SCP and run `docker compose up -d`.
|
|
654
|
+
|
|
655
|
+
| Parameter | Required | Description |
|
|
656
|
+
|-----------|----------|-------------|
|
|
657
|
+
| `alias` | Yes | Server alias |
|
|
658
|
+
| `localPath` | Yes | Local directory to upload |
|
|
659
|
+
| `remotePath` | No | Remote destination (default: `/opt/deploy`) |
|
|
660
|
+
|
|
661
|
+
**Example prompt:** *"Deploy my project at ./my-app to prod-web"*
|
|
662
|
+
|
|
663
|
+
#### `list_server_containers`
|
|
664
|
+
|
|
665
|
+
List Docker containers on a server.
|
|
666
|
+
|
|
667
|
+
| Parameter | Required | Description |
|
|
668
|
+
|-----------|----------|-------------|
|
|
669
|
+
| `alias` | Yes | Server alias |
|
|
670
|
+
| `all` | No | Include stopped containers (default: `true`) |
|
|
671
|
+
|
|
672
|
+
#### `manage_server_container`
|
|
673
|
+
|
|
674
|
+
Start, stop, restart, or remove a Docker container.
|
|
675
|
+
|
|
676
|
+
| Parameter | Required | Description |
|
|
677
|
+
|-----------|----------|-------------|
|
|
678
|
+
| `alias` | Yes | Server alias |
|
|
679
|
+
| `container` | Yes | Container name or ID |
|
|
680
|
+
| `action` | Yes | `start`, `stop`, `restart`, or `remove` |
|
|
681
|
+
|
|
682
|
+
#### `setup_ssl`
|
|
683
|
+
|
|
684
|
+
Install Certbot and obtain a Let's Encrypt SSL certificate.
|
|
685
|
+
|
|
686
|
+
| Parameter | Required | Description |
|
|
687
|
+
|-----------|----------|-------------|
|
|
688
|
+
| `alias` | Yes | Server alias |
|
|
689
|
+
| `domain` | Yes | Domain for the certificate |
|
|
690
|
+
| `email` | No | Email for renewal notifications |
|
|
691
|
+
| `mode` | No | `nginx` or `standalone` (default: `standalone`) |
|
|
692
|
+
|
|
693
|
+
#### `get_server_status`
|
|
694
|
+
|
|
695
|
+
Get live system status — CPU, memory, disk, load average, top processes, network connections.
|
|
696
|
+
|
|
697
|
+
| Parameter | Required | Description |
|
|
698
|
+
|-----------|----------|-------------|
|
|
699
|
+
| `alias` | Yes | Server alias |
|
|
700
|
+
|
|
701
|
+
#### `get_server_logs`
|
|
702
|
+
|
|
703
|
+
Read logs from various sources.
|
|
704
|
+
|
|
705
|
+
| Parameter | Required | Description |
|
|
706
|
+
|-----------|----------|-------------|
|
|
707
|
+
| `alias` | Yes | Server alias |
|
|
708
|
+
| `source` | Yes | `journalctl`, `docker`, or `file` |
|
|
709
|
+
| `target` | No | Container name (for docker) or file path (for file) |
|
|
710
|
+
| `lines` | No | Number of lines (default: 50) |
|
|
711
|
+
|
|
712
|
+
**Example prompt:** *"Show me nginx logs on prod-web"*
|
|
713
|
+
|
|
714
|
+
#### `manage_env_file`
|
|
715
|
+
|
|
716
|
+
Read or write `.env` files on a server. In `set` mode, merges with existing keys.
|
|
717
|
+
|
|
718
|
+
| Parameter | Required | Description |
|
|
719
|
+
|-----------|----------|-------------|
|
|
720
|
+
| `alias` | Yes | Server alias |
|
|
721
|
+
| `remotePath` | Yes | Path to `.env` file |
|
|
722
|
+
| `mode` | Yes | `get` (read) or `set` (write) |
|
|
723
|
+
| `values` | No | Key-value pairs to set (required for `set` mode) |
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
## Resources
|
|
728
|
+
|
|
729
|
+
Resources are read-only data that your AI can reference during a conversation. They're loaded on demand via `suzko://` URIs.
|
|
730
|
+
|
|
731
|
+
| URI | Description |
|
|
732
|
+
|-----|-------------|
|
|
733
|
+
| `suzko://services` | Your active hosting services |
|
|
734
|
+
| `suzko://deploy/projects` | Your deployed projects and containers |
|
|
735
|
+
| `suzko://domains` | Your registered domains |
|
|
736
|
+
| `suzko://invoices` | Billing history and outstanding invoices |
|
|
737
|
+
| `suzko://perks` | Your active subscription perks |
|
|
738
|
+
|
|
739
|
+
In Claude Desktop, you can attach resources by clicking the 📎 icon and selecting from the `suzko://` list.
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
743
|
+
## Prompts (Workflow Templates)
|
|
744
|
+
|
|
745
|
+
Prompts are pre-built conversation starters for common workflows. They set up the right context so your AI knows which tools to use.
|
|
746
|
+
|
|
747
|
+
### `deploy-app`
|
|
748
|
+
|
|
749
|
+
Deploy an application end-to-end.
|
|
750
|
+
|
|
751
|
+
| Parameter | Description |
|
|
752
|
+
|-----------|-------------|
|
|
753
|
+
| `appType` | Type of app: "next.js", "express", "static", "docker" |
|
|
754
|
+
| `database` | Database needed: "postgres", "mysql", "mongodb", "none" |
|
|
755
|
+
|
|
756
|
+
**What it does:** Lists templates → creates project → sets up database → configures env vars → verifies everything runs.
|
|
757
|
+
|
|
758
|
+
### `find-domain`
|
|
759
|
+
|
|
760
|
+
Search and register a domain name.
|
|
761
|
+
|
|
762
|
+
| Parameter | Description |
|
|
763
|
+
|-----------|-------------|
|
|
764
|
+
| `keywords` | Keywords for the domain (e.g., "my startup", "tech blog") |
|
|
765
|
+
| `tld` | Preferred TLD (e.g., ".com", ".dev") |
|
|
766
|
+
|
|
767
|
+
**What it does:** Searches availability → suggests alternatives → shows pricing → handles registration.
|
|
768
|
+
|
|
769
|
+
### `troubleshoot-service`
|
|
770
|
+
|
|
771
|
+
Diagnose issues with a deployed service.
|
|
772
|
+
|
|
773
|
+
| Parameter | Description |
|
|
774
|
+
|-----------|-------------|
|
|
775
|
+
| `projectId` | Project ID or name |
|
|
776
|
+
| `issue` | Description of the problem |
|
|
777
|
+
|
|
778
|
+
**What it does:** Finds the project → checks status → reads logs → reads build logs → suggests fixes.
|
|
779
|
+
|
|
780
|
+
### `setup-server`
|
|
781
|
+
|
|
782
|
+
Set up a new BYOS server.
|
|
783
|
+
|
|
784
|
+
| Parameter | Description |
|
|
785
|
+
|-----------|-------------|
|
|
786
|
+
| `host` | Server IP or hostname |
|
|
787
|
+
| `user` | SSH username (default: root) |
|
|
788
|
+
| `purpose` | What the server is for |
|
|
789
|
+
|
|
790
|
+
**What it does:** Connects via SSH → inspects system → installs Docker → sets up services → configures SSL → hardens security.
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
794
|
+
## Human-in-the-Loop Confirmation
|
|
795
|
+
|
|
796
|
+
Operations that cost money or create resources use a **two-step confirmation** flow to prevent accidental charges:
|
|
797
|
+
|
|
798
|
+
1. You ask the AI to do something (e.g., "Register example.com")
|
|
799
|
+
2. The tool returns a **cost preview** with a confirmation token
|
|
800
|
+
3. The AI presents the cost to you: *"example.com costs $12.99/yr. Shall I proceed?"*
|
|
801
|
+
4. You confirm → the AI calls the confirm tool with the token
|
|
802
|
+
5. The action is executed
|
|
803
|
+
|
|
804
|
+
**Confirmation tokens:**
|
|
805
|
+
- Valid for **5 minutes** from creation
|
|
806
|
+
- **Single-use** — each token can only be used once
|
|
807
|
+
- Stored in memory on the MCP server process (not persisted)
|
|
808
|
+
|
|
809
|
+
**Operations that require confirmation:**
|
|
810
|
+
- `create_deploy_project` → `confirm_deploy_project`
|
|
811
|
+
- `register_domain` → `confirm_domain_registration`
|
|
812
|
+
- `transfer_domain` → `confirm_domain_transfer`
|
|
813
|
+
|
|
814
|
+
---
|
|
815
|
+
|
|
816
|
+
## Example Conversations
|
|
817
|
+
|
|
818
|
+
### Deploy a Full-Stack App
|
|
819
|
+
|
|
820
|
+
> **You:** I need to deploy a Next.js app with a PostgreSQL database
|
|
821
|
+
>
|
|
822
|
+
> **AI:** Let me check what's available...
|
|
823
|
+
> *(calls `list_deploy_templates`)*
|
|
824
|
+
>
|
|
825
|
+
> I see PostgreSQL and Node.js templates. Let me set up the database first.
|
|
826
|
+
> *(calls `create_deploy_project` with name="my-app-db", templateId="postgres", tier="small")*
|
|
827
|
+
>
|
|
828
|
+
> Here's the cost: **PostgreSQL on small tier (1GB RAM, shared CPU) — $0/mo** (included in your Deploy Pro plan). Want me to proceed?
|
|
829
|
+
>
|
|
830
|
+
> **You:** Yes, go ahead
|
|
831
|
+
>
|
|
832
|
+
> **AI:** *(calls `confirm_deploy_project`)*
|
|
833
|
+
>
|
|
834
|
+
> Database is running! Connection: `postgres://postgres:abc123@my-app-db.suzko.io:5432/postgres`
|
|
835
|
+
>
|
|
836
|
+
> Now let me set up your Next.js app...
|
|
837
|
+
> *(calls `create_deploy_project` with templateId="nodejs", envVars={"DATABASE_URL": "..."})*
|
|
838
|
+
|
|
839
|
+
### Register a Domain + Configure DNS
|
|
840
|
+
|
|
841
|
+
> **You:** Find me a cool domain for my AI coding tool
|
|
842
|
+
>
|
|
843
|
+
> **AI:** *(calls `suggest_domain_names` with keywords="AI coding tool")*
|
|
844
|
+
>
|
|
845
|
+
> Here are some suggestions:
|
|
846
|
+
> - codesmith.dev — $12.99/yr ✅ Available
|
|
847
|
+
> - aicodecraft.io — $39.99/yr ✅ Available
|
|
848
|
+
> - codecopilot.com — ❌ Taken
|
|
849
|
+
>
|
|
850
|
+
> **You:** Register codesmith.dev for 2 years
|
|
851
|
+
>
|
|
852
|
+
> **AI:** *(calls `register_domain`)*
|
|
853
|
+
>
|
|
854
|
+
> Cost: **codesmith.dev — $25.98** (2 years). Confirm?
|
|
855
|
+
>
|
|
856
|
+
> **You:** Yes
|
|
857
|
+
>
|
|
858
|
+
> **AI:** *(calls `confirm_domain_registration`)*
|
|
859
|
+
>
|
|
860
|
+
> Done! Now let me point it to your deploy project...
|
|
861
|
+
> *(calls `enable_dns_management`, then `create_dns_record` with CNAME)*
|
|
862
|
+
|
|
863
|
+
### Manage Your Own Server
|
|
864
|
+
|
|
865
|
+
> **You:** I just got a VPS at 198.51.100.25, set it up for Docker hosting
|
|
866
|
+
>
|
|
867
|
+
> **AI:** *(calls `connect_server` with alias="my-vps", host="198.51.100.25")*
|
|
868
|
+
>
|
|
869
|
+
> Connected! Let me check what's installed...
|
|
870
|
+
> *(calls `inspect_server`)*
|
|
871
|
+
>
|
|
872
|
+
> Ubuntu 22.04, no Docker yet. Installing...
|
|
873
|
+
> *(calls `install_docker`)*
|
|
874
|
+
>
|
|
875
|
+
> Docker installed! Now let me deploy your project...
|
|
876
|
+
> *(calls `deploy_to_server` with localPath="./my-app")*
|
|
877
|
+
|
|
878
|
+
### Troubleshoot a Deployment
|
|
879
|
+
|
|
880
|
+
> **You:** My web app is returning 502 errors
|
|
881
|
+
>
|
|
882
|
+
> **AI:** Let me check your projects...
|
|
883
|
+
> *(calls `list_deploy_projects`)*
|
|
884
|
+
> *(calls `get_deploy_logs` with tail=50)*
|
|
885
|
+
>
|
|
886
|
+
> I see the issue — your app is crashing on startup because `DATABASE_URL` is not set. Let me fix that...
|
|
887
|
+
> *(calls `set_deploy_env` with envVars={"DATABASE_URL": "..."})*
|
|
888
|
+
> *(calls `control_deploy_project` with action="restart")*
|
|
889
|
+
>
|
|
890
|
+
> Restarted! Checking logs... it's running now. ✅
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
## Configuration
|
|
895
|
+
|
|
896
|
+
### Environment Variables
|
|
897
|
+
|
|
898
|
+
| Variable | Default | Description |
|
|
899
|
+
|----------|---------|-------------|
|
|
900
|
+
| `SUZKO_API_BASE` | `https://www.suzko.com` | API base URL. Change for development. |
|
|
901
|
+
|
|
902
|
+
### File Locations
|
|
903
|
+
|
|
904
|
+
| File | Purpose |
|
|
905
|
+
|------|---------|
|
|
906
|
+
| `~/.suzko/mcp-credentials.json` | Auth tokens (auto-managed) |
|
|
907
|
+
| `~/.suzko/servers.json` | BYOS server registry (managed by server admin tools) |
|
|
908
|
+
|
|
909
|
+
---
|
|
910
|
+
|
|
911
|
+
## Troubleshooting
|
|
912
|
+
|
|
913
|
+
### "Not authenticated" errors
|
|
914
|
+
|
|
915
|
+
Run `npx @suzko/mcp-server auth login` to log in, or `auth status` to check your token.
|
|
916
|
+
|
|
917
|
+
### Tools not appearing in IDE
|
|
918
|
+
|
|
919
|
+
1. Verify the MCP config is valid JSON
|
|
920
|
+
2. Restart your IDE after changing MCP config
|
|
921
|
+
3. Check the MCP server logs in your IDE's output panel
|
|
922
|
+
4. Run `npx @suzko/mcp-server --help` to verify the package works
|
|
923
|
+
|
|
924
|
+
### "API error 401"
|
|
925
|
+
|
|
926
|
+
Your token may have expired and auto-refresh failed. Run `auth login` again.
|
|
927
|
+
|
|
928
|
+
### "API error 403" on deploy tools
|
|
929
|
+
|
|
930
|
+
You may need a Deploy subscription. Check with `check_perks` — you need at least `deploy_hobby`.
|
|
931
|
+
|
|
932
|
+
### Server admin SSH failures
|
|
933
|
+
|
|
934
|
+
- Verify your SSH key exists at the configured path
|
|
935
|
+
- Check the server accepts key-based authentication
|
|
936
|
+
- Try connecting manually: `ssh -i ~/.ssh/id_ed25519 root@your-server`
|
|
937
|
+
- Ensure the server's SSH port is reachable (not blocked by firewall)
|
|
938
|
+
|
|
939
|
+
### Slow tool responses
|
|
940
|
+
|
|
941
|
+
The MCP server calls the Suzko API over HTTPS. If responses are slow:
|
|
942
|
+
- Check your internet connection
|
|
943
|
+
- The first call may be slower (token refresh)
|
|
944
|
+
- Deploy operations (create, build) are async and may take 10–30 seconds
|
|
945
|
+
|
|
946
|
+
### IDE-specific issues
|
|
947
|
+
|
|
948
|
+
**VS Code:** Make sure you're in **agent mode** (not ask/edit mode) for tool execution.
|
|
949
|
+
|
|
950
|
+
**Claude Desktop:** After editing config, fully quit and reopen (not just close the window).
|
|
951
|
+
|
|
952
|
+
**Cursor:** MCP tools appear in Composer, not regular chat.
|