Skip to main content
Glama

dokploy_database

Create, update, move, deploy, stop, remove, and configure databases across Postgres, MySQL, MariaDB, MongoDB, Redis, and libSQL. Search by name, app, project, or environment.

Instructions

Manage databases (postgres/mysql/mariadb/mongo/redis/libsql). create: dbType+name+environmentId+databasePassword. Per-engine extras — postgres/mysql/mariadb: REQUIRE databaseName+databaseUser; mysql/mariadb also accept databaseRootPassword. mongo: REQUIRES databaseUser (databaseName not used). redis: only databasePassword (no databaseName/User). libsql: REQUIRES appName+dockerImage+sqldNode (primary|replica); accepts sqldPrimaryUrl+enableNamespaces. get: dbType+databaseId (returns metadata + masked env summary — never values). update: dbType+databaseId+fields. move: dbType+databaseId+targetEnvironmentId. start/stop/deploy/rebuild/remove: dbType+databaseId. reload: dbType+databaseId+appName. changeStatus: dbType+databaseId+applicationStatus (idle|running|done|error). saveEnvironment: dbType+databaseId+env (full replace). setEnvVars: dbType+databaseId + set?/unset? (merge inside the server, masked confirmation only). getEnvKeys: dbType+databaseId — KEY names only. getEnvValuesUnsafe: dbType+databaseId — UNSAFE escape hatch that returns full KEY=VALUE pairs. saveExternalPort: dbType+databaseId+externalPort (libsql also accepts externalGRPCPort/externalAdminPort). search: dbType + q|name|appName|description|projectId|environmentId + limit/offset — searches within the given dbType (not supported for libsql). Note: the API's search index is narrower than the project tree — it can return fewer results than dokploy_project/dokploy_overview list, so use it to find a known service, not to inventory.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNosearch: freeform query
envNoEnvironment variables as KEY=VALUE pairs, one per line. Used by saveEnvironment (full replace).
setNosetEnvVars: KEY=VALUE pairs to upsert, one per line.
nameNo
limitNosearch: max results (default 20)
unsetNosetEnvVars: list of KEY names to remove.
actionYes
dbTypeYespostgres, mysql, mariadb, mongo, redis, or libsql
offsetNosearch: pagination offset
appNameNo
commandNo
cpuLimitNo
serverIdNo
sqldNodeNolibsql sqld role
projectIdNosearch: filter to a project
databaseIdNo
descriptionNo
dockerImageNo
memoryLimitNo
databaseNameNo
databaseUserNo
externalPortNo
environmentIdNo
sqldPrimaryUrlNolibsql replica primary URL
databasePasswordNo
enableNamespacesNolibsql multi-tenant namespaces
externalGRPCPortNolibsql only
applicationStatusNo
externalAdminPortNolibsql only
targetEnvironmentIdNo
databaseRootPasswordNomysql/mariadb only

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed5 schema fields changedv1.8.3
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create",
      -  "get",
      -  "update",
      -  "move",
      -  "start",
      -  "stop",
      -  "deploy",
      -  "rebuild",
      -  "remove",
      -  "reload",
      -  "changeStatus",
      -  "saveEnvironment",
      -  "setEnvVars",
      -  "getEnvKeys",
      -  "getEnvValuesUnsafe",
      -  "saveExternalPort"
      -]New value: +[
      +  "create",
      +  "get",
      +  "update",
      +  "move",
      +  "start",
      +  "stop",
      +  "deploy",
      +  "rebuild",
      +  "remove",
      +  "reload",
      +  "changeStatus",
      +  "saveEnvironment",
      +  "setEnvVars",
      +  "getEnvKeys",
      +  "getEnvValuesUnsafe",
      +  "saveExternalPort",
      +  "search"
      +]
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "search: max results (default 20)",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "search: pagination offset",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / projectId
      Added value: +{
      +  "description": "search: filter to a project",
      +  "type": "string"
      +}
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "search: freeform query",
      +  "type": "string"
      +}
  2. Changed3 schema fields changedv1.7.4
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / sqldPrimaryUrl / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / sqldPrimaryUrl / type
      Added value: +"string"
  3. Changed4 schema fields changedv1.7.3
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create",
      -  "get",
      -  "update",
      -  "move",
      -  "start",
      -  "stop",
      -  "deploy",
      -  "rebuild",
      -  "remove",
      -  "reload",
      -  "changeStatus",
      -  "saveEnvironment",
      -  "saveExternalPort"
      -]New value: +[
      +  "create",
      +  "get",
      +  "update",
      +  "move",
      +  "start",
      +  "stop",
      +  "deploy",
      +  "rebuild",
      +  "remove",
      +  "reload",
      +  "changeStatus",
      +  "saveEnvironment",
      +  "setEnvVars",
      +  "getEnvKeys",
      +  "getEnvValuesUnsafe",
      +  "saveExternalPort"
      +]
    • changedInput schema / properties / env / description
      Previous value: -"Environment variables as KEY=VALUE pairs, one per line. Example: 'DB_HOST=localhost\\nDB_PORT=5432'"New value: +"Environment variables as KEY=VALUE pairs, one per line. Used by saveEnvironment (full replace)."
    • addedInput schema / properties / set
      Added value: +{
      +  "description": "setEnvVars: KEY=VALUE pairs to upsert, one per line.",
      +  "type": "string"
      +}
    • addedInput schema / properties / unset
      Added value: +{
      +  "description": "setEnvVars: list of KEY names to remove.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. First observedv1.7.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and carries it well. It discloses masking ('returns metadata + masked env summary — never values'), an unsafe path ('UNSAFE escape hatch that returns full KEY=VALUE pairs'), destructive semantics ('saveEnvironment ... (full replace)'), merge behavior ('merge inside the server, masked confirmation only'), search-index limitations, and per-engine constraints ('mongo: REUIREs databaseUser (databaseName not used)'; 'redis: only databasePassword'). This is exactly the behavioral context annotations would only hint at.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every clause carries required-parameter information; there is zero filler. However, it is one dense unbroken paragraph covering 17 actions and 6 engines, which makes scanning harder than if it were broken into per-action lines. For a dispatch tool of this breadth the length is justified, but the structure could be cleaner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 17 actions, 6 dbTypes, 31 params, no annotations, and no output schema, the description covers per-action contracts, per-engine constraints, return-value masking, and search caveats — an unusually high bar. Remaining gaps: 'update: dbType+databaseId+fields' never enumerates which fields are updatable, and schema params command/cpULimit/memoriLimit/serverId apear nowhere in the description, leaving an agent unsure how to set resource limits or associate a server.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 45% and many params (name, databaseId, databasePassword, environmentId, externalPort, etc.) have no schema description. The description fully compensates by mapping every param to its action and engine: create=dbType+name+environmentId+databasePassword, with per-engine REQUIRES/accepts/not-used rules; get/update/move/start/stop/deploy/rebuild/emove/reload/changeStatus/saveEnvironment/setEnvVars/getEnvKeys/getEnvValuesUnsafe/saveExternalPort/search each get their param sets. This removes real ambiguity that the bare schema would leave.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Manage databases (postgres/mysql/mariadb/mongo/redis/libsql)' states a specific resource and scope, and the 17 enumerated actions each get a verb+parameter contract. The database scope clearly distinguishes it from siblings like dokploy_application, dokploy_compose, and dokploy_docker without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The search note is an explicit usage guideline: it warns the index is narrower than the project tree, can return fewer results than dokploy_project/dokploy_overview, and says to use search to find a known service, not to inventory. For the other 16 actions, when-to-use is implied by the action names and per-action parameter requirements, but no explicit exclusions are given for when to prefer a sibling (e.g., backup vs. database tool).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sapientsai/dokploy-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server