create-bucket
Create a new bucket in InfluxDB for storing time-series data, specifying the organization ID, bucket name, and optional retention period for data management.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The bucket name | |
| orgID | Yes | The organization ID | |
| retentionPeriodSeconds | No | Retention period in seconds (optional) |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"name": {
"description": "The bucket name",
"type": "string"
},
"orgID": {
"description": "The organization ID",
"type": "string"
},
"retentionPeriodSeconds": {
"description": "Retention period in seconds (optional)",
"type": "number"
}
},
"required": [
"name",
"orgID"
],
"type": "object"
}
Implementation Reference
- src/handlers/createBucketTool.js:5-61 (handler)The handler function that executes the create-bucket tool logic. It sends a POST request to the InfluxDB API to create a new bucket with the given name, orgID, and optional retention rules.export async function createBucket({ name, orgID, retentionPeriodSeconds }) { console.log(`=== CREATE-BUCKET TOOL CALLED ===`); console.log(`Creating bucket: ${name}, orgID: ${orgID}`); try { const bucketData = { name, orgID, retentionRules: retentionPeriodSeconds ? [ { type: "expire", everySeconds: retentionPeriodSeconds }, ] : undefined, }; console.log(`Creating bucket with data: ${JSON.stringify(bucketData)}`); // Use fetch directly instead of our wrapper const response = await fetch(`${INFLUXDB_URL}/api/v2/buckets`, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Token ${INFLUXDB_TOKEN}`, }, body: JSON.stringify(bucketData), }); console.log(`Create bucket response status: ${response.status}`); if (!response.ok) { const errorText = await response.text(); throw new Error( `Failed to create bucket: ${response.status} ${errorText}`, ); } const bucketResponse = await response.json(); console.log(`=== CREATE-BUCKET TOOL COMPLETED SUCCESSFULLY ===`); return { content: [{ type: "text", text: `Bucket created successfully:\nID: ${bucketResponse.id}\nName: ${bucketResponse.name}\nOrganization ID: ${bucketResponse.orgID}`, }], }; } catch (error) { console.error(`=== CREATE-BUCKET TOOL ERROR: ${error.message} ===`); return { content: [{ type: "text", text: `Error creating bucket: ${error.message}`, }], isError: true, }; } }
- src/index.js:120-142 (registration)Registers the 'create-bucket' tool with the MCP server, including input schema validation using Zod and linking to the createBucket handler function.server.tool( "create-bucket", "Provision a new bucket under an organization so that subsequent write-data calls have a destination.", { name: z .string() .describe( "Friendly bucket name. Follow InfluxDB naming rules (alphanumeric, dashes, underscores).", ), orgID: z .string() .describe( "Organization ID (UUID) that will own the bucket. Retrieve it from the organizations resource or create-org output.", ), retentionPeriodSeconds: z .number() .optional() .describe( "Optional retention duration expressed in seconds. Omit for infinite retention.", ), }, createBucket, );
- src/index.js:124-140 (schema)Zod schema defining the input parameters for the create-bucket tool: name (string), orgID (string), retentionPeriodSeconds (optional number).name: z .string() .describe( "Friendly bucket name. Follow InfluxDB naming rules (alphanumeric, dashes, underscores).", ), orgID: z .string() .describe( "Organization ID (UUID) that will own the bucket. Retrieve it from the organizations resource or create-org output.", ), retentionPeriodSeconds: z .number() .optional() .describe( "Optional retention duration expressed in seconds. Omit for infinite retention.", ), },