Skip to main content
Glama
ZhipingYang

FFS MCP Server

by ZhipingYang
README.md
# FFS MCP Server

MCP (Model Context Protocol) Server for managing FFS (Feature Flag Service).

## Features

- 🔐 **ffs_get_user_info**: Get AccountId and ExtensionId from RingCentral credentials
- 🔍 **ffs_search_flag**: Search for FFS flags by keyword
- 📋 **ffs_get_flag_options**: Get all available options for a Flag
- ✅ **ffs_check_account**: Check account status in a Flag
- ✏️ **ffs_update_account**: Update account's Flag value

## Configuration

The server requires the following environment variables:

| Variable | Description | Required |
|----------|-------------|----------|
| `FFS_BASE_URL` | FFS API base URL | ✅ |
| `FFS_RC_API_URL` | RingCentral API URL | ✅ |
| `FFS_RC_CLIENT_CREDENTIALS` | Base64 encoded client credentials | ✅ |

## Usage with npx (Recommended)

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "ffs": {
      "command": "npx",
      "args": ["@xcodeyang/ffs-mcp-server"],
      "env": {
        "FFS_BASE_URL": "http://your-ffs-server:8080",
        "FFS_RC_API_URL": "https://your-rc-api-server",
        "FFS_RC_CLIENT_CREDENTIALS": "your-base64-credentials"
      }
    }
  }
}
```

### Augment (VS Code)

```json
{
  "augment.advanced": {
    "mcpServers": [
      {
        "name": "ffs",
        "command": "npx",
        "args": ["@xcodeyang/ffs-mcp-server"],
        "env": {
          "FFS_BASE_URL": "http://your-ffs-server:8080",
          "FFS_RC_API_URL": "https://your-rc-api-server",
          "FFS_RC_CLIENT_CREDENTIALS": "your-base64-credentials"
        }
      }
    ]
  }
}
```

## Publishing

```bash
# Build first
npm run build

# Publish to RingCentral Nexus registry
npm publish
```

## Tools

### ffs_get_user_info
Get AccountId and ExtensionId from RingCentral credentials.

**Input:**
- `username`: RingCentral user email
- `password`: RingCentral password

**Output:**
- `accountId`: Company-level ID (affects all users in the company)
- `extensionId`: User-level ID (affects only this user)

### ffs_search_flag
Search for FFS flags by keyword.

**Input:**
- `keyword`: Search keyword or complete Flag ID

### ffs_get_flag_options
Get all available options for a Flag.

**Input:**
- `flagId`: Complete FFS Flag ID

**Output:**
- List of options with `valueId` (needed for updates)

### ffs_check_account
Check account status in a Flag.

**Input:**
- `flagId`: Complete FFS Flag ID
- `id`: AccountId or ExtensionId

### ffs_update_account
Update account's Flag value using MCP Auto Condition.

**Input:**
- `flagId`: Complete FFS Flag ID
- `id`: AccountId or ExtensionId
- `targetValueId`: Value ID from ffs_get_flag_options

## Development

```bash
# Run in development mode
npm run dev

# Build
npm run build

# Test tools
npx tsx test-tools.ts
```

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: checking account status, getting flag options, retrieving user info, searching flags, and updating accounts. There is no overlap in functionality, and the descriptions make the boundaries explicit, preventing agent misselection.

Naming Consistency5/5

All tools follow a consistent 'ffs_verb_noun' pattern with snake_case, such as ffs_check_account and ffs_update_account. This predictability makes the tool set easy to navigate and understand at a glance.

Tool Count5/5

With 5 tools, the server is well-scoped for managing FFS flags and accounts. Each tool serves a specific, necessary function without redundancy, fitting typical expectations for a focused utility server.

Completeness4/5

The tool set covers core CRUD-like operations for FFS management: checking, searching, getting info, and updating. A minor gap exists in not having a tool to create or delete flags, but the available tools support key workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues