rc-ffs-mcp
v1.0.0
Published
MCP server for RingCentral Feature Flag Service (FFS) - provides tools to search, create, and manage feature flags
Maintainers
Readme
RC FFS MCP Server
A Model Context Protocol (MCP) server for interacting with RingCentral Feature Flag Service (FFS).
Features
- search_flag: Search for feature flags by name (exact or fuzzy match)
- list_flags: List all feature flags with filtering options
- create_flag: Create new feature flags
- update_flag: Update flag properties (description, status, public)
- update_rules: Update or replace all rules for a flag
- add_rule: Add a single rule to an existing flag
Installation
Install from npm
npm install -g rc-ffs-mcpOr use directly with npx:
npx rc-ffs-mcpInstall from source
git clone https://github.com/ringcentral/rc-ffs-mcp.git
cd rc-ffs-mcp
npm install
npm run buildCursor IDE Configuration
Add the following to your Cursor MCP configuration file (~/.cursor/mcp.json):
Using npm global install
{
"mcpServers": {
"rc_ffs_mcp": {
"command": "rc-ffs-mcp",
"env": {
"FFS_BASE_URL": "http://your-ffs-server:8080"
}
}
}
}Using npx
{
"mcpServers": {
"rc_ffs_mcp": {
"command": "npx",
"args": ["-y", "rc-ffs-mcp"],
"env": {
"FFS_BASE_URL": "http://your-ffs-server:8080"
}
}
}
}Using local installation
{
"mcpServers": {
"rc_ffs_mcp": {
"command": "node",
"args": ["/path/to/rc-ffs-mcp/dist/index.js"],
"env": {
"FFS_BASE_URL": "http://your-ffs-server:8080"
}
}
}
}Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| FFS_BASE_URL | Base URL of the FFS server | http://aws16-c01-ffs01.ffs.svc.c01.eks02.k8s.aws16.lab.nordigy.ru:8080 |
Available Tools
1. search_flag
Search for a feature flag by name.
Parameters:
name(required): The name/ID of the feature flagexact(optional): If true, perform exact match. If false, perform fuzzy search (default: true)
Example:
{
"name": "my_feature_flag",
"exact": true
}2. list_flags
List all feature flags with optional filtering.
Parameters:
limit(optional): Maximum number of flags to return (default: 100)statusFilter(optional): Filter by status: "Active", "Inactive", "Archived", or "All" (default: "All")
Example:
{
"limit": 50,
"statusFilter": "Active"
}3. create_flag
Create a new feature flag.
Parameters:
id(required): Unique ID/name of the flagdataType(required): One of "Boolean", "Integer", "String", "JSON", "ListString", "ListInteger"description(optional): Description of the flagstatus(optional): Initial status: "Active", "Inactive", "Archived" (default: "Inactive")public(optional): Whether the flag is public (default: true)
Example:
{
"id": "my_new_flag",
"description": "My new feature flag",
"dataType": "Boolean",
"status": "Inactive",
"public": true
}4. add_rule
Add a single rule to an existing feature flag.
Parameters:
flagId(required): ID of the feature flagvalue(required): Value to return when rule matchesvalueName(optional): Name for the valuevalueDescription(optional): Description for the valueconditions(required): Array of conditions
Condition Properties:
dimension: One of "GlipUserId", "ExtensionId", "AccountId", "AppId", "BrandId", "EnvName", "EndpointId", "GlipCompanyId"operator: One of "Equal", "NotEqual", "Contains", "StartsWith", "EndsWith", "IsOneOf", "NotOneOf", "LessThan", "GreaterThan", etc.argumentDataType: "Integer", "String", or "ListString"argument: Value to compare againstdescription(optional): Description of the condition
Example:
{
"flagId": "my_flag",
"value": "true",
"valueName": "enabled",
"conditions": [
{
"dimension": "AccountId",
"operator": "Equal",
"argumentDataType": "Integer",
"argument": "12345",
"description": "Enable for account 12345"
}
]
}5. update_rules
Replace all rules for a feature flag.
Parameters:
flagId(required): ID of the feature flagrules(required): Array of rules
6. update_flag
Update flag properties.
Parameters:
flagId(required): ID of the feature flagdescription(optional): New descriptionstatus(optional): New statuspublic(optional): New public visibility
Supported Dimensions
- GlipUserId
- ExtensionId
- AccountId
- AppId
- BrandId
- EnvName
- EndpointId
- GlipCompanyId
Supported Operators
- Equal, NotEqual
- Contains, StartsWith, EndsWith
- NotStartsWith, NotEndsWith
- IsOneOf, NotOneOf
- LessThan, LessThanOrEqual
- GreaterThan, GreaterThanOrEqual
- SegmentMatch, NotSegmentMatch
- Percent
- SemVer comparisons (SemVerEqual, SemVerLessThan, etc.)
License
MIT
