npm package: @openfeature/mcp
Description: <!-- markdownlint-disable MD033 --> <!-- x-hide-in-docs-start --> <p align="center">   <picture>     <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/open-feature/community/0e23508c163a6a1ac8c0ced3e4bd78faafe627c7/ass
Latest version: 0.0.20

<!-- markdownlint-disable MD033 -->
<!-- x-hide-in-docs-start -->
<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/open-feature/community/0e23508c163a6a1ac8c0ced3e4bd78faafe627c7/assets/logo/horizontal/white/openfeature-horizontal-white.svg" />
    <img align="center" alt="OpenFeature Logo" src="https://raw.githubusercontent.com/open-feature/community/0e23508c163a6a1ac8c0ced3e4bd78faafe627c7/assets/logo/horizontal/black/openfeature-horizontal-black.svg" />
  </picture>
</p>

<h2 align="center">OpenFeature MCP</h2>

[OpenFeature](https://openfeature.dev) is an open specification that provides a vendor-agnostic, community-driven API for feature flagging that works with your favorite feature flag management tool or in-house solution.

## Overview

> **⚠️ Active Development**: This project is in active development. Features and APIs may change.
<!-- x-hide-in-docs-end -->

The **OpenFeature Model Context Protocol (MCP) Server** enables AI coding assistants to interact with OpenFeature through a standardized protocol.
It provides SDK installation guidance and feature flag evaluation capabilities directly within your AI-powered development environment.

The OpenFeature MCP Server is a local tool that connects AI coding assistants (like **Cursor**, **Claude Code**, **VS Code**, and **Windsurf**) to OpenFeature functionality.
It acts as a bridge between your AI assistant and OpenFeature capabilities, enabling intelligent code generation and migration, SDK installation guidance, and feature flag evaluation.

This server is published to the [MCP Registry](https://registry.modelcontextprotocol.io) under `dev.openfeature/mcp`.

> **⚠️ AI Agent Behavior**: AI agents are non-deterministic and may not complete tasks correctly. Always manually review their changes before committing. If you encounter issues, please [open an issue](https://github.com/open-feature/mcp/issues) with details about your AI agent (e.g., Claude Code + Sonnet 4.5, Cursor + gpt-5-codex) with the commands you used and the behavior you saw.

## Quick Start

### NPX Install

The easiest way to use the OpenFeature MCP Server is through NPX, which requires no installation:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"]
    }
  }
}
```

### NPM Global Install

You can install the MCP server globally:

```bash
npm install -g @openfeature/mcp
```

Then configure your AI assistant to use the global installation:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "openfeature-mcp"
    }
  }
}
```

## AI Assistant Configuration

### Cursor

<a href="cursor://anysphere.cursor-deeplink/mcp/install?name=OpenFeature&config=eyJjb21tYW5kIjogIm5weCIsICJhcmdzIjogWyIteSIsICJAb3BlbmZlYXR1cmUvbWNwIl19Cg==" class="mcp-install-button" target="_blank" rel="noopener noreferrer">📦 Install in Cursor</a>

To open Cursor and automatically add the OpenFeature MCP, click the install button above.

Alternatively, navigate to `Cursor Settings` -> `Tools & MCP` -> `New MCP Server` and add to `~/.cursor/mcp_settings.json`:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"]
    }
  }
}
```

### VS Code

<a href="https://vscode.dev/redirect/mcp/install?name=OpenFeature&config=%7B%22command%22%3A%20%22npx%22%2C%20%22args%22%3A%20%5B%22-y%22%2C%20%22%40openfeature%2Fmcp%22%5D%7D" class="mcp-install-button" target="_blank" rel="noopener noreferrer">📦 Install in VS Code</a>

To open VS Code and automatically add the OpenFeature MCP, click the install button above.
For more details, see the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/customization/mcp-servers).

Alternatively, add to `.vscode/mcp.json` in your project:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"],
      "env": { // Optional environment variables
        "OPENFEATURE_OFREP_BASE_URL": "<your-base-url>",
        "OPENFEATURE_OFREP_API_KEY": "<your-api-key>"
      }
    }
  }
}
```

### Claude Code

Add the server via the Claude Code CLI:

```bash
claude mcp add --transport stdio openfeature npx -y @openfeature/mcp
```

Then manage the connection with `/mcp` in the CLI.

### Windsurf

In the `Manage MCP servers` raw config, add:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"]
    }
  }
}
```

### Codex CLI

Edit `~/.codex/config.toml`:

```toml
[mcp_servers.openfeature]
command = "npx"
args = ["-y", "@openfeature/mcp"]
```

Restart Codex CLI after saving.

### Gemini CLI

Edit `~/.gemini/settings.json`:

```json
{
  "mcpServers": {
    "OpenFeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"]
    }
  }
}
```

Restart Gemini CLI after saving.

### Claude Desktop

Edit your Claude Desktop config at:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

Add the following configuration:

```json
{
  "mcpServers": {
    "openfeature": {
      "command": "npx",
      "args": ["-y", "@openfeature/mcp"]
    }
  }
}
```

Restart Claude Desktop after saving.

## Available Tools

The OpenFeature MCP Server provides two main tools accessible to AI assistants:

### SDK Installation Guide: `install_openfeature_sdk`

Fetches installation instructions for OpenFeature SDKs in various languages and frameworks. Optionally includes provider-specific setup documentation.

#### SDK Tool Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technology` | string | Yes | Target language/framework (see supported list below) |
| `providers` | string[] | No | Provider identifiers to include installation instructions |

#### Supported Technologies

The technologies list is built from the available `prompts/*.md`, updated automatically using `scripts/build-prompts.js`

| Technology | SDK |
|------------|-----|
| `android` | Android Kotlin SDK |
| `dotnet` | .NET SDK |
| `go` | Go SDK |
| `ios` | iOS Swift SDK |
| `java` | Java SDK |
| `javascript` | JavaScript Web SDK |
| `nestjs` | NestJS SDK |
| `nodejs` | Node.js SDK |
| `php` | PHP SDK |
| `python` | Python SDK |
| `react` | React SDK |
| `ruby` | Ruby SDK |

#### Supported Providers

The provider list is automatically sourced from the OpenFeature ecosystem (`open-feature/openfeature.dev` repo).

See `scripts/build-providers.js` for details on how the provider list is maintained.

### OFREP Flag Evaluation: `ofrep_flag_eval`

Evaluate feature flags using the OpenFeature Remote Evaluation Protocol (OFREP).
Supports both single flag and bulk evaluation.

#### OFREP Tool Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `base_url` | string | No | Base URL of your OFREP-compatible flag service |
| `flag_key` | string | No | Flag key for single evaluation (omit for bulk) |
| `context` | object | No | Evaluation context (e.g., `{ targetingKey: "user-123" }`) |
| `etag` | string | No | ETag for bulk evaluation caching |
| `auth` | object | No | Authentication configuration |
| `auth.bearer_token` | string | No | Bearer token for authorization |
| `auth.api_key` | string | No | API key for authorization |

#### OFREP Configuration

To use OFREP flag evaluation features, configure authentication and endpoint details. The server checks configuration in this priority order:

1. **Environment Variables**
   - `OPENFEATURE_OFREP_BASE_URL` or `OFREP_BASE_URL`
   - `OPENFEATURE_OFREP_BEARER_TOKEN` or `OFREP_BEARER_TOKEN`
   - `OPENFEATURE_OFREP_API_KEY` or `OFREP_API_KEY`

2. **Configuration File**: `~/.openfeature-mcp.json`

Example `~/.openfeature-mcp.json`:

```json
{
  "OFREP": {
    "baseUrl": "https://flags.example.com",
    "bearerToken": "<your-token>",
    "apiKey": "<your-api-key>"
  }
}
```

You can override the config file path using the `OPENFEATURE_MCP_CONFIG_PATH` environment variable.

> **Note**: All logs are written to stderr. The MCP protocol messages use stdout.

## MCP Usage Examples

### SDK Installation Example

> "install the OpenFeature SDK for Node.js with the flagd provider"

The AI will use the MCP to fetch relevant installation instructions and attempt to install the OpenFeature SDK with the correct provider.

### Flag Evaluation Example

When interacting with your AI assistant:

> "Can you check the value of the 'new-checkout-flow' feature flag for 'user-123'?"

The AI will use the MCP to evaluate the flag using OFREP and provide you with the result, along with additional metadata like variant and reason.

<!-- x-hide-in-docs-start -->
## Resources

- **NPM Package**: [@openfeature/mcp](https://www.npmjs.com/package/@openfeature/mcp)
- **MCP Registry**: [dev.openfeature/mcp](https://registry.modelcontextprotocol.io)
- **OpenFeature Documentation**: [openfeature.dev](https://openfeature.dev)
- **CNCF Slack**: Join [#openfeature](https://cloud-native.slack.com/archives/C0344AANLA1)

## Get Involved

The OpenFeature MCP Server is an open-source project maintained by the OpenFeature community. We welcome contributions:

- **Report Issues**: [GitHub Issues](https://github.com/open-feature/mcp/issues)
- **Contribute Code**: [Contributing Guide](https://github.com/open-feature/mcp/blob/main/CONTRIBUTING.md)
- **Suggest Features**: Share ideas in the CNCF Slack [#openfeature](https://cloud-native.slack.com/archives/C0344AANLA1) channel
- **Improve Documentation**: Help us improve SDK installation guides and examples

Join the [CNCF Slack](https://communityinviter.com/apps/cloud-native/cncf) to get involved.
<!-- x-hide-in-docs-end -->