Skip to content

feat: add toolset presets for large MCP clients#51

Open
franktronics wants to merge 1 commit into
Dokploy:mainfrom
franktronics:fix/toolset-presets
Open

feat: add toolset presets for large MCP clients#51
franktronics wants to merge 1 commit into
Dokploy:mainfrom
franktronics:fix/toolset-presets

Conversation

@franktronics

Copy link
Copy Markdown

Summary

Add toolset presets and exclusion filters so users can reduce the number of MCP tools exposed to clients/providers that struggle with very large tool lists.

By default, behavior stays unchanged: all Dokploy tools are loaded.

Changes

  • Add DOKPLOY_TOOL_PRESET
    • all (default)
    • minimal
    • core
    • deploy
    • databases
    • git
  • Add DOKPLOY_DISABLED_TAGS to exclude categories after selecting a preset or explicit tag list.
  • Keep DOKPLOY_ENABLED_TAGS as exact-control override.
  • Add logging for selected toolset, loaded tool count, and large toolset warnings.
  • Document presets, precedence, and troubleshooting guidance.
  • Add tests for default behavior, presets, explicit tags, disabled tags, and invalid preset fallback.

Presets

  • minimal: project, application
  • core: project, server, application
  • deploy: project, environment, server, application, domain, deployment
  • databases: postgres, redis, mysql, mariadb, mongo, libsql
  • git: github, gitlab, bitbucket, gitea, gitProvider, registry, sshKey

Why

The server exposes hundreds of tools when all Dokploy API categories are enabled. Some MCP clients and LLM providers can time out(e.g. GPT models) or fail when ingesting very large tool lists.

This allows us to maintain full API coverage by default while providing users with a documented way to reduce the number of tools.

Configuration precedence

  1. DOKPLOY_ENABLED_TAGS takes precedence when set.
  2. Otherwise DOKPLOY_TOOL_PRESET selects a predefined toolset.
  3. DOKPLOY_DISABLED_TAGS is applied last.
  4. Default remains DOKPLOY_TOOL_PRESET=all.

Testing

  • npx --yes pnpm@10.24.0 test -- src/server.test.ts
  • npx --yes pnpm@10.24.0 type-check
  • npx --yes pnpm@10.24.0 lint
  • npx --yes pnpm@10.24.0 build

Manual smoke checks:

  • default loads 524 tools
  • DOKPLOY_TOOL_PRESET=minimal loads 40 tools
  • DOKPLOY_TOOL_PRESET=core loads 57 tools
  • DOKPLOY_ENABLED_TAGS=project,application,postgres loads 56 tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant