update_flag
Modify feature flag properties such as name, description, and enabled status for targeted updates within the Flipt MCP Server system.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | ||
| enabled | No | ||
| key | Yes | ||
| name | Yes | ||
| namespaceKey | Yes |
Implementation Reference
- src/index.ts:280-344 (handler)Primary handler and registration for the 'update_flag' MCP tool. Validates input with Zod schema, fetches current flag, applies updates, calls FliptClient.updateFlag, and returns formatted response.server.tool( 'update_flag', { namespaceKey: z.string().min(1), key: z.string().min(1), name: z.string().min(1), description: z.string().optional(), enabled: z.boolean().optional(), }, async args => { try { const currentFlag = await fliptClient.getFlag(args.namespaceKey, args.key); if (!currentFlag) { return { content: [ { type: 'text', text: `Flag ${args.key} in namespace ${args.namespaceKey} not found`, }, ], isError: true, }; } // update changed fields const updatedFlag = { ...currentFlag, name: args.name || currentFlag.name, description: args.description || currentFlag.description, enabled: args.enabled || currentFlag.enabled, }; const flag = await fliptClient.updateFlag( currentFlag.namespaceKey!, currentFlag.key!, updatedFlag.name!, updatedFlag.description, updatedFlag.enabled ); return { content: [ { type: 'text', text: JSON.stringify(flag, null, 2), }, ], _meta: { uri: `flipt://namespaces/${args.namespaceKey}/flags/${args.key}`, }, }; } catch (error: any) { console.error('Error updating flag:', error); return { content: [ { type: 'text', text: `Failed to update flag: ${error.message}`, }, ], isError: true, }; } } );
- src/index.ts:282-288 (schema)Zod input schema for the update_flag tool parameters.{ namespaceKey: z.string().min(1), key: z.string().min(1), name: z.string().min(1), description: z.string().optional(), enabled: z.boolean().optional(), },
- src/services/fliptClient.ts:162-180 (helper)FliptClient helper method that wraps the generated FlagsServiceApi.updateFlag to perform the actual flag update via Flipt API.async updateFlag( namespaceKey: string, key: string, name: string, description?: string, enabled?: boolean ) { try { const response = await this.flagsApi.updateFlag(namespaceKey, key, { name, description, enabled, }); return response; } catch (error) { console.error('Error updating flag:', error); throw error; } }
- src/handlers/toolHandlers.ts:165-200 (helper)Alternative handler implementation in ToolHandlers class (possibly unused), which directly calls FliptClient.updateFlag.async handleUpdateFlag({ namespaceKey, key, name, description, enabled, }: { namespaceKey: string; key: string; name: string; description?: string; enabled?: boolean; }) { try { const flag = await this.fliptClient.updateFlag(namespaceKey, key, name, description, enabled); return { content: [ { type: 'text', text: `Successfully updated flag: ${JSON.stringify(flag, null, 2)}`, }, ], }; } catch (error) { console.error(`Error updating flag ${key} in namespace ${namespaceKey}:`, error); return { content: [ { type: 'text', text: `Error updating flag ${key} in namespace ${namespaceKey}: ${error}`, }, ], isError: true, }; } }
- Generated TypeScript interface for UpdateFlagRequest used by the Flipt API client./** * api * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * OpenAPI spec version: 1.47.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import { HttpFile } from '../http/http'; export class UpdateFlagRequest { 'key'?: string; 'name': string; 'description'?: string; 'enabled'?: boolean; 'namespaceKey'?: string; 'defaultVariantId'?: string; 'metadata'?: any; static readonly discriminator: string | undefined = undefined; static readonly mapping: {[index: string]: string} | undefined = undefined; static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "key", "baseName": "key", "type": "string", "format": "" }, { "name": "name", "baseName": "name", "type": "string", "format": "" }, { "name": "description", "baseName": "description", "type": "string", "format": "" }, { "name": "enabled", "baseName": "enabled", "type": "boolean",