@dokploy/mcp 0.0.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/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2025 Henrique Andrade
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,476 @@
1
+ # Dokploy MCP Server
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@ahdev/dokploy-mcp.svg)](https://www.npmjs.com/package/@ahdev/dokploy-mcp) [<img alt="Install in VS Code (npx)" src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Dokploy%20MCP&color=0098FF">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22dokploy-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40ahdev%2Fdokploy-mcp%40latest%22%5D%7D)
4
+
5
+ Dokploy MCP Server exposes Dokploy functionalities as tools consumable via the Model Context Protocol (MCP). It allows MCP-compatible clients (e.g., AI models, other applications) to interact with your Dokploy server programmatically.
6
+
7
+ This server focuses exclusively on **tools** for direct Dokploy API operations, providing a clean and efficient interface for project and application management.
8
+
9
+ ## 🛠️ Getting Started
10
+
11
+ ### Requirements
12
+
13
+ - Node.js >= v18.0.0 (or Docker)
14
+ - Cursor, VS Code, Claude Desktop, or another MCP Client
15
+ - A running Dokploy server instance
16
+
17
+ ### Install in Cursor
18
+
19
+ Go to: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
20
+
21
+ Add this to your Cursor `~/.cursor/mcp.json` file. You may also install in a specific project by creating `.cursor/mcp.json` in your project folder. See [Cursor MCP docs](https://docs.cursor.com/context/model-context-protocol) for more info.
22
+
23
+ ```json
24
+ {
25
+ "mcpServers": {
26
+ "dokploy-mcp": {
27
+ "command": "npx",
28
+ "args": ["-y", "@ahdev/dokploy-mcp"],
29
+ "env": {
30
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
31
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
32
+ }
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ <details>
39
+ <summary>Alternative: Use Bun</summary>
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "dokploy-mcp": {
45
+ "command": "bunx",
46
+ "args": ["-y", "@ahdev/dokploy-mcp"],
47
+ "env": {
48
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
49
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ </details>
57
+
58
+ <details>
59
+ <summary>Alternative: Use Deno</summary>
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "dokploy-mcp": {
65
+ "command": "deno",
66
+ "args": ["run", "--allow-env", "--allow-net", "npm:@ahdev/dokploy-mcp"],
67
+ "env": {
68
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
69
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
70
+ }
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ </details>
77
+
78
+ ### Install in Windsurf
79
+
80
+ Add this to your Windsurf MCP config file. See [Windsurf MCP docs](https://docs.windsurf.com/windsurf/mcp) for more info.
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "dokploy-mcp": {
86
+ "command": "npx",
87
+ "args": ["-y", "@ahdev/dokploy-mcp"],
88
+ "env": {
89
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
90
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ ### Install in VS Code
98
+
99
+ [<img alt="Install in VS Code (npx)" src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Dokploy%20MCP&color=0098FF">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22dokploy-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40ahdev%2Fdokploy-mcp%40latest%22%5D%7D)
100
+ [<img alt="Install in VS Code Insiders (npx)" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Dokploy%20MCP&color=24bfa5">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%7B%22name%22%3A%22dokploy-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40ahdev%2Fdokploy-mcp%40latest%22%5D%7D)
101
+
102
+ Add this to your VS Code MCP config file. See [VS Code MCP docs](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more info.
103
+
104
+ ```json
105
+ {
106
+ "servers": {
107
+ "dokploy-mcp": {
108
+ "type": "stdio",
109
+ "command": "npx",
110
+ "args": ["-y", "@ahdev/dokploy-mcp"],
111
+ "env": {
112
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
113
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### Install in Zed
121
+
122
+ Add this to your Zed `settings.json`. See [Zed Context Server docs](https://zed.dev/docs/assistant/context-servers) for more info.
123
+
124
+ ```json
125
+ {
126
+ "context_servers": {
127
+ "dokploy-mcp": {
128
+ "command": {
129
+ "path": "npx",
130
+ "args": ["-y", "@ahdev/dokploy-mcp"]
131
+ },
132
+ "settings": {
133
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
134
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
135
+ }
136
+ }
137
+ }
138
+ }
139
+ ```
140
+
141
+ ### Install in Claude Desktop
142
+
143
+ Add this to your Claude Desktop `claude_desktop_config.json` file. See [Claude Desktop MCP docs](https://modelcontextprotocol.io/quickstart/user) for more info.
144
+
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "dokploy-mcp": {
149
+ "command": "npx",
150
+ "args": ["-y", "@ahdev/dokploy-mcp"],
151
+ "env": {
152
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
153
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
154
+ }
155
+ }
156
+ }
157
+ }
158
+ ```
159
+
160
+ ### Install in BoltAI
161
+
162
+ Open the "Settings" page of the app, navigate to "Plugins," and enter the following JSON:
163
+
164
+ ```json
165
+ {
166
+ "mcpServers": {
167
+ "dokploy-mcp": {
168
+ "command": "npx",
169
+ "args": ["-y", "@ahdev/dokploy-mcp"],
170
+ "env": {
171
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
172
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
173
+ }
174
+ }
175
+ }
176
+ }
177
+ ```
178
+
179
+ ### Using Docker
180
+
181
+ The Docker container supports both **stdio** and **HTTP** transport modes, making it flexible for different deployment scenarios.
182
+
183
+ 1. **Build the Docker Image:**
184
+
185
+ ```bash
186
+ git clone https://github.com/Dokploy/mcp.git
187
+ cd dokploy-mcp
188
+ docker build -t dokploy-mcp .
189
+ ```
190
+
191
+ 2. **Manual Docker Commands:**
192
+
193
+ **Stdio Mode (for MCP clients):**
194
+
195
+ ```bash
196
+ docker run -it --rm \
197
+ -e DOKPLOY_URL=https://your-dokploy-server.com/api \
198
+ -e DOKPLOY_API_KEY=your_token_here \
199
+ dokploy-mcp
200
+ ```
201
+
202
+ **HTTP Mode (for web applications):**
203
+
204
+ ```bash
205
+ docker run -it --rm \
206
+ -p 8080:3000 \
207
+ -e MCP_TRANSPORT=http \
208
+ -e DOKPLOY_URL=https://your-dokploy-server.com/api \
209
+ -e DOKPLOY_API_KEY=your_token_here \
210
+ dokploy-mcp
211
+ ```
212
+
213
+ 3. **Docker Compose:**
214
+
215
+ Use the provided `docker-compose.yml` for production deployments:
216
+
217
+ ```bash
218
+ # Start HTTP service
219
+ docker-compose up -d dokploy-mcp-http
220
+
221
+ # View logs
222
+ docker-compose logs -f dokploy-mcp-http
223
+ ```
224
+
225
+ 4. **MCP Client Configuration:**
226
+
227
+ **For stdio mode (Claude Desktop, VS Code, etc.):**
228
+
229
+ ```json
230
+ {
231
+ "mcpServers": {
232
+ "dokploy-mcp": {
233
+ "command": "docker",
234
+ "args": [
235
+ "run",
236
+ "-i",
237
+ "--rm",
238
+ "-e",
239
+ "DOKPLOY_URL=https://your-dokploy-server.com/api",
240
+ "-e",
241
+ "DOKPLOY_API_KEY=your_token_here",
242
+ "dokploy-mcp"
243
+ ]
244
+ }
245
+ }
246
+ }
247
+ ```
248
+
249
+ **For HTTP mode (web applications):**
250
+
251
+ Start the HTTP server first, then configure your client to connect to `http://localhost:3000/mcp`.
252
+
253
+ ### Install in Windows
254
+
255
+ The configuration on Windows is slightly different compared to Linux or macOS. Use `cmd` as the command wrapper:
256
+
257
+ ```json
258
+ {
259
+ "mcpServers": {
260
+ "dokploy-mcp": {
261
+ "command": "cmd",
262
+ "args": ["/c", "npx", "-y", "@ahdev/dokploy-mcp"],
263
+ "env": {
264
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
265
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
266
+ }
267
+ }
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Environment Variables
273
+
274
+ - `DOKPLOY_URL`: Your Dokploy server API URL (required)
275
+ - `DOKPLOY_API_KEY`: Your Dokploy API authentication token (required)
276
+
277
+ ## 🚀 Transport Modes
278
+
279
+ This MCP server supports multiple transport modes to suit different use cases:
280
+
281
+ ### Stdio Mode (Default)
282
+
283
+ The default mode uses stdio for direct process communication, ideal for desktop applications and command-line usage.
284
+
285
+ ```bash
286
+ # Run with stdio (default)
287
+ npx -y @ahdev/dokploy-mcp
288
+ # or
289
+ npm run start:stdio
290
+ ```
291
+
292
+ ### HTTP Mode (Streamable HTTP + Legacy SSE)
293
+
294
+ Modern HTTP mode exposes the server via HTTP/HTTPS supporting **both modern and legacy protocols** for maximum compatibility:
295
+
296
+ - **Streamable HTTP (MCP 2025-03-26)** - Modern protocol with session management
297
+ - **Legacy SSE (MCP 2024-11-05)** - Backwards compatibility for older clients
298
+
299
+ ```bash
300
+ # Run with HTTP mode
301
+ npm run start:http
302
+ # or
303
+ npx -y @ahdev/dokploy-mcp --http
304
+ # or via environment variable
305
+ MCP_TRANSPORT=http npx -y @ahdev/dokploy-mcp
306
+ ```
307
+
308
+ **Modern Streamable HTTP Endpoints:**
309
+
310
+ - **POST /mcp** - Client-to-server requests
311
+ - **GET /mcp** - Server-to-client notifications
312
+ - **DELETE /mcp** - Session termination
313
+ - **GET /health** - Health check endpoint
314
+
315
+ **Legacy SSE Endpoints (Backwards Compatibility):**
316
+
317
+ - **GET /sse** - SSE stream initialization
318
+ - **POST /messages** - Client message posting
319
+
320
+ **Configuration:**
321
+
322
+ - Internal port: `3000` (fixed)
323
+ - External port: configurable via `EXTERNAL_PORT` (default: `3000`)
324
+ - Supports both modern Streamable HTTP (MCP 2025-03-26) and legacy SSE (MCP 2024-11-05)
325
+ - Session management with automatic cleanup for both transport types
326
+
327
+ **Client Compatibility:**
328
+
329
+ Modern clients automatically use the Streamable HTTP endpoints, while legacy clients can connect using the SSE endpoints. The server handles both protocols simultaneously, ensuring compatibility with:
330
+
331
+ - **Modern MCP clients** (Claude Desktop, Cline, etc.) → Use `/mcp` endpoints
332
+ - **Legacy MCP clients** → Use `/sse` and `/messages` endpoints
333
+ - **Custom integrations** → Choose the appropriate protocol for your needs
334
+
335
+ For detailed transport mode documentation and client examples, refer to the configuration examples above.
336
+
337
+ ## 📚 Available Tools
338
+
339
+ This MCP server provides **67 tools** organized into five main categories:
340
+
341
+ ### 🗂️ Project Management (6 tools)
342
+
343
+ - `project-all` - List all projects
344
+ - `project-one` - Get project by ID
345
+ - `project-create` - Create new project
346
+ - `project-update` - Update project configuration
347
+ - `project-duplicate` - Duplicate project with optional service selection
348
+ - `project-remove` - Delete project
349
+
350
+ ### 🚀 Application Management (26 tools)
351
+
352
+ **Core Operations:**
353
+ - `application-one`, `application-create`, `application-update`, `application-delete`
354
+ - `application-deploy`, `application-redeploy`, `application-start`, `application-stop`, `application-reload`
355
+ - `application-move`, `application-markRunning`, `application-cancelDeployment`
356
+
357
+ **Git Providers:**
358
+ - `application-saveGithubProvider`, `application-saveGitlabProvider`, `application-saveBitbucketProvider`
359
+ - `application-saveGiteaProvider`, `application-saveGitProvider`, `application-disconnectGitProvider`
360
+
361
+ **Configuration:**
362
+ - `application-saveBuildType`, `application-saveEnvironment`, `application-saveDockerProvider`
363
+ - `application-readAppMonitoring`, `application-readTraefikConfig`, `application-updateTraefikConfig`
364
+ - `application-refreshToken`, `application-cleanQueues`
365
+
366
+ ### 🌐 Domain Management (9 tools)
367
+
368
+ - `domain-byApplicationId` - List domains by application ID
369
+ - `domain-byComposeId` - List domains by compose service ID
370
+ - `domain-one` - Get domain by ID
371
+ - `domain-create` - Create domain (application/compose/preview)
372
+ - `domain-update` - Update domain configuration
373
+ - `domain-delete` - Delete domain
374
+ - `domain-validateDomain` - Validate domain DNS/target
375
+ - `domain-generateDomain` - Suggest a domain for an app
376
+ - `domain-canGenerateTraefikMeDomains` - Check Traefik.me availability on a server
377
+
378
+ ### 🐘 PostgreSQL Database Management (13 tools)
379
+
380
+ **Core Operations:**
381
+ - `postgres-create`, `postgres-one`, `postgres-update`, `postgres-remove`, `postgres-move`
382
+ - `postgres-deploy`, `postgres-start`, `postgres-stop`, `postgres-reload`, `postgres-rebuild`
383
+
384
+ **Configuration:**
385
+ - `postgres-changeStatus`, `postgres-saveExternalPort`, `postgres-saveEnvironment`
386
+
387
+ ### 🐬 MySQL Database Management (13 tools)
388
+
389
+ **Core Operations:**
390
+ - `mysql-create`, `mysql-one`, `mysql-update`, `mysql-remove`, `mysql-move`
391
+ - `mysql-deploy`, `mysql-start`, `mysql-stop`, `mysql-reload`, `mysql-rebuild`
392
+
393
+ **Configuration:**
394
+ - `mysql-changeStatus`, `mysql-saveExternalPort`, `mysql-saveEnvironment`
395
+
396
+ **Tool Annotations:**
397
+ All tools include semantic annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`) to help MCP clients understand their behavior and safety characteristics.
398
+
399
+ For detailed schemas, parameters, and usage examples, see **[TOOLS.md](TOOLS.md)**.
400
+
401
+ ## 🏗️ Architecture
402
+
403
+ Built with **@modelcontextprotocol/sdk**, **TypeScript**, and **Zod** for type-safe schema validation:
404
+
405
+ - **67 Tools** covering projects, applications, domains, PostgreSQL, and MySQL management
406
+ - **Multiple Transports**: Stdio (default) and HTTP (Streamable HTTP + legacy SSE)
407
+ - **Multiple Git Providers**: GitHub, GitLab, Bitbucket, Gitea, custom Git
408
+ - **Robust Error Handling**: Centralized API client with retry logic
409
+ - **Type Safety**: Full TypeScript support with Zod schema validation
410
+ - **Tool Annotations**: Semantic hints for MCP client behavior understanding
411
+
412
+ ## 🔧 Development
413
+
414
+ Clone the project and install dependencies:
415
+
416
+ ```bash
417
+ git clone https://github.com/Dokploy/mcp.git
418
+ cd dokploy-mcp
419
+ npm install
420
+ ```
421
+
422
+ Build:
423
+
424
+ ```bash
425
+ npm run build
426
+ ```
427
+
428
+ ### Local Configuration Example
429
+
430
+ ```json
431
+ {
432
+ "mcpServers": {
433
+ "dokploy-mcp": {
434
+ "command": "npx",
435
+ "args": ["tsx", "/path/to/dokploy-mcp/src/index.ts"],
436
+ "env": {
437
+ "DOKPLOY_URL": "https://your-dokploy-server.com/api",
438
+ "DOKPLOY_API_KEY": "your-dokploy-api-token"
439
+ }
440
+ }
441
+ }
442
+ }
443
+ ```
444
+
445
+ ### Testing with MCP Inspector
446
+
447
+ ```bash
448
+ npx -y @modelcontextprotocol/inspector npx @ahdev/dokploy-mcp
449
+ ```
450
+
451
+ ### Documentation
452
+
453
+ - **[TOOLS.md](TOOLS.md)** - Complete tool reference with schemas and examples
454
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** - Contributing guidelines
455
+
456
+ ## 🔧 Troubleshooting
457
+
458
+ ### MCP Client Errors
459
+
460
+ 1. Try adding `@latest` to the package name.
461
+
462
+ 2. Make sure you are using Node v18 or higher to have native fetch support with `npx`.
463
+
464
+ 3. Verify your `DOKPLOY_URL` and `DOKPLOY_API_KEY` environment variables are correctly set.
465
+
466
+ ## 🤝 Contributing
467
+
468
+ We welcome contributions! If you'd like to contribute to the Dokploy MCP Server, please check out our [Contributing Guide](CONTRIBUTING.md).
469
+
470
+ ## 🆘 Support
471
+
472
+ If you encounter any issues, have questions, or want to suggest a feature, please [open an issue](https://github.com/Dokploy/mcp/issues) in our GitHub repository.
473
+
474
+ ## 📄 License
475
+
476
+ This project is licensed under the [Apache License](LICENSE).