db_create_deployment
Creates a new database deployment on IBM Cloud. Supports services like PostgreSQL, Redis, MongoDB, MySQL, Elasticsearch, etcd, and RabbitMQ.
Instructions
Create a new database deployment
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| service | Yes | ||
| plan | No | Plan ID (default: standard) | |
| resource_group_id | No | ||
| region | No |
Implementation Reference
- src/server.ts:65-66 (registration)Registration of registerDatabaseTools which includes the db_create_deployment tool, called from the server setup.
registerDatabaseTools(server, client, config); console.error(` ✓ Databases (10 tools)`); - src/tools/databases/index.ts:19-28 (handler)The tool handler for 'db_create_deployment' - validates schema inputs, checks write permissions, and POSTs to the IBM Cloud Resource Controller to create a database deployment.
server.tool("db_create_deployment", "Create a new database deployment", { name: z.string(), service: z.enum(["databases-for-postgresql","databases-for-redis","databases-for-mongodb","databases-for-mysql","databases-for-elasticsearch","databases-for-etcd","messages-for-rabbitmq"]), plan: z.string().optional().describe("Plan ID (default: standard)"), resource_group_id: z.string().optional(), region: z.string().optional(), }, async (p) => safeTool(async () => { w(); return client.post(`${IBM_ENDPOINTS.RESOURCE_CONTROLLER}/resource_instances`, { name:p.name, target:p.region||r, resource_plan_id:p.plan||"standard", resource_group:p.resource_group_id, service_name:p.service, }); })); - src/tools/databases/index.ts:19-22 (schema)Input schema for db_create_deployment: name (string), service (enum of database types), plan (optional string), resource_group_id (optional string), region (optional string).
server.tool("db_create_deployment", "Create a new database deployment", { name: z.string(), service: z.enum(["databases-for-postgresql","databases-for-redis","databases-for-mongodb","databases-for-mysql","databases-for-elasticsearch","databases-for-etcd","messages-for-rabbitmq"]), plan: z.string().optional().describe("Plan ID (default: standard)"), resource_group_id: z.string().optional(), region: z.string().optional(), - src/lib/utils.ts:70-77 (helper)The safeTool helper that wraps handler execution to catch errors and return proper MCP success/error responses.
export async function safeTool<T>(fn: () => Promise<T>): Promise<ReturnType<typeof successContent> | ReturnType<typeof errorContent>> { try { const result = await fn(); return successContent(result); } catch (error) { return errorContent(error); } } - src/lib/utils.ts:14-18 (helper)The assertWriteAllowed helper that checks config.allowWrite before performing write operations like db_create_deployment.
export function assertWriteAllowed(allowWrite: boolean): void { if (!allowWrite) { throw new WriteNotAllowedError(); } }