Skip to main content
Glama
bucketeer-io

Bucketeer MCP Server

Official
by bucketeer-io

updateFeatureFlag

Modify an existing feature flag's properties including name, description, tags, enabled status, and archived state while maintaining an audit trail with required comments.

Instructions

Update an existing feature flag

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
archivedNoArchive or unarchive the feature flag
commentYesComment for the update (required for audit trail)
descriptionNoNew description for the feature flag
enabledNoEnable or disable the feature flag
environmentIdNoEnvironment ID (uses default if not provided)
idYesThe ID of the feature flag to update
nameNoNew name for the feature flag
tagsNoNew tags for the feature flag

Implementation Reference

  • Executes the tool logic: validates input with Zod, creates BucketeerClient, builds UpdateFeatureRequest with provided fields, calls updateFeature API, returns success response with feature details or error.
    handler: async (input: unknown) => { try { // Validate input const params = updateFlagSchema.parse(input); logger.debug("Updating feature flag", params); // Create API client const client = new BucketeerClient( config.bucketeerHost, config.bucketeerApiKey, ); // Prepare request const request: UpdateFeatureRequest = { id: params.id, comment: params.comment, environmentId: getEnvironmentId(params.environmentId), }; // Only add fields that are being updated if (params.name !== undefined) { request.name = params.name; } if (params.description !== undefined) { request.description = params.description; } if (params.tags !== undefined) { request.tags = { values: params.tags }; } if (params.enabled !== undefined) { request.enabled = params.enabled; } if (params.archived !== undefined) { request.archived = params.archived; } // Make API call const response = await client.updateFeature(request); logger.info(`Successfully updated feature flag: ${response.feature.id}`); return { content: [ { type: "text", text: JSON.stringify( { success: true, feature: response.feature, updated: { ...(params.name !== undefined && { name: params.name }), ...(params.description !== undefined && { description: params.description, }), ...(params.tags !== undefined && { tags: params.tags }), ...(params.enabled !== undefined && { enabled: params.enabled, }), ...(params.archived !== undefined && { archived: params.archived, }), }, }, null, 2, ), }, ], }; } catch (error) { logger.error("Failed to update feature flag", error); if (error instanceof z.ZodError) { return { content: [ { type: "text", text: JSON.stringify( { success: false, error: "Invalid input parameters", details: error.issues, }, null, 2, ), }, ], isError: true, }; } return { content: [ { type: "text", text: JSON.stringify( { success: false, error: error instanceof Error ? error.message : "Unknown error", }, null, 2, ), }, ], isError: true, }; } },
  • Zod schema used for input validation in the handler, ensuring required fields and at least one updatable field.
    export const updateFlagSchema = z .object({ id: z.string().min(1, "Feature flag ID is required"), comment: z.string().min(1, "Comment is required for all updates"), environmentId: z.string().optional(), name: z.string().optional(), description: z.string().optional(), tags: z.array(z.string()).optional(), enabled: z.boolean().optional(), archived: z.boolean().optional(), }) .refine( (data) => { // At least one update field must be provided return ( data.name !== undefined || data.description !== undefined || data.tags !== undefined || data.enabled !== undefined || data.archived !== undefined ); }, { message: "At least one field to update must be provided" }, );
  • The updateFlagTool is included in the exported tools array, which is imported and used by the MCP server for tool listing and execution.
    export const tools = [ listFlagsTool, createFlagTool, getFlagTool, updateFlagTool, archiveFlagTool, ];
  • src/server.ts:8-8 (registration)
    Imports the tools array containing updateFlagTool for use in MCP server request handlers.
    import { tools } from "./tools/index.js";
  • JSON schema provided in the tool definition for MCP tool listing and client-side validation.
    inputSchema: { type: "object" as const, properties: { id: { type: "string", description: "The ID of the feature flag to update", }, comment: { type: "string", description: "Comment for the update (required for audit trail)", }, environmentId: { type: "string", description: "Environment ID (uses default if not provided)", }, name: { type: "string", description: "New name for the feature flag", }, description: { type: "string", description: "New description for the feature flag", }, tags: { type: "array", items: { type: "string" }, description: "New tags for the feature flag", }, enabled: { type: "boolean", description: "Enable or disable the feature flag", }, archived: { type: "boolean", description: "Archive or unarchive the feature flag", }, }, required: ["id", "comment"], },

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/bucketeer-io/bucketeer-mcp'

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