Skip to main content
Glama
nnnkkk7

Bucketeer MCP Server

by nnnkkk7

updateFeatureFlag

Modify feature flag settings including name, description, tags, and status to control feature rollout and management in Bucketeer environments.

Instructions

Update an existing feature flag

Input Schema

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

Implementation Reference

  • The handler function that executes the tool: parses input with Zod schema, creates BucketeerClient, builds UpdateFeatureRequest, calls API, handles success/error responses.
    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.errors, }, 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 (updateFlagSchema) used in handler for input validation, ensuring required fields and at least one update 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' } );
  • JSON schema (inputSchema) defined in tool object for MCP protocol input 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'], },
  • Registration of the updateFlagTool as part of the exported tools array for MCP server.
    export const tools = [ listFlagsTool, createFlagTool, getFlagTool, updateFlagTool, archiveFlagTool, ];

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

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