Skip to main content
Glama
bucketeer-io

Bucketeer MCP Server

Official
by bucketeer-io

Bucketeer MCP Server

A Model Context Protocol (MCP) server for managing feature flags in Bucketeer, an open-source feature flag management platform.

WARNING

This is a beta version. Breaking changes may be introduced before general release.

Features

This MCP server provides tools for basic CRUD operations on Bucketeer feature flags:

  • listFeatureFlags - List all feature flags with filtering and pagination

  • createFeatureFlag - Create a new feature flag

  • getFeatureFlag - Get a specific feature flag by ID

  • updateFeatureFlag - Update an existing feature flag

  • archiveFeatureFlag - Archive a feature flag (make it inactive)

Related MCP server: Unleash MCP (Feature Toggle)

Prerequisites

  • Node.js 18 or higher

  • A Bucketeer instance with API access

  • An API key with appropriate permissions (READ, WRITE, or ADMIN)

Installation

The easiest way to use Bucketeer MCP Server is directly with npx - no installation required:

npx @bucketeer/mcp

Local Installation

  1. Clone this repository

git clone https://github.com/bucketeer-io/bucketeer-mcp.git
cd bucketeer-mcp
  1. Install dependencies

npm install
  1. Build the project

npm run build

Usage

Running the Server

Using npx (No Installation Required)

npx @bucketeer/mcp

Using Local Installation

Start the MCP server

npm start

For development with auto-reload

npm run dev

MCP Client Configuration

To use this server with an MCP client, add it to your MCP client configuration.

{
  "mcpServers": {
    "bucketeer": {
      "command": "npx",
      "args": ["@bucketeer/mcp"],
      "env": {
        "BUCKETEER_HOST": "api.bucketeer.io",
        "BUCKETEER_API_KEY": "your-api-key",
        "BUCKETEER_ENVIRONMENT_ID": "your-environment-id"
      }
    }
  }
}

Using Local Installation

{
  "mcpServers": {
    "bucketeer": {
      "command": "node",
      "args": ["/path/to/bucketeer-mcp/dist/index.js"],
      "env": {
        "BUCKETEER_HOST": "api.bucketeer.io",
        "BUCKETEER_API_KEY": "your-api-key",
        "BUCKETEER_ENVIRONMENT_ID": "your-environment-id"
      }
    }
  }
}

Available Tools

listFeatureFlags

List all feature flags in the specified environment.

Parameters:

  • environmentId (optional) - Environment ID (uses default if not provided)

  • pageSize (optional) - Number of items per page (1-100, default: 20)

  • cursor (optional) - Pagination cursor for next page

  • tags (optional) - Filter by tags

  • orderBy (optional) - Field to order by (CREATED_AT, UPDATED_AT, NAME)

  • orderDirection (optional) - Order direction (ASC, DESC)

  • searchKeyword (optional) - Search keyword for feature name or ID

  • maintainer (optional) - Filter by maintainer email

  • archived (optional) - Filter by archived status

createFeatureFlag

Create a new feature flag.

Parameters:

  • id (required) - Unique identifier (alphanumeric, hyphens, underscores)

  • name (required) - Human-readable name

  • description (optional) - Description of the feature flag

  • environmentId (optional) - Environment ID (uses default if not provided)

  • variations (required) - Array of variations (at least 2)

    • value (required) - The value returned when this variation is served

    • name (required) - Name of the variation

    • description (optional) - Description of the variation

  • tags (optional) - Tags for the feature flag

  • defaultOnVariationIndex (required) - Index of variation when flag is on (0-based)

  • defaultOffVariationIndex (required) - Index of variation when flag is off (0-based)

  • variationType (optional) - Type of the variation values: STRING (default), BOOLEAN, NUMBER, or JSON

getFeatureFlag

Get a specific feature flag by ID.

Parameters:

  • id (required) - The ID of the feature flag to retrieve

  • environmentId (optional) - Environment ID (uses default if not provided)

  • featureVersion (optional) - Specific version of the feature to retrieve

updateFeatureFlag

Update an existing feature flag.

Parameters:

  • id (required) - The ID of the feature flag to update

  • comment (required) - Comment for the update (required for audit trail)

  • environmentId (optional) - Environment ID (uses default if not provided)

  • name (optional) - New name for the feature flag

  • description (optional) - New description

  • tags (optional) - New tags

  • enabled (optional) - Enable or disable the feature flag

  • archived (optional) - Archive or unarchive the feature flag

Note:

  • This tool requires a comment for audit trail purposes

  • It does not support updating variations. To modify variations, you would need to archive the current flag and create a new one.

archiveFeatureFlag

Archive a feature flag (make it inactive). Archived flags will return the default value defined in your code for all users.

Parameters:

  • id (required) - The ID of the feature flag to archive

  • environmentId (optional) - Environment ID (uses default if not provided)

  • comment (required) - Comment for the archive action (required for audit trail)

Note: This operation archives the flag rather than permanently deleting it. The flag can be unarchived later if needed.

Development

Linting

Run the linter

npm run lint

Building

Build the TypeScript code

npm run build

Contributing

We would ❤️ for you to contribute to Bucketeer and help improve it! Anyone can use and enjoy it!

Please follow our contribution guide here.

License

Apache License 2.0, see LICENSE.

Available Tools

5 tools
archiveFeatureFlagC

Archive a feature flag (make it inactive)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the feature flag to archive
environmentIdNoEnvironment ID (uses default if not provided)
commentYesComment for the archive action (required for audit trail)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('archive') and outcome ('make it inactive'), implying a mutation that changes state, but lacks details on permissions required, whether the action is reversible, audit implications from the comment parameter, or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and outcome without unnecessary words. It directly communicates the tool's purpose ('archive a feature flag') and result ('make it inactive'), making it easy to parse. Every part of the sentence earns its place by clarifying the tool's intent concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It lacks information on behavioral aspects like side effects, return values, error handling, or how it integrates with sibling tools. For a tool that archives resources, more context on implications and usage is needed to be fully helpful to an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters (id, environmentId, comment) with their purposes. The description adds no additional parameter semantics beyond implying archiving affects a feature flag's activity state. Since the schema handles the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate for or enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('archive') and resource ('feature flag'), specifying the outcome ('make it inactive'). It distinguishes from siblings like create, get, list, and update by focusing on deactivation rather than creation, retrieval, or modification. However, it doesn't explicitly contrast with potential delete operations or other archival tools, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like updateFeatureFlag for status changes or delete operations. It mentions making the flag 'inactive', which implies a state change, but doesn't clarify prerequisites, consequences, or typical scenarios for archiving over other actions. Without such context, users must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createFeatureFlagC

Create a new feature flag in the specified environment

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier for the feature flag (alphanumeric, hyphens, underscores)
nameYesHuman-readable name for the feature flag
descriptionNoDescription of the feature flag
environmentIdNoEnvironment ID (uses default if not provided)
variationsYesList of variations (at least 2 required)
tagsNoTags for the feature flag
defaultOnVariationIndexYesIndex of the variation to serve when flag is on (0-based)
defaultOffVariationIndexYesIndex of the variation to serve when flag is off (0-based)
variationTypeNoType of the variation values (default: STRING)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic action without behavioral details. It doesn't mention permissions required, whether creation is idempotent, rate limits, error conditions, or what happens on success (e.g., returns the created flag). For a mutation tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 9 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain the creation workflow, what 'create' entails (e.g., validation rules beyond schema), or what the tool returns. The schema handles parameter details, but behavioral context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing detailed parameter documentation. The description adds no parameter-specific information beyond implying 'environmentId' is optional (uses default), which is already covered in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('create') and resource ('feature flag') with the specific context 'in the specified environment'. It distinguishes from siblings like 'updateFeatureFlag' or 'getFeatureFlag' by specifying it's for creation, though it doesn't explicitly contrast with all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'updateFeatureFlag' for modifications or 'archiveFeatureFlag' for removal. The description mentions 'specified environment' but doesn't explain when environment selection matters or what happens if omitted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getFeatureFlagC

Get a specific feature flag by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the feature flag to retrieve
environmentIdNoEnvironment ID (uses default if not provided)
featureVersionNoSpecific version of the feature to retrieve

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a flag but doesn't mention whether this is a read-only operation, if it requires authentication, what happens if the ID doesn't exist, or any rate limits. For a retrieval tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple retrieval tool and front-loaded with the core action, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (retrieval with 3 parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain return values, error conditions, or how optional parameters like 'environmentId' and 'featureVersion' affect behavior, leaving gaps for the agent to navigate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds no additional meaning beyond implying retrieval by ID, which is already covered. This meets the baseline of 3 when the schema does the heavy lifting, but no extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('a specific feature flag by ID'), making the purpose understandable. However, it doesn't explicitly distinguish this from sibling tools like 'listFeatureFlags' or 'archiveFeatureFlag', which would require more specific differentiation to earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'listFeatureFlags' for multiple flags or 'updateFeatureFlag' for modifications. It lacks context about prerequisites or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listFeatureFlagsC

List all feature flags in the specified environment

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentIdNoEnvironment ID (uses default if not provided)
pageSizeNoNumber of items per page (1-100)
cursorNoPagination cursor for next page
tagsNoFilter by tags
orderByNoField to order by
orderDirectionNoOrder direction
searchKeywordNoSearch keyword for feature name or ID
maintainerNoFilter by maintainer email
archivedNoFilter by archived status

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions listing 'all' feature flags but doesn't clarify pagination behavior (implied by cursor/pageSize parameters), rate limits, authentication requirements, or what 'all' means in context of filters. The description is minimal and lacks important operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a list operation and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the relationship between parameters (e.g., how pagination works with filters), what the output looks like, or important behavioral aspects. The high parameter count and lack of structured metadata require more descriptive context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds no additional parameter semantics beyond implying environment filtering. This meets the baseline of 3 when schema coverage is high, but doesn't provide extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('feature flags') with scope ('in the specified environment'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'getFeatureFlag' which retrieves a single flag, leaving some ambiguity about when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'getFeatureFlag' for single flag retrieval or 'searchKeyword' parameter for filtered searches. It mentions 'specified environment' but doesn't explain environment selection or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateFeatureFlagC

Update an existing feature flag

ParametersJSON 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

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, or what the response looks like. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens during updates (e.g., partial vs. full updates), error conditions, or return values, leaving significant gaps in understanding how to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all 8 parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('an existing feature flag'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'archiveFeatureFlag' or 'createFeatureFlag', which also modify feature flags in different ways.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'archiveFeatureFlag' or 'createFeatureFlag'. It doesn't mention prerequisites, such as needing an existing feature flag ID, or contextual factors like whether this is for routine updates versus major changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: archive, create, get, list, and update are all unique actions targeting feature flags. The descriptions reinforce this by specifying distinct operations (e.g., 'make it inactive' vs. 'create a new feature flag'), making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., archiveFeatureFlag, createFeatureFlag) with identical casing (camelCase) and the same noun ('FeatureFlag') throughout. This predictable pattern enhances readability and agent usability.

Tool Count5/5

With 5 tools, the count is well-scoped for managing feature flags, covering core CRUD operations (create, get, update, list) plus archiving. Each tool earns its place without bloat, aligning with typical server scopes of 3-15 tools for focused domains.

Completeness5/5

The tool set provides complete lifecycle coverage for feature flags: creation, retrieval (get and list), updating, and archiving (deactivation). No obvious gaps exist, as agents can perform all essential operations without dead ends in this domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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