@digitalocean/mcp 1.0.30 → 1.0.38

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
@@ -4,36 +4,212 @@ MCP DigitalOcean Integration is an open-source project that provides a comprehen
4
4
 
5
5
  > **DISCLAIMER:** "Use of MCP technology to interact with your DigitalOcean account [can come with risks](https://www.wiz.io/blog/mcp-security-research-briefing)"
6
6
 
7
- ## Prerequisites
7
+ ---
8
8
 
9
- - Node.js (v18 or later)
10
- - NPM (v8 or later)
9
+ ## Security: Never Hardcode Your API Token
11
10
 
12
- You can find installation guides at [https://nodejs.org/en/download](https://nodejs.org/en/download)
11
+ > **WARNING:** Do NOT paste your DigitalOcean API token directly into any config file (e.g., `claude_desktop_config.json`, `~/.cursor/config.json`, VS Code settings). If you commit these files to GitHub, your token will be exposed and GitHub will automatically block or revoke it to protect your account.
13
12
 
13
+ The safe approach is to store your token in an **environment variable** on your machine and reference it from your config file. Follow the steps below for your operating system before proceeding with any client installation.
14
14
 
15
- Verify your installation:
16
- ```bash
17
- node --version
18
- npm --version
19
- ```
15
+ ---
20
16
 
21
- ## Quick Test
17
+ ## Step 1: Set Up Your API Token as an Environment Variable
22
18
 
23
- To verify the MCP server works correctly, you can test it directly from the command line:
24
- ```bash
25
- npx @digitalocean/mcp --services apps
19
+ ### macOS / Linux
20
+
21
+ #### Option A: Set it in your shell profile (Recommended — persists across reboots)
22
+
23
+ 1. Open a terminal.
24
+
25
+ 2. Determine which shell you are using:
26
+ ```bash
27
+ echo $SHELL
28
+ ```
29
+ - If it outputs `/bin/zsh` → edit `~/.zshrc`
30
+ - If it outputs `/bin/bash` → edit `~/.bashrc` or `~/.bash_profile`
31
+
32
+ 3. Open the file in a text editor:
33
+ ```bash
34
+ # For zsh (default on macOS Monterey and later)
35
+ nano ~/.zshrc
36
+
37
+ # For bash
38
+ nano ~/.bashrc
39
+ ```
40
+
41
+ 4. Add the following line at the bottom of the file:
42
+ ```bash
43
+ export DIGITALOCEAN_API_TOKEN="your_actual_token_here"
44
+ ```
45
+ Replace `your_actual_token_here` with your real token from the [DigitalOcean API Tokens page](https://cloud.digitalocean.com/account/api/tokens).
46
+
47
+ 5. Save and exit:
48
+ - In `nano`: press `Ctrl + O`, then `Enter` to save, then `Ctrl + X` to exit.
49
+
50
+ 6. Reload your shell to apply the change:
51
+ ```bash
52
+ source ~/.zshrc # or source ~/.bashrc
53
+ ```
54
+
55
+ 7. Verify it is set correctly:
56
+ ```bash
57
+ echo $DIGITALOCEAN_API_TOKEN
58
+ ```
59
+ You should see your token printed in the terminal.
60
+
61
+ #### Option B: Use a `.env` file (for project-level isolation)
62
+
63
+ 1. In your project root folder, create a `.env` file:
64
+ ```bash
65
+ touch .env
66
+ ```
67
+
68
+ 2. Open it and add:
69
+ ```
70
+ DIGITALOCEAN_API_TOKEN=your_actual_token_here
71
+ ```
72
+
73
+ 3. **Immediately** add `.env` to your `.gitignore` so it is never committed:
74
+ ```bash
75
+ echo ".env" >> .gitignore
76
+ ```
77
+
78
+ 4. To load the `.env` file into your current terminal session:
79
+ ```bash
80
+ export $(grep -v '^#' .env | xargs)
81
+ ```
82
+
83
+ 5. Verify:
84
+ ```bash
85
+ echo $DIGITALOCEAN_API_TOKEN
86
+ ```
87
+
88
+ > **Note:** Option B only sets the variable for the current terminal session. You need to run step 4 each time you open a new terminal. For a permanent solution, use Option A.
89
+
90
+ ---
91
+
92
+ ### Windows
93
+
94
+ #### Option A: Set it as a System Environment Variable (Recommended — persists across reboots)
95
+
96
+ 1. Open **Start Menu** and search for **"Environment Variables"**.
97
+ 2. Click **"Edit the system environment variables"**.
98
+ 3. In the System Properties dialog, click the **"Environment Variables..."** button.
99
+ 4. Under **"User variables"**, click **"New..."**.
100
+ 5. Fill in:
101
+ - **Variable name:** `DIGITALOCEAN_API_TOKEN`
102
+ - **Variable value:** `your_actual_token_here`
103
+ 6. Click **OK** on all dialogs to save.
104
+ 7. **Restart your terminal** (Command Prompt or PowerShell) for the change to take effect.
105
+ 8. Verify in PowerShell:
106
+ ```powershell
107
+ echo $env:DIGITALOCEAN_API_TOKEN
108
+ ```
109
+ Or in Command Prompt:
110
+ ```cmd
111
+ echo %DIGITALOCEAN_API_TOKEN%
112
+ ```
113
+
114
+ #### Option B: Set it temporarily in PowerShell (current session only)
115
+
116
+ ```powershell
117
+ $env:DIGITALOCEAN_API_TOKEN = "your_actual_token_here"
26
118
  ```
27
119
 
120
+ #### Option C: Use a `.env` file on Windows
121
+
122
+ 1. In your project folder, create a file named `.env` (no extension) with this content:
123
+ ```
124
+ DIGITALOCEAN_API_TOKEN=your_actual_token_here
125
+ ```
126
+
127
+ 2. Add `.env` to your `.gitignore`:
128
+ ```
129
+ .env
130
+ ```
131
+
132
+ 3. To load it in PowerShell:
133
+ ```powershell
134
+ Get-Content .env | ForEach-Object {
135
+ if ($_ -match "^\s*([^#][^=]*)=(.*)$") {
136
+ [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), "Process")
137
+ }
138
+ }
139
+ ```
140
+
141
+ 4. Verify:
142
+ ```powershell
143
+ echo $env:DIGITALOCEAN_API_TOKEN
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Step 2: Get Your DigitalOcean API Token
149
+
150
+ 1. Log in to your DigitalOcean account.
151
+ 2. Navigate to **API** → **Tokens** in the left sidebar, or go directly to: `https://cloud.digitalocean.com/account/api/tokens`
152
+ 3. Click **"Generate New Token"**.
153
+ 4. Give it a name (e.g., `mcp-local-dev`), set expiry, and choose the required scopes.
154
+ 5. Copy the token immediately — it will only be shown once.
155
+ 6. Store it using one of the methods described in Step 1 above.
156
+
157
+ ---
158
+
28
159
  ## Installation
29
160
 
161
+ ### Remote MCP (Recommended)
162
+
163
+ The easiest way to get started is to use DigitalOcean's hosted MCP services. Each service is deployed as a standalone MCP server accessible via HTTPS, allowing you to connect without running any local server. You can connect to multiple endpoints simultaneously by adding multiple entries to your configuration.
164
+
165
+ #### Available Services
166
+
167
+ | Service | Remote MCP URL | Description |
168
+ |--------------|---------------------------------------------|-----------------------------------------------------------------------------------------|
169
+ | apps | https://apps.mcp.digitalocean.com/mcp | Manage DigitalOcean App Platform applications, including deployments and configurations. |
170
+ | accounts | https://accounts.mcp.digitalocean.com/mcp | Get information about your DigitalOcean account, billing, balance, invoices, and SSH keys. |
171
+ | databases | https://databases.mcp.digitalocean.com/mcp | Provision, manage, and monitor managed database clusters (Postgres, MySQL, Redis, etc.). |
172
+ | doks | https://doks.mcp.digitalocean.com/mcp | Manage DigitalOcean Kubernetes clusters and node pools. |
173
+ | droplets | https://droplets.mcp.digitalocean.com/mcp | Create, manage, resize, snapshot, and monitor droplets (virtual machines) on DigitalOcean. |
174
+ | docr | https://docr.mcp.digitalocean.com/mcp | Manage DigitalOcean Container Registry repositories, tags, manifests, and garbage collection. |
175
+ | insights | https://insights.mcp.digitalocean.com/mcp | Monitors your resources, endpoints and alert you when they're slow, unavailable, or SSL certificates are expiring. |
176
+ | marketplace | https://marketplace.mcp.digitalocean.com/mcp| Discover and manage DigitalOcean Marketplace applications. |
177
+ | genai-modelcatalog | https://genai-modelcatalog.mcp.digitalocean.com/mcp| Search and discover AI models available on DigitalOcean Gradient AI platform. |
178
+ | networking | https://networking.mcp.digitalocean.com/mcp | Manage domains, DNS records, certificates, firewalls, load balancers, reserved IPs, BYOIP Prefixes, VPCs, and CDNs. |
179
+ | spaces | https://spaces.mcp.digitalocean.com/mcp | DigitalOcean Spaces object storage and Spaces access keys for S3-compatible storage. |
180
+
181
+ ---
182
+
30
183
  ### Claude Code
31
184
 
32
- To add the DigitalOcean MCP server to [Claude Code](https://www.anthropic.com/claude-code), run the following command in your terminal:
185
+ #### Remote MCP (Recommended)
186
+
187
+ Make sure you have completed Step 1 and your `DIGITALOCEAN_API_TOKEN` environment variable is set. Then run:
188
+
189
+ ```bash
190
+ claude mcp add --transport http digitalocean-apps https://apps.mcp.digitalocean.com/mcp \
191
+ --header "Authorization: Bearer $DIGITALOCEAN_API_TOKEN"
192
+ ```
193
+
194
+ > **How this works:** The `$DIGITALOCEAN_API_TOKEN` is expanded by your shell at the time you run the command. The actual token value is stored securely in Claude's config — you never paste the token into the command yourself.
195
+
196
+ You can add multiple services the same way:
197
+
198
+ ```bash
199
+ claude mcp add --transport http digitalocean-databases https://databases.mcp.digitalocean.com/mcp \
200
+ --header "Authorization: Bearer $DIGITALOCEAN_API_TOKEN"
201
+
202
+ claude mcp add --transport http digitalocean-droplets https://droplets.mcp.digitalocean.com/mcp \
203
+ --header "Authorization: Bearer $DIGITALOCEAN_API_TOKEN"
204
+ ```
205
+
206
+ See the [Available Services](#available-services) section for the complete list of available endpoints.
207
+
208
+ #### Local Installation
33
209
 
34
210
  ```bash
35
211
  claude mcp add digitalocean-mcp \
36
- -e DIGITALOCEAN_API_TOKEN=YOUR_DO_API_TOKEN \
212
+ -e DIGITALOCEAN_API_TOKEN=$DIGITALOCEAN_API_TOKEN \
37
213
  -- npx @digitalocean/mcp --services apps,databases
38
214
  ```
39
215
 
@@ -41,7 +217,7 @@ This will:
41
217
  - Add the MCP server under the default (local) scope — meaning it's only available inside the current folder.
42
218
  - Register it with the name `digitalocean-mcp`.
43
219
  - Enable the `apps` and `databases` services.
44
- - Pass your DigitalOcean API token securely to the server.
220
+ - Pass your DigitalOcean API token securely to the server via environment variable.
45
221
  - Store the configuration in your global Claude config at `~/.claude.json`, scoped to the current folder.
46
222
 
47
223
  #### Verify Installation
@@ -62,47 +238,124 @@ To remove it:
62
238
  claude mcp remove digitalocean-mcp
63
239
  ```
64
240
 
241
+ ##### User Scope
242
+
243
+ Local scope is great when you're testing or only using the server in one project. User scope is better if you want it available everywhere.
244
+
245
+ If you'd like to make the server available globally (so you don't have to re-add it in each project), you can use the `user` scope:
246
+
247
+ ```bash
248
+ claude mcp add -s user digitalocean-mcp-user-scope \
249
+ -e DIGITALOCEAN_API_TOKEN=$DIGITALOCEAN_API_TOKEN \
250
+ -- npx @digitalocean/mcp --services apps,databases
251
+ ```
252
+
253
+ This will:
254
+ - Make the server available in all folders, not just the one you're in
255
+ - Scope it to your user account
256
+ - Store it in your global Claude config at `~/.claude.json`
257
+
258
+ To remove it:
259
+ ```bash
260
+ claude mcp remove -s user digitalocean-mcp-user-scope
261
+ ```
262
+
263
+ ---
264
+
65
265
  ### Claude Desktop
66
266
 
67
- Alternatively, add the following to your claude_desktop_config.json file.
267
+ #### Remote MCP (Recommended)
268
+
269
+ **Before editing the config file**, ensure `DIGITALOCEAN_API_TOKEN` is set in your shell profile (see Step 1 — Option A). Claude Desktop reads environment variables from your shell profile at launch.
270
+
271
+ The config file is located at:
272
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
273
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
274
+ - **Linux:** `~/.config/Claude/claude_desktop_config.json`
275
+
276
+ Add the remote MCP servers to your config file. Reference the env var using `${DIGITALOCEAN_API_TOKEN}` — Claude Desktop will substitute it at runtime:
277
+
278
+ ```json
279
+ {
280
+ "mcpServers": {
281
+ "digitalocean-apps": {
282
+ "url": "https://apps.mcp.digitalocean.com/mcp",
283
+ "headers": {
284
+ "Authorization": "Bearer ${DIGITALOCEAN_API_TOKEN}"
285
+ }
286
+ },
287
+ "digitalocean-databases": {
288
+ "url": "https://databases.mcp.digitalocean.com/mcp",
289
+ "headers": {
290
+ "Authorization": "Bearer ${DIGITALOCEAN_API_TOKEN}"
291
+ }
292
+ }
293
+ }
294
+ }
295
+ ```
296
+
297
+ > **Important:** The `${DIGITALOCEAN_API_TOKEN}` syntax tells Claude Desktop to read the value from your system's environment variables. Your actual token is never written into this file. This file is safe to commit to version control.
298
+
299
+ You can add any of the endpoints listed in the [Available Services](#available-services) section.
300
+
301
+ #### Local Installation
302
+
303
+ Add the following to your `claude_desktop_config.json` file. The `env` block passes the environment variable directly to the MCP server process — no hardcoded token needed:
68
304
 
69
305
  ```json
70
306
  {
71
307
  "mcpServers": {
72
308
  "digitalocean": {
73
309
  "command": "npx",
74
- "args": ["@digitalocean/mcp", "--services apps"],
310
+ "args": ["@digitalocean/mcp", "--services", "apps"],
75
311
  "env": {
76
- "DIGITALOCEAN_API_TOKEN": "YOUR_API_TOKEN"
312
+ "DIGITALOCEAN_API_TOKEN": "${DIGITALOCEAN_API_TOKEN}"
77
313
  }
78
314
  }
79
315
  }
80
316
  }
81
317
  ```
82
318
 
83
- ### Claude Code (User Scope)
319
+ > **How this works:** The `"env"` block in Claude Desktop config passes environment variables to the spawned MCP server process. The `${DIGITALOCEAN_API_TOKEN}` value is resolved from your system environment at runtime. Your token is never stored in the config file itself.
84
320
 
85
- Local scope is great when you're testing or only using the server in one project. User scope is better if you want it available everywhere.
321
+ After saving the file, **restart Claude Desktop** for the changes to take effect.
86
322
 
87
- If you'd like to make the server available globally (so you don't have to re-add it in each project), you can use the `user` scope:
323
+ ---
88
324
 
89
- ```bash
90
- claude mcp add -s user digitalocean-mcp-user-scope \
91
- -e DIGITALOCEAN_API_TOKEN=YOUR_DO_API_TOKEN \
92
- -- npx @digitalocean/mcp --services apps,databases
93
- ```
325
+ ### Cursor
94
326
 
95
- This will:
96
- - Make the server available in all folders, not just the one you're in
97
- - Scope it to your user account
98
- - Store it in your global Claude config at `~/.claude.json`
327
+ #### Remote MCP (Recommended)
99
328
 
100
- To remove it:
101
- ```bash
102
- claude mcp remove -s user digitalocean-mcp-user-scope
329
+ **Before editing the config file**, ensure `DIGITALOCEAN_API_TOKEN` is set in your shell profile (see Step 1 — Option A).
330
+
331
+ The Cursor config file is located at:
332
+ - **macOS / Linux:** `~/.cursor/config.json`
333
+ - **Windows:** `%USERPROFILE%\.cursor\config.json`
334
+
335
+ Add the remote MCP servers to your Cursor settings file:
336
+
337
+ ```json
338
+ {
339
+ "mcpServers": {
340
+ "digitalocean-apps": {
341
+ "url": "https://apps.mcp.digitalocean.com/mcp",
342
+ "headers": {
343
+ "Authorization": "Bearer ${DIGITALOCEAN_API_TOKEN}"
344
+ }
345
+ },
346
+ "digitalocean-databases": {
347
+ "url": "https://databases.mcp.digitalocean.com/mcp",
348
+ "headers": {
349
+ "Authorization": "Bearer ${DIGITALOCEAN_API_TOKEN}"
350
+ }
351
+ }
352
+ }
353
+ }
103
354
  ```
104
355
 
105
- ### Cursor
356
+ You can add any of the endpoints listed in the [Available Services](#available-services) section.
357
+
358
+ #### Local Installation
106
359
 
107
360
  [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=digitalocean&config=eyJjb21tYW5kIjoibnB4IEBkaWdpdGFsb2NlYW4vbWNwIC0tc2VydmljZXMgYXBwcyIsImVudiI6eyJESUdJVEFMT0NFQU5fQVBJX1RPS0VOIjoiWU9VUl9BUElfVE9LRU4ifX0%3D)
108
361
 
@@ -115,107 +368,217 @@ Add the following to your Cursor settings file located at `~/.cursor/config.json
115
368
  "command": "npx",
116
369
  "args": ["@digitalocean/mcp", "--services", "apps"],
117
370
  "env": {
118
- "DIGITALOCEAN_API_TOKEN": "YOUR_API_TOKEN"
371
+ "DIGITALOCEAN_API_TOKEN": "${DIGITALOCEAN_API_TOKEN}"
119
372
  }
120
373
  }
121
374
  }
122
375
  }
123
376
  ```
124
377
 
125
- #### Verify Installation in Cursor
378
+ > **How this works:** Cursor resolves `${DIGITALOCEAN_API_TOKEN}` from your system environment variables when it launches the MCP server. Make sure the variable is set in your shell profile before starting Cursor.
126
379
 
127
- 1. Open Cursor and open Command Pallet ( `Shift + ⌘ + P` on Mac or `Ctrl+ Shift + P` on Windows/Linux )
128
- 2. Search for "MCP" in the command pallet search bar
380
+ ##### Verify Installation
381
+
382
+ 1. Open Cursor and open Command Palette (`Shift + ⌘ + P` on Mac or `Ctrl + Shift + P` on Windows/Linux)
383
+ 2. Search for "MCP" in the command palette search bar
129
384
  3. Select "View: Open MCP Settings"
130
385
  4. Select "Tools & Integrations" from the left sidebar
131
386
  5. You should see "digitalocean" listed under Available MCP Servers
132
- 6. Click on "N tools enabled" (N is the number of tools currently enabled).
387
+ 6. Click on "N tools enabled" (N is the number of tools currently enabled)
133
388
 
134
- #### Debugging in Cursor
389
+ ##### Debugging
135
390
 
136
391
  To check MCP server logs and debug issues:
137
- 1. Open the Command Palette (⌘+Shift+P on Mac or Ctrl+Shift+P on Windows/Linux)
392
+ 1. Open the Command Palette (`⌘+Shift+P` on Mac or `Ctrl+Shift+P` on Windows/Linux)
138
393
  2. Type "Developer: Toggle Developer Tools" and press Enter
139
394
  3. Navigate to the Console tab to view MCP server logs
140
395
  4. You'll find MCP related logs as you interact with the MCP server
141
396
 
142
- #### Testing the Connection
397
+ ##### Testing the Connection
398
+
399
+ In Cursor's chat, try asking: "List all my DigitalOcean apps" — this should trigger the MCP server to fetch your apps if properly configured. If you are getting a 401 error or authentication related errors, verify that the `DIGITALOCEAN_API_TOKEN` variable is correctly set by running `echo $DIGITALOCEAN_API_TOKEN` in your terminal.
143
400
 
144
- In Cursor's chat, try asking: "List all my DigitalOcean apps" - this should trigger the MCP server to fetch your apps if properly configured. If you are getting an 401 error or authentication related errors, it is likely due to misconfiguring your access token.
401
+ ---
145
402
 
146
403
  ### VS Code
147
404
 
148
- Add the following to your VS Code MCP configuration file:
405
+ #### Remote MCP (Recommended)
406
+
407
+ **Before editing the config file**, ensure `DIGITALOCEAN_API_TOKEN` is set in your shell profile (see Step 1 — Option A).
408
+
409
+ The VS Code MCP config file is located at `.vscode/mcp.json` in your workspace root. Create this file if it does not exist. Add the remote MCP servers:
410
+
411
+ ```json
412
+ {
413
+ "inputs": [
414
+ {
415
+ "id": "digitalocean-token",
416
+ "type": "promptString",
417
+ "description": "DigitalOcean API Token",
418
+ "password": true
419
+ }
420
+ ],
421
+ "servers": {
422
+ "digitalocean-apps": {
423
+ "url": "https://apps.mcp.digitalocean.com/mcp",
424
+ "headers": {
425
+ "Authorization": "Bearer ${input:digitalocean-token}"
426
+ }
427
+ },
428
+ "digitalocean-databases": {
429
+ "url": "https://databases.mcp.digitalocean.com/mcp",
430
+ "headers": {
431
+ "Authorization": "Bearer ${input:digitalocean-token}"
432
+ }
433
+ }
434
+ }
435
+ }
436
+ ```
437
+
438
+ > **How VS Code inputs work:** The `inputs` block defines a named input (`digitalocean-token`) that VS Code will **prompt you to enter securely** the first time you use the server. Your token is stored in VS Code's secret storage — never written to disk in plain text. The `"password": true` flag ensures it is masked during input. This config file is completely safe to commit to GitHub.
439
+
440
+ Alternatively, if you prefer to use a system environment variable directly:
149
441
 
150
442
  ```json
151
443
  {
152
- "mcp": {
153
- "inputs": [],
154
- "servers": {
155
- "mcpDigitalOcean": {
156
- "command": "npx",
157
- "args": [
158
- "@digitalocean/mcp",
159
- "--services",
160
- "apps"
161
- ],
162
- "env": {
163
- "DIGITALOCEAN_API_TOKEN": "YOUR_API_TOKEN"
164
- }
444
+ "inputs": [],
445
+ "servers": {
446
+ "digitalocean-apps": {
447
+ "url": "https://apps.mcp.digitalocean.com/mcp",
448
+ "headers": {
449
+ "Authorization": "Bearer ${env:DIGITALOCEAN_API_TOKEN}"
165
450
  }
166
451
  }
167
452
  }
168
453
  }
169
454
  ```
170
455
 
171
- #### Verify Installation in VS Code
456
+ > **Note:** VS Code uses `${env:VARIABLE_NAME}` syntax to read from system environment variables.
457
+
458
+ #### Local Installation
459
+
460
+ Add the following to your `.vscode/mcp.json` file. Use VS Code's `inputs` feature to avoid hardcoding the token:
172
461
 
173
- 1. Open Cursor and open Command Pallet ( `Shift + ⌘ + P` on Mac or `Ctrl+ Shift + P` on Windows/Linux )
174
- 2. Search for "MCP" in the command pallet search bar
462
+ ```json
463
+ {
464
+ "inputs": [
465
+ {
466
+ "id": "digitalocean-token",
467
+ "type": "promptString",
468
+ "description": "DigitalOcean API Token",
469
+ "password": true
470
+ }
471
+ ],
472
+ "servers": {
473
+ "mcpDigitalOcean": {
474
+ "command": "npx",
475
+ "args": [
476
+ "@digitalocean/mcp",
477
+ "--services",
478
+ "apps"
479
+ ],
480
+ "env": {
481
+ "DIGITALOCEAN_API_TOKEN": "${input:digitalocean-token}"
482
+ }
483
+ }
484
+ }
485
+ }
486
+ ```
487
+
488
+ Or, to use a system environment variable directly:
489
+
490
+ ```json
491
+ {
492
+ "inputs": [],
493
+ "servers": {
494
+ "mcpDigitalOcean": {
495
+ "command": "npx",
496
+ "args": [
497
+ "@digitalocean/mcp",
498
+ "--services",
499
+ "apps"
500
+ ],
501
+ "env": {
502
+ "DIGITALOCEAN_API_TOKEN": "${env:DIGITALOCEAN_API_TOKEN}"
503
+ }
504
+ }
505
+ }
506
+ }
507
+ ```
508
+
509
+ ##### Verify Installation
510
+
511
+ 1. Open VS Code and open Command Palette (`Shift + ⌘ + P` on Mac or `Ctrl + Shift + P` on Windows/Linux)
512
+ 2. Search for "MCP" in the command palette search bar
175
513
  3. Select "MCP: List Servers"
176
514
  4. Verify that "mcpDigitalOcean" appears in the list of configured servers
177
515
 
178
- #### Viewing Available Tools
516
+ ##### Viewing Available Tools
179
517
 
180
518
  To see what tools are available from the MCP server:
181
- 1. Open the Command Palette (⌘+Shift+P on Mac or Ctrl+Shift+P on Windows/Linux)
182
- 2. Select "Agent" mode in the chatbox,
183
- 3. Click "Configure tools" on the right, and check for digitalocean related tools under `MCP Server: mcpDigitalocean`. You should be able to list available tools like `app-create`, `app-list`, `app-delete`, etc.
519
+ 1. Open the Command Palette (`⌘+Shift+P` on Mac or `Ctrl+Shift+P` on Windows/Linux)
520
+ 2. Select "Agent" mode in the chatbox
521
+ 3. Click "Configure tools" on the right, and check for DigitalOcean related tools under `MCP Server: mcpDigitalocean`. You should be able to list available tools like `app-create`, `app-list`, `app-delete`, etc.
184
522
 
185
- #### Debugging in VS Code
523
+ ##### Debugging
186
524
 
187
525
  To troubleshoot MCP connections:
188
- 1. Open the Command Palette (⌘+Shift+P on Mac or Ctrl+Shift+P on Windows/Linux)
526
+ 1. Open the Command Palette (`⌘+Shift+P` on Mac or `Ctrl+Shift+P` on Windows/Linux)
189
527
  2. Type "Developer: Toggle Developer Tools" and press Enter
190
528
  3. Navigate to the Console tab to view MCP server logs
191
- 3. Check for connection status and error messages
529
+ 4. Check for connection status and error messages
192
530
 
193
- If you are getting an 401 error or authentication related errors, it is likely due to misconfiguring your access token.
531
+ If you are getting a 401 error or authentication related errors, verify that the `DIGITALOCEAN_API_TOKEN` variable is set by running `echo $DIGITALOCEAN_API_TOKEN` in your terminal before launching VS Code.
194
532
 
195
- ## Configuration
533
+ ---
534
+
535
+ ## Step 3: Protect Your Token — Checklist
536
+
537
+ Before pushing any code to GitHub, verify the following:
538
+
539
+ - [ ] Your `.env` file (if used) is listed in `.gitignore`
540
+ - [ ] No config file contains a raw token string like `dop_v1_...`
541
+ - [ ] Config files use `${DIGITALOCEAN_API_TOKEN}`, `${env:DIGITALOCEAN_API_TOKEN}`, or `${input:...}` syntax
542
+ - [ ] You have run `git diff` or `git status` to confirm no secrets are staged
543
+ - [ ] You have never committed a token — if you have, [rotate it immediately](https://cloud.digitalocean.com/account/api/tokens) and revoke the old one
196
544
 
197
- To configure tools, you use the `--services` flag to specify which service you want to enable. It is highly recommended to only
198
- enable the services you need to reduce context size and improve accuracy. See list of supported services below.
545
+ > **If your token was already committed:** Go to the [DigitalOcean API Tokens page](https://cloud.digitalocean.com/account/api/tokens), delete the compromised token, and generate a new one. GitHub's secret scanning will detect and flag exposed tokens automatically.
199
546
 
547
+ ---
548
+
549
+ ## Prerequisites for Local Installation
550
+
551
+ If you're using the local installation method (not Remote MCP), you'll need:
552
+
553
+ - Node.js (v18 or later)
554
+ - NPM (v8 or later)
555
+
556
+ You can find installation guides at [https://nodejs.org/en/download](https://nodejs.org/en/download)
557
+
558
+ Verify your installation:
200
559
  ```bash
201
- npx @digitalocean/mcp --services apps,droplets
560
+ node --version
561
+ npm --version
202
562
  ```
203
563
 
204
- ## Supported Services
564
+ ### Quick Test
205
565
 
206
- The MCP DigitalOcean Integration supports the following services, allowing users to manage their DigitalOcean infrastructure effectively
566
+ To verify the local MCP server works correctly, you can test it directly from the command line (make sure `DIGITALOCEAN_API_TOKEN` is set in your environment first):
567
+ ```bash
568
+ npx @digitalocean/mcp --services apps
569
+ ```
570
+
571
+ ---
572
+
573
+ ## Configuration
207
574
 
208
- | Service | Description |
209
- |--------------|-----------------------------------------------------------------------------------------|
210
- | apps | Manage DigitalOcean App Platform applications, including deployments and configurations. |
211
- | droplets | Create, manage, resize, snapshot, and monitor droplets (virtual machines) on DigitalOcean. |
212
- | accounts | Get information about your DigitalOcean account, billing, balance, invoices, and SSH keys. |
213
- | networking | Manage domains, DNS records, certificates, firewalls, load balancers, reserved IPs, BYOIP Prefixes, VPCs, and CDNs. |
214
- | insights | Monitors your resources, endpoints and alert you when they're slow, unavailable, or SSL certificates are expiring. |
215
- | spaces | DigitalOcean Spaces object storage and Spaces access keys for S3-compatible storage. |
216
- | databases | Provision, manage, and monitor managed database clusters (Postgres, MySQL, Redis, etc.). |
217
- | marketplace | Discover and manage DigitalOcean Marketplace applications. |
218
- | doks | Manage DigitalOcean Kubernetes clusters and node pools. |
575
+ ### Local Installation Configuration
576
+
577
+ When using the local installation, you use the `--services` flag to specify which service you want to enable. It is highly recommended to only enable the services you need to reduce context size and improve accuracy. See list of supported services below.
578
+
579
+ ```bash
580
+ npx @digitalocean/mcp --services apps,droplets
581
+ ```
219
582
 
220
583
  ## Documentation
221
584
 
@@ -229,6 +592,7 @@ Each service provides a detailed README describing all available tools, resource
229
592
  - [Insights Service](pkg/registry/insights/README.md)
230
593
  - [Spaces Service](pkg/registry/spaces/README.md)
231
594
  - [Marketplace Service](pkg/registry/marketplace/README.md)
595
+ - [Model Catalog Service](pkg/registry/genai-modelcatalog/README.md)
232
596
  - [DOKS Service](pkg/registry/doks/README.md)
233
597
 
234
598
  ## Example Tools
@@ -241,6 +605,8 @@ Each service provides a detailed README describing all available tools, resource
241
605
  - Flush a CDN cache: `cdn-flush-cache`
242
606
  - Create a VPC peering connection: `vpc-peering-create`
243
607
  - Delete a VPC peering connection: `vpc-peering-delete`
608
+ - Search for AI models: `genai-model-catalog-search`
609
+ - Get model metadata: `genai-model-catalog-get-card`
244
610
 
245
611
  ## Contributing
246
612
 
@@ -252,4 +618,4 @@ Contributions are welcome! If you encounter any issues or have ideas for improve
252
618
 
253
619
  ## License
254
620
 
255
- This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
621
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -444,6 +444,25 @@
444
444
  },
445
445
  "type": "object"
446
446
  },
447
+ "inactivity_sleep": {
448
+ "properties": {
449
+ "after_seconds": {
450
+ "type": "integer"
451
+ },
452
+ "loading_page": {
453
+ "properties": {
454
+ "enabled": {
455
+ "type": "boolean"
456
+ },
457
+ "custom_url": {
458
+ "type": "string"
459
+ }
460
+ },
461
+ "type": "object"
462
+ }
463
+ },
464
+ "type": "object"
465
+ },
447
466
  "liveness_health_check": {
448
467
  "properties": {
449
468
  "initial_delay_seconds": {
@@ -1900,6 +1919,20 @@
1900
1919
  },
1901
1920
  "type": "array",
1902
1921
  "description": "Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects."
1922
+ },
1923
+ "secure_header": {
1924
+ "properties": {
1925
+ "key": {
1926
+ "type": "string"
1927
+ },
1928
+ "value": {
1929
+ "type": "string"
1930
+ },
1931
+ "remove_header": {
1932
+ "type": "boolean"
1933
+ }
1934
+ },
1935
+ "type": "object"
1903
1936
  }
1904
1937
  },
1905
1938
  "type": "object"
@@ -448,6 +448,25 @@
448
448
  },
449
449
  "type": "object"
450
450
  },
451
+ "inactivity_sleep": {
452
+ "properties": {
453
+ "after_seconds": {
454
+ "type": "integer"
455
+ },
456
+ "loading_page": {
457
+ "properties": {
458
+ "enabled": {
459
+ "type": "boolean"
460
+ },
461
+ "custom_url": {
462
+ "type": "string"
463
+ }
464
+ },
465
+ "type": "object"
466
+ }
467
+ },
468
+ "type": "object"
469
+ },
451
470
  "liveness_health_check": {
452
471
  "properties": {
453
472
  "initial_delay_seconds": {
@@ -1904,6 +1923,20 @@
1904
1923
  },
1905
1924
  "type": "array",
1906
1925
  "description": "Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects."
1926
+ },
1927
+ "secure_header": {
1928
+ "properties": {
1929
+ "key": {
1930
+ "type": "string"
1931
+ },
1932
+ "value": {
1933
+ "type": "string"
1934
+ },
1935
+ "remove_header": {
1936
+ "type": "boolean"
1937
+ }
1938
+ },
1939
+ "type": "object"
1907
1940
  }
1908
1941
  },
1909
1942
  "type": "object"
@@ -161,6 +161,22 @@
161
161
  }
162
162
  },
163
163
  "type": "object"
164
+ },
165
+ "nvidia_gpu_device_plugin": {
166
+ "properties": {
167
+ "enabled": {
168
+ "type": "boolean"
169
+ }
170
+ },
171
+ "type": "object"
172
+ },
173
+ "rdma_shared_dev_plugin": {
174
+ "properties": {
175
+ "enabled": {
176
+ "type": "boolean"
177
+ }
178
+ },
179
+ "type": "object"
164
180
  }
165
181
  },
166
182
  "type": "object"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalocean/mcp",
3
- "version": "1.0.30",
3
+ "version": "1.0.38",
4
4
  "description": "DigitalOcean MCP Implementation,",
5
5
  "author": "DigitalOcean",
6
6
  "homepage": "https://github.com/digitalocean-labs/mcp-digitalocean?tab=readme-ov-file#mcp-digitalocean-integration",