Commit de70dcc
authored
feat(dokploy): cover complete MCP action catalog (#85)
## Summary
- add exact coverage for all 524 tools committed in
`Dokploy/mcp@db18449eafdfc8dbd438d392b95c46292069c658`
- expose a static, searchable action catalog split across 48 Dokploy
domains, backed by one lazy shared runtime
- preserve Dokploy MCP tool names and request schemas, with 186 GET
actions and 338 POST actions
- support the two multipart tools through OpenConnector transit files:
- `application-dropDeployment`
- `docker-uploadFileToContainer`
- keep `x-api-key` authentication, public-instance URL validation,
request timeouts, bounded responses, and redacted error details
## Scope
This PR targets the generated tool catalog committed in the pinned
Dokploy MCP revision above. It does **not** claim parity with Dokploy's
newer repository-root OpenAPI document, which currently contains
additional endpoints that are not yet part of that MCP catalog.
All 524 actions are statically defined and locally executable; this does
not add an unrestricted API proxy. Operations that can remove, stop, or
otherwise disrupt resources receive an explicit warning when the
upstream specification does not provide a description.
## Reproducible generation
`npm run generate:provider -- dokploy` dispatches to the provider-owned
generator, which downloads the pinned generated OpenAPI document and
verifies SHA-256
`225972ade1e545cc9a44638e4ff32d73a23ea48298617ca3a37fb5cfff6a058e`
before generating and formatting the 48 domain modules. Additional
arguments are forwarded only to that generator. An optional local source
is accepted only when it has the same digest. The generation pipeline
was run twice with identical output.
## Generated-schema exception
The repository guideline normally prefers hand-authored `s` schema
helpers for provider definitions. This PR requests a deliberate
large-provider exception, following the existing generated-provider
precedent used by integrations such as UnifAPI and Postman:
- 524 upstream schemas are too large and change-prone to maintain safely
by hand
- the source is pinned by commit and content hash
- generated output is split by domain instead of placed in one
monolithic file
- an independent 524-name snapshot test detects missing, duplicate, or
renamed MCP tools
- parity tests also enforce 48 tags, action/handler coverage,
representative schema constraints, and exactly two multipart operations
## Runtime behavior
- maps path, repeated query, JSON-body, and multipart fields from static
operation metadata
- preserves successful token and SSH-key responses; only error details
are recursively redacted
- limits response bodies to 10 MiB and error messages to 16 KiB
- preserves upstream error statuses, including bounded plain-text error
responses
- requires a public HTTP(S) Dokploy instance URL and rejects embedded
credentials and private/reserved targets
## Validation
- Dokploy generation pipeline: 524 actions / 48 domains / 0 unsupported;
repeated run produced identical output
- provider registry and catalog generation: 1,064 apps / 10,768 actions
- TypeScript checks: `src`, `scripts-all`, and `examples` passed
- lint and formatting checks passed
- full test suite: 38 files / 246 tests passed1 parent 6f044f0 commit de70dcc
58 files changed
Lines changed: 29591 additions & 0 deletions
File tree
- scripts
- src/providers/dokploy
- operations
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
0 commit comments