Skip to main content
Glama
Unleash MCP (Feature Toggle)

Unleash MCP (Feature Toggle)

by cuongtl1992

Unleash MCP Server

A Model Context Protocol (MCP) server implementation that integrates with Unleash Feature Toggle system.

Overview

This project provides a bridge between LLM applications and Unleash feature flag system using the Model Context Protocol (MCP). It allows AI applications to:

  1. Check feature flag status from Unleash

  2. Expose feature flag information to LLMs

  3. Create feature flag

  4. Update feature flag

  5. List all projects

Related MCP server: OpsLevel MCP

Table of Contents

Requirements

  • Node.js (v18 or higher)

  • TypeScript (v5.0 or higher)

  • Access to an Unleash server instance

Installation

# Install dependencies
npm i

Architecture

The Unleash MCP Server acts as a bridge between LLM applications and the Unleash feature flag system:

+----------------+      +-------------------+      +----------------+
|                |      |                   |      |                |
|  LLM App       | <--> |  Unleash MCP      | <--> |  Unleash API   |
|  (MCP Client)  |      |  Server           |      |  Server        |
|                |      |                   |      |                |
+----------------+      +-------------------+      +----------------+

Development

Project Structure

unleash-mcp-server/
├── src/
│   ├── index.ts              # Main entry point
│   ├── server.ts             # Server implementation
│   ├── config.ts             # Configuration handling
│   ├── transport/            # MCP transport implementations
│   │   ├── http.ts           # HTTP/SSE transport
│   │   └── stdio.ts          # STDIO transport
│   ├── unleash/              # Unleash API client implementations
│   │   ├── unleash-client.ts # Main Unleash client
│   │   ├── get-feature-flag.ts
│   │   └── get-all-projects.ts
│   ├── resources/            # MCP resource implementations
│   │   ├── flags.ts          # Feature flag resources
│   │   └── projects.ts       # Project resources
│   ├── tools/                # MCP tool implementations
│   │   ├── get-flag.ts       # Get feature flag tool
│   │   └── get-projects.ts   # Get projects tool
│   └── prompts/              # MCP prompt implementations
│       ├── flag-check.ts     # Check single flag
│       └── batch-flag-check.ts # Check multiple flags
├── tests/                    # Tests
└── package.json              # Project configuration

Coding Standards

  • Naming Conventions:

    • Files: Use kebab-case.ts (e.g., feature-flag.ts)

    • Classes: Use PascalCase (e.g., UnleashClient)

    • Functions/Methods: Use camelCase (e.g., getFlagStatus)

    • Interfaces/Types: Use PascalCase (e.g., FeatureFlagConfig)

  • Imports:

    • Always include .js extension when importing local files

    • Follow import ordering: Node.js built-ins → External dependencies → Local imports

    • Use named exports over default exports

  • Documentation:

    • Use JSDoc comments for public functions, classes, and interfaces

    • Document complex logic with inline comments

Building

# Compile TypeScript
npm run build

# Run the server
npm start

Testing

# Run tests
npm test

Inspecting

# MCP stdio inspect
npm run build
npx @modelcontextprotocol/inspector node dist/index.js

# MCP sse inspect
npm start
npx @modelcontextprotocol/inspector

How to use

For Claude or Cursor config:

{
  "mcpServers": {
    "unleash": {
      "command": "npx",
      "args": [
        "-y",
        "unleash-mcp"
      ],
      "env": {
        "UNLEASH_URL": "YOUR_UNLEASH_END_POINT",
        "UNLEASH_API_TOKEN": "YOUR_UNLEASH_API_TOKEN",
        "MCP_TRANSPORT": "stdio",
        "MCP_HTTP_PORT": 3001
      }
    }
  }
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support the Project

If you find this project helpful, consider buying me a coffee!

Scan the QR code above or click here to support the development of this project.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

21 tools
addFeatureTagC

Add a tag to a feature flag

Inputs: featureName (required), tagType (required), tagValue (required).

addStrategyC

Add a strategy to a feature flag in a specific environment

Inputs: environment (required), featureName (required), projectId (required), strategyName (required), +2 more.

archiveFlagC

Archive a feature flag in a specific project

Inputs: featureName (required), projectId (required).

createFlagC

Create a new feature flag in an Unleash project

Inputs: name (required), project (required), description, impressionData, +1 more.

deleteStrategyC

Delete a strategy configuration from a feature flag in the specified environment

Inputs: environment (required), featureName (required), projectId (required), strategyId (required).

disableFlagC

Disables a feature flag in the specified environment

Inputs: environment (required), featureName (required), projectId (required).

enableFlagC

Enables a feature flag in the specified environment

Inputs: environment (required), featureName (required), projectId (required).

getEnvironmentsB

Get a list of all environments configured in Unleash

getFeatureTagsC

Get a list of all tags for a specific feature

Inputs: featureName (required).

getFeatureTypesB

Get a list of all feature types with their descriptions and lifetimes

getFlagC

Get detailed information about a feature flag

Inputs: flagName (required).

getProjectFeatureC

Get detailed information about a feature flag in a specific project

Inputs: featureName (required), projectId (required).

getProjectFeaturesC

Get all features for a specific project from the Unleash repository

Inputs: projectId (required).

getProjectsB

Get a list of all projects

listFlagsB

Get a list of all feature flags

markFeaturesStaleC

Marks features as stale or not stale in the specified project

Inputs: features (required), projectId (required), stale (required).

patchFlagB

Modify specific properties of an existing feature flag in an Unleash project using JSON Patch operations

Inputs: featureName (required), patches (required), projectId (required).

setStrategySortOrderC

Set the sort order of strategies for a feature flag in a specific environment

Inputs: environment (required), featureName (required), projectId (required), strategyIds (required).

updateFlagC

Update an existing feature flag in an Unleash project

Inputs: featureName (required), projectId (required), archived, description, +3 more.

updateStrategyC

Update a strategy configuration for a feature flag in the specified environment

Inputs: environment (required), featureName (required), name (required), projectId (required), +3 more.

validateFeatureNameC

Validate if a feature flag name is valid and available for use

Inputs: featureName (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap between getFlag and getProjectFeature, and between updateFlag and patchFlag, which could cause minor confusion. However, descriptions clarify the differences (e.g., project-specific vs. general, full update vs. partial patch), so misselection is unlikely.

    Naming Consistency4/5

    Tool names generally follow a consistent verb_noun pattern (e.g., createFlag, deleteStrategy, getProjects), with minor deviations like addFeatureTag (noun_verb) and markFeaturesStale (verb_adjective_noun). The naming is readable and mostly predictable, though not perfectly uniform.

    Tool Count3/5

    With 21 tools, the count is on the higher side for a feature toggle server, bordering on heavy. While it covers many operations, it might feel overwhelming or redundant, such as having both listFlags and getProjectFeatures for listing features.

    Completeness5/5

    The tool set provides comprehensive CRUD and lifecycle coverage for feature flags, including creation, retrieval, updating, archiving, enabling/disabling, and strategy management. It also includes utility functions like validation and environment/project listing, leaving no obvious gaps for the domain.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers