npm package: @iflow-mcp/unleash-mcp
Description: MCP server implementation for Unleash feature flags integration
Author: cuongtl1992
Latest version: 1.0.2

# Unleash MCP Server

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

<a href="https://glama.ai/mcp/servers/@cuongtl1992/unleash-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@cuongtl1992/unleash-mcp/badge" />
</a>

## 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

## Table of Contents

- [Requirements](#requirements)
- [Installation](#installation)
- [Architecture](#architecture)
- [Configuration](#configuration)
- [Development](#development)
- [Contributing](#contributing)
- [License](#license)

## Requirements

- Node.js (v18 or higher)
- TypeScript (v5.0 or higher)
- Access to an Unleash server instance

## Installation

```bash
# 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

```bash
# Compile TypeScript
npm run build

# Run the server
npm start
```

### Testing

```bash
# Run tests
npm test
```

### Inspecting
```bash
# 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:
```json
{
  "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!

<p align="center">
  <img src="https://raw.githubusercontent.com/cuongtl1992/mcp-dbs/main/assets/bmc_qr.png" alt="Buy Me A Coffee QR Code" width="200">
</p>

Scan the QR code above or [click here](https://www.buymeacoffee.com/cuongtl1992) to support the development of this project.

## License

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