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 the full burden of behavioral disclosure. It states the action ('archive') and outcome ('make it inactive'), but doesn't mention critical details like whether this is reversible, requires specific permissions, affects audit trails, or has side effects on dependent systems. This is a significant gap for a mutation tool.

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 front-loaded with the core action and outcome, making it easy to scan and understand quickly without unnecessary elaboration.

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 complexity of archiving (a mutation operation), no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like reversibility, permissions, or response format, which are essential for safe and effective tool invocation by 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?

The input schema has 100% description coverage, so the schema fully documents all three parameters. The description adds no additional meaning beyond what the schema provides, such as explaining the purpose of 'comment' beyond audit trails or default behavior for 'environmentId'. Baseline 3 is appropriate when the 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 ('archive') and resource ('feature flag') with the outcome ('make it inactive'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'updateFeatureFlag', which might also modify flag status, leaving some room for confusion.

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' or 'createFeatureFlag'. It lacks context about prerequisites, such as whether the flag must be active, or exclusions, such as not using it for temporary deactivation.

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 provided, the description carries the full burden of behavioral disclosure. It states this is a creation operation but doesn't mention any behavioral traits like required permissions, whether the flag becomes active immediately, rate limits, or what happens on duplicate IDs. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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, clear sentence that immediately states the tool's purpose without unnecessary words. It's perfectly front-loaded and wastes no space, making it easy for an agent to parse quickly while scanning available tools.

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 insufficient. It doesn't explain what happens after creation, error conditions, or how this tool fits into the broader feature flag lifecycle with its siblings. The agent would need to rely heavily on the schema alone, missing important contextual information.

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%, so the schema already documents all 9 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, not explaining relationships between parameters or providing usage examples. This meets the baseline expectation when schema coverage is complete.

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 in the specified environment'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'updateFeatureFlag' or 'archiveFeatureFlag' beyond the basic verb difference, missing an opportunity to clarify the specific creation context.

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' or 'archiveFeatureFlag'. It mentions 'specified environment' but doesn't explain prerequisites, dependencies, or typical use cases, 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.

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 feature flag but doesn't describe what happens if the ID doesn't exist (e.g., error handling), whether it's idempotent, authentication needs, rate limits, or the return format. For a read operation with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

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 wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every part of the sentence earns its place by conveying 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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral traits (e.g., error handling, return format), usage context relative to siblings, and doesn't address what 'Get' entails beyond the basic action. For a tool with no annotations or output schema, more descriptive context is needed to fully inform an 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 input schema already documents all three parameters (id, environmentId, featureVersion) with clear descriptions. The description adds no additional meaning beyond implying 'id' is required (matching the schema's required field). Baseline 3 is appropriate as the schema does the heavy lifting, but the description doesn't compensate 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 ('Get') and resource ('a specific feature flag by ID'), making the purpose immediately understandable. It distinguishes from siblings like 'listFeatureFlags' by specifying retrieval of a single item rather than a collection. However, it doesn't explicitly contrast with other siblings like 'archiveFeatureFlag' or 'updateFeatureFlag' beyond the verb difference.

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. It doesn't mention prerequisites (e.g., needing an existing flag ID), exclusions (e.g., not for creating or modifying flags), or direct comparisons to siblings like 'listFeatureFlags' for bulk retrieval. Usage is implied by the verb 'Get' but lacks explicit context.

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 but only states it 'lists all' without disclosing key behaviors: it doesn't mention pagination (implied by 'cursor' parameter but not explained), rate limits, authentication needs, or that it might return partial results. The description is minimal and misses critical 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 front-loads the core purpose without unnecessary words. Every part ('List all feature flags in the specified environment') directly contributes to understanding the tool's function.

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 inadequate. It doesn't explain the return format (e.g., list structure, pagination tokens), error conditions, or how parameters interact (e.g., combining 'tags' and 'searchKeyword'). Given the complexity, more context is needed for effective use.

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 fully documents all 9 parameters. The description adds no parameter-specific information beyond implying environment filtering, which is already covered in the schema. This meets the baseline for high schema coverage but doesn't enhance 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 ('List all') and resource ('feature flags in the specified environment'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'getFeatureFlag' which might retrieve 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 flags or 'searchKeyword' parameter for filtered results. It lacks context about prerequisites, such as needing environment access, or exclusions like when not to use it for archived flags.

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 full burden for behavioral disclosure. 'Update an existing feature flag' implies a mutation operation, but it doesn't disclose critical traits like required permissions, whether changes are reversible, rate limits, or what happens to unspecified fields. For a mutation tool with 8 parameters and no 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 states the core purpose without any wasted words. It's appropriately sized for a tool with good schema coverage and gets straight to the point. Every word earns its place, making it easy for an agent 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 complexity (8 parameters, mutation operation) and lack of both annotations and output schema, the description is insufficiently complete. It doesn't explain what fields can be updated, what the response looks like, or behavioral constraints. For a feature flag management tool with multiple sibling alternatives, more context about scope and limitations would be needed for effective agent use.

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%, with all 8 parameters well-documented in the input schema. The description adds no parameter-specific information beyond what's in the schema, so it doesn't enhance understanding of individual parameters. However, the baseline score of 3 is appropriate since the schema already provides comprehensive parameter documentation.

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. It doesn't differentiate from sibling tools like 'createFeatureFlag' or 'archiveFeatureFlag', but the verb 'Update' versus 'Create' or 'Archive' provides basic distinction. The description is specific enough to understand what the tool does without being tautological.

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 (e.g., that the feature flag must exist), exclusions, or contextual factors that would help an agent choose between sibling tools. The agent 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedarchiveFeatureFlag
    • First observedcreateFeatureFlag
    • First observedgetFeatureFlag
    • First observedlistFeatureFlags
    • First observedupdateFeatureFlag

TDQS

A3.5/5.0

Scored across 5 tools

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers