Documentation
¶
Overview ¶
Package featureflags provides MCP tool handlers for GitLab project feature flag operations.
markdown.go provides Markdown formatting functions for feature flag MCP tool output.
register.go wires featureflags MCP tools to the MCP server.
Index ¶
- func DeleteFeatureFlag(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
- func FormatFeatureFlagMarkdown(out Output) string
- func FormatListFeatureFlagsMarkdown(out ListOutput) string
- func RegisterMeta(server *mcp.Server, client *gitlabclient.Client)
- func RegisterTools(server *mcp.Server, client *gitlabclient.Client)
- type CreateInput
- type DeleteInput
- type GetInput
- type ListInput
- type ListOutput
- type Output
- func CreateFeatureFlag(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
- func GetFeatureFlag(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)
- func UpdateFeatureFlag(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
- type ScopeInput
- type ScopeOutput
- type StrategyInput
- type StrategyOutput
- type StrategyParameterInput
- type StrategyParameterOutput
- type UpdateInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeleteFeatureFlag ¶
func DeleteFeatureFlag(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
DeleteFeatureFlag deletes a feature flag.
func FormatFeatureFlagMarkdown ¶
FormatFeatureFlagMarkdown formats a single feature flag as markdown.
func FormatListFeatureFlagsMarkdown ¶
func FormatListFeatureFlagsMarkdown(out ListOutput) string
FormatListFeatureFlagsMarkdown formats a list of feature flags as markdown.
func RegisterMeta ¶
func RegisterMeta(server *mcp.Server, client *gitlabclient.Client)
RegisterMeta registers the feature flag meta-tool.
func RegisterTools ¶
func RegisterTools(server *mcp.Server, client *gitlabclient.Client)
RegisterTools registers all project feature flag individual tools.
Types ¶
type CreateInput ¶
type CreateInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
Name string `json:"name" jsonschema:"Feature flag name,required"`
Description string `json:"description,omitempty" jsonschema:"Feature flag description"`
Version string `json:"version,omitempty" jsonschema:"Version of the feature flag (new_version_flag)"`
Active *bool `json:"active,omitempty" jsonschema:"Whether the flag is active"`
Strategies string `json:"strategies,omitempty" jsonschema:"JSON array of strategy objects: [{name, parameters, scopes}]"`
}
CreateInput contains parameters for creating a feature flag.
type DeleteInput ¶
type DeleteInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
Name string `json:"name" jsonschema:"Feature flag name,required"`
}
DeleteInput contains parameters for deleting a feature flag.
type GetInput ¶
type GetInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
Name string `json:"name" jsonschema:"Feature flag name,required"`
}
GetInput contains parameters for getting a feature flag.
type ListInput ¶
type ListInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
Scope string `json:"scope,omitempty" jsonschema:"Filter by scope (enabled or disabled)"`
toolutil.PaginationInput
}
ListInput contains parameters for listing feature flags.
type ListOutput ¶
type ListOutput struct {
toolutil.HintableOutput
FeatureFlags []Output `json:"feature_flags"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
ListOutput represents a paginated list of feature flags.
func ListFeatureFlags ¶
func ListFeatureFlags(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)
ListFeatureFlags lists feature flags for a project.
type Output ¶
type Output struct {
toolutil.HintableOutput
Name string `json:"name"`
Description string `json:"description"`
Active bool `json:"active"`
Version string `json:"version"`
CreatedAt string `json:"created_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
Strategies []StrategyOutput `json:"strategies,omitempty"`
}
Output represents a single project feature flag.
func CreateFeatureFlag ¶
func CreateFeatureFlag(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
CreateFeatureFlag creates a new feature flag.
func GetFeatureFlag ¶
func GetFeatureFlag(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)
GetFeatureFlag gets a single feature flag by name.
func UpdateFeatureFlag ¶
func UpdateFeatureFlag(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
UpdateFeatureFlag updates an existing feature flag.
type ScopeInput ¶
type ScopeInput struct {
EnvironmentScope string `json:"environment_scope"`
}
ScopeInput represents a scope for strategy options.
type ScopeOutput ¶
ScopeOutput represents a feature flag scope.
type StrategyInput ¶
type StrategyInput struct {
ID int64 `json:"id,omitempty"`
Name string `json:"name"`
Parameters *StrategyParameterInput `json:"parameters,omitempty"`
Scopes []ScopeInput `json:"scopes,omitempty"`
}
StrategyInput represents a strategy for create/update operations.
type StrategyOutput ¶
type StrategyOutput struct {
ID int64 `json:"id"`
Name string `json:"name"`
Parameters *StrategyParameterOutput `json:"parameters,omitempty"`
Scopes []ScopeOutput `json:"scopes,omitempty"`
}
StrategyOutput represents a feature flag strategy.
type StrategyParameterInput ¶
type StrategyParameterInput struct {
GroupID string `json:"group_id,omitempty"`
UserIDs string `json:"user_ids,omitempty"`
Percentage string `json:"percentage,omitempty"`
Rollout string `json:"rollout,omitempty"`
Stickiness string `json:"stickiness,omitempty"`
}
StrategyParameterInput represents strategy parameters for create/update.
type StrategyParameterOutput ¶
type StrategyParameterOutput struct {
GroupID string `json:"group_id,omitempty"`
UserIDs string `json:"user_ids,omitempty"`
Percentage string `json:"percentage,omitempty"`
Rollout string `json:"rollout,omitempty"`
Stickiness string `json:"stickiness,omitempty"`
}
StrategyParameterOutput represents strategy parameters.
type UpdateInput ¶
type UpdateInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
Name string `json:"name" jsonschema:"Current feature flag name,required"`
NewName string `json:"new_name,omitempty" jsonschema:"New feature flag name"`
Description string `json:"description,omitempty" jsonschema:"Feature flag description"`
Active *bool `json:"active,omitempty" jsonschema:"Whether the flag is active"`
Strategies string `json:"strategies,omitempty" jsonschema:"JSON array of strategy objects: [{id, name, parameters, scopes}]"`
}
UpdateInput contains parameters for updating a feature flag.