# ConfigCat/mcp-server [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/configcat/mcp-server  
**GitHub Stars:** 17  
**npm Downloads (last month):** 1979  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/configcat-mcp-server

## Description
MCP server for interacting with ConfigCat feature flag platform. Supports managing feature flags, configs, environments, products and organizations.

## Tools
Capabilities this server exposes over MCP:

- **get-change-request** — Returns the details of a specific Change Request.
- **update-change-request** — Updates the metadata of a Change Request, such as title, note, schedule, etc.
- **list-change-requests** — Returns Change Requests of a Product with optional filtering and pagination.
- **list-organizations** — This endpoint returns the list of the Organizations that belongs to the user.
- **list-products** — This endpoint returns the list of the Products that belongs to the user.
- **list-tags** — This endpoint returns the list of the Tags in a 
specified Product, identified by the `productId` parameter.
- **create-tag** — This endpoint creates a new Tag in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-webhooks** — This endpoint returns the list of the Webhooks that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-configs** — This endpoint returns the list of the Configs that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **create-config** — This endpoint creates a new Config in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-environments** — This endpoint returns the list of the Environments that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **create-environment** — This endpoint creates a new Environment in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-permission-groups** — This endpoint returns the list of the Permission Groups that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **create-permission-group** — This endpoint creates a new Permission Group in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-integrations** — This endpoint returns the list of the Integrations that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **create-integration** — This endpoint creates a new Integration in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.

The Parameters dictionary differs for each IntegrationType:
- Datadog
  - `apikey`: Required. Datadog API key.
  - `site`: Datadog site. Available values: `Us`, `Eu`, `Us1Fed`, `Us3`, `Us5`. Default: `Us`.
- Slack  
  Connecting the Slack integration through the Public Management API will not post messages with the ConfigCat Feature Flags Slack app but with an incoming webhook.
  - `incoming_webhook.url`: Required. The [incoming webhook URL](https://api.slack.com/messaging/webhooks) where the integration should post messages.
  - `includeSensitiveData`: Set to "true" to include [sensitive (hashed) comparison values](https://configcat.com/docs/targeting/targeting-rule/user-condition/#confidential-text-comparators). By default, the integration will mask these values in the posted messages. We recommend hiding sensitive comparison values for shared or public Slack channels.
- Amplitude
  - `apiKey`: Required. Amplitude API Key.
  - `secretKey`: Required. Amplitude Secret Key.
- Mixpanel
  - `serviceAccountUserName`: Required. Mixpanel Service Account Username.
  - `serviceAccountSecret`: Required. Mixpanel Service Account Secret.
  - `projectId`: Required. Mixpanel Project ID.
  - `server`: Mixpanel Server. Available values: `StandardServer`, `EUResidencyServer`. Default: `StandardServer`.
- Twilio Segment
  - `writeKey`: Required. Twilio Segment Write Key.
  - `server`: Twilio Segment Server. Available values: `Us`, `Eu`. Default: `Us`.
- PubNub (work in progress)
- **list-segments** — This endpoint returns the list of the Segments that belongs to the given Product identified by the
`productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **create-segment** — This endpoint creates a new Segment in a specified Product 
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **list-settings** — This endpoint returns the list of the Feature Flags and Settings defined in a 
specified Config, identified by the `configId` parameter.
- **create-setting** — This endpoint creates a new Feature Flag or Setting in a specified Config
identified by the `configId` parameter.

**Important:** The `key` attribute must be unique within the given Config.
- **list-auditlogs** — This endpoint returns the list of Audit log items for a given Product and the result can be optionally filtered by Config and/or Environment.
- **list-staleflags** — This endpoint returns the list of Zombie (stale) flags for a given Product 
and the result can be optionally filtered by various parameters.
- **get-code-references** — Get References for Feature Flag or Setting
- **get-config** — This endpoint returns the metadata of a Config
identified by the `configId`.
- **update-config** — This endpoint updates a Config identified by the `configId` parameter.
- **delete-config** — This endpoint removes a Config identified by the `configId` parameter.
- **get-environment** — This endpoint returns the metadata of an Environment 
identified by the `environmentId`.
- **update-environment** — This endpoint updates an Environment identified by the `environmentId` parameter.
- **delete-environment** — This endpoint removes an Environment identified by the `environmentId` parameter.
If the `cleanupAuditLogs` flag is set to true, it also deletes the audit log records related to the environment
(except for the `Created a new environment` and `Deleted an environment` records).
- **get-permission-group** — This endpoint returns the metadata of a Permission Group 
identified by the `permissionGroupId`.
- **update-permission-group** — This endpoint updates a Permission Group identified by the `permissionGroupId` parameter.
- **delete-permission-group** — This endpoint removes a Permission Group identified by the `permissionGroupId` parameter.
- **get-integration** — This endpoint returns the metadata of an Integration
identified by the `integrationId`.
- **update-integration** — This endpoint updates a Config identified by the `integrationId` parameter.

The Parameters dictionary differs for each IntegrationType:
- Datadog
  - `apikey`: Required. Datadog API key.
  - `site`: Datadog site. Available values: `Us`, `Eu`, `Us1Fed`, `Us3`, `Us5`. Default: `Us`.
- Slack  
  Connecting the Slack integration through the Public Management API will not post messages with the ConfigCat Feature Flags Slack app but with an incoming webhook.
  - `incoming_webhook.url`: Required. The [incoming webhook URL](https://api.slack.com/messaging/webhooks) where the integration should post messages.
  - `includeSensitiveData`: Set to "true" to include [sensitive (hashed) comparison values](https://configcat.com/docs/targeting/targeting-rule/user-condition/#confidential-text-comparators). By default, the integration will mask these values in the posted messages. We recommend hiding sensitive comparison values for shared or public Slack channels.
- Amplitude
  - `apiKey`: Required. Amplitude API Key.
  - `secretKey`: Required. Amplitude Secret Key.
- Mixpanel
  - `serviceAccountUserName`: Required. Mixpanel Service Account Username.
  - `serviceAccountSecret`: Required. Mixpanel Service Account Secret.
  - `projectId`: Required. Mixpanel Project ID.
  - `server`: Mixpanel Server. Available values: `StandardServer`, `EUResidencyServer`. Default: `StandardServer`.
- Twilio Segment
  - `writeKey`: Required. Twilio Segment Write Key.
  - `server`: Twilio Segment Server. Available values: `Us`, `Eu`. Default: `Us`.
- PubNub (work in progress)
- **delete-integration** — This endpoint removes a Integration identified by the `integrationId` parameter.
- **get-sdk-keys** — This endpoint returns the SDK Key for your Config in a specified Environment.
- **list-organization-auditlogs** — This endpoint returns the list of Audit log items for a given Organization and the result can be optionally filtered by Product and/or Config and/or Environment.
- **list-organization-members** — This endpoint returns the list of Members that belongs 
to the given Organization, identified by the `organizationId` parameter.

The results may vary based on the access level of the user who calls the endpoint: 
- When it's called with Organization Admin privileges, the result will contain each member in the Organization.
- When it's called without Organization Admin privileges, the result will contain each Organization Admin along with members 
  of those products where the caller has `Team members and permission groups` (`canManageMembers`) permission.
- **list-pending-invitations-org** — This endpoint returns the list of pending invitations within the
given Organization identified by the `organizationId` parameter.
- **list-pending-invitations** — This endpoint returns the list of pending invitations within the
given Product identified by the `productId` parameter.
- **list-predefined-variations** — This endpoint returns the predefined variations along with their usages in the Environments for a Feature Flag or Setting identified by the `settingId` parameter.
- **update-predefined-variations** — This endpoint updates the predefined variations for a Feature Flag or Setting identified by the `settingId` parameter.
**Important:** You can only update a predefined variation's value if it is not used anywhere in your feature flags.
- **get-product** — This endpoint returns the metadata of a Product 
identified by the `productId`.
- **update-product** — This endpoint updates a Product identified by the `productId` parameter.
- **delete-product** — This endpoint removes a Product identified by the `productId` parameter.
- **list-product-members** — This endpoint returns the list of Members that belongs 
to the given Product, identified by the `productId` parameter.
- **get-product-preferences** — This endpoint returns the preferences of a Product
identified by the `productId`.
- **update-product-preferences** — This endpoint updates the preferences of a Product identified by the `productId` parameter.
- **get-change-request-proposed-changes** — Returns the proposed changes to the Settings included in a Change Request.
- **update-change-request-proposed-changes** — Updates the proposed changes to the Settings included in a Change Request.
- **get-segment** — This endpoint returns the metadata of a Segment
identified by the `segmentId`.
- **update-segment** — This endpoint updates a Segment identified by the `segmentId` parameter.
- **delete-segment** — This endpoint removes a Segment identified by the `segmentId` parameter.
- **get-setting** — This endpoint returns the metadata attributes of a Feature Flag or Setting 
identified by the `settingId` parameter.
- **replace-setting** — This endpoint replaces the whole value of a Feature Flag or Setting
identified by the `settingId` parameter.

**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't 
want to change in its original state. Not listing one means it will reset.
- **delete-setting** — This endpoint removes a Feature Flag or Setting from a specified Config, 
identified by the `configId` parameter.
- **update-setting** — This endpoint updates the metadata of a Feature Flag or Setting 
with a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Config.

Only the `name`, `hint` and `tags` attributes are modifiable by this endpoint.
The `tags` attribute is a simple collection of the [tag IDs](#operation/list-tags) attached to the given setting.

The advantage of using JSON Patch is that you can describe individual update operations on a resource
without touching attributes that you don't want to change.

For example: We have the following resource.
```json
{
  "settingId": 5345,
  "key": "myGrandFeature",
  "name": "Tihs is a naem with soem typos.",
  "hint": "This flag controls my grandioso feature.",
  "settingType": "boolean",
  "tags": [
    {
      "tagId": 0, 
      "name": "sample tag", 
      "color": "whale"
    }
  ]
}
```
If we send an update request body as below (it changes the `name` and adds the already existing tag with the id `2`):
```json
[
  {
    "op": "replace", 
    "path": "/name", 
    "value": "This is the name without typos."
  }, 
  {
    "op": "add", 
    "path": "/tags/-", 
    "value": 2
  }
]
```
Only the `name` and `tags` are updated and all the other attributes remain unchanged.
So we get a response like this:
```json
{
  "settingId": 5345, 
  "key": "myGrandFeature", 
  "name": "This is the name without typos.", 
  "hint": "This flag controls my grandioso feature.", 
  "settingType": "boolean", 
  "tags": [
    {
      "tagId": 0, 
      "name": "sample tag", 
      "color": "whale"
    }, 
    {
      "tagId": 2, 
      "name": "another tag", 
      "color": "koala"
    }
  ]
}
```
- **list-settings-by-tag** — This endpoint returns the list of the Settings that 
has the specified Tag, identified by the `tagId` parameter.
- **get-setting-value** — This endpoint returns the value of a Feature Flag or Setting 
in a specified Environment identified by the `environmentId` parameter.

The most important attributes in the response are the `value`, `rolloutRules` and `percentageRules`.
The `value` represents what the clients will get when the evaluation requests of our SDKs 
are not matching to any of the defined Targeting or Percentage Rules, or when there are no additional rules to evaluate.

The `rolloutRules` and `percentageRules` attributes are representing the current 
Targeting and Percentage Rules configuration of the actual Feature Flag or Setting 
in an **ordered** collection, which means the order of the returned rules is matching to the
evaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview).
- **replace-setting-value** — This endpoint replaces the whole value of a Feature Flag or Setting in a specified Environment.

Only the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.

**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't 
want to change in its original state. Not listing one means it will reset.

For example: We have the following resource.
```json
{
  "rolloutPercentageItems": [
    {
      "percentage": 30,
      "value": true
    },
    {
      "percentage": 70,
      "value": false
    }
  ],
  "rolloutRules": [],
  "value": false
}
```
If we send a replace request body as below:
```json
{
  "value": true
}
```
Then besides that the default value is set to `true`, all the Percentage Rules are deleted. 
So we get a response like this:
```json
{
  "rolloutPercentageItems": [],
  "rolloutRules": [],
  "value": true
}
```

The `rolloutRules` property describes two types of rules:

- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.
- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.
- **update-setting-value** — This endpoint updates the value of a Feature Flag or Setting 
with a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment.

Only the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.

The advantage of using JSON Patch is that you can describe individual update operations on a resource
without touching attributes that you don't want to change. It supports collection reordering, so it also 
can be used for reordering the targeting rules of a Feature Flag or Setting.

For example: We have the following resource.
```json
{
  "rolloutPercentageItems": [
    {
      "percentage": 30,
      "value": true
    },
    {
      "percentage": 70,
      "value": false
    }
  ],
  "rolloutRules": [],
  "value": false
}
```
If we send an update request body as below:
```json
[
  {
    "op": "replace",
    "path": "/value",
    "value": true
  }
]
```
Only the default value is going to be set to `true` and all the Percentage Rules are remaining unchanged.
So we get a response like this:
```json
{
  "rolloutPercentageItems": [
    {
      "percentage": 30,
      "value": true
    },
    {
      "percentage": 70,
      "value": false
    }
  ],
  "rolloutRules": [],
  "value": true
}
```

The `rolloutRules` property describes two types of rules:

- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.
- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.
- **get-setting-value-v2** — This endpoint returns the value of a Feature Flag or Setting
in a specified Environment identified by the `environmentId` parameter.

The most important fields in the response are the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute`.
The `defaultValue` represents what the clients will get when the evaluation requests of our SDKs
are not matching to any of the defined Targeting Rules, or when there are no additional rules to evaluate.

The `targetingRules` represents the current
Targeting Rule configuration of the actual Feature Flag or Setting
in an **ordered** collection, which means the order of the returned rules is matching to the
evaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).

The `percentageEvaluationAttribute` represents the custom [User Object](https://configcat.com/docs/targeting/user-object/) attribute that must be used for [percentage evaluation](https://configcat.com/docs/targeting/percentage-options/) of the Feature Flag or Setting.
- **replace-setting-value-v2** — This endpoint replaces the value and the Targeting Rules of a Feature Flag or Setting
in a specified Environment identified by the <a target="_blank" rel="noopener noreferrer" href="https://app.configcat.com/sdkkey">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.

Only the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.

**Important:** As this endpoint is doing a complete replace, it's important to set every other field that you don't
want to change to its original state. Not listing one means it will reset.

For example: We have the following resource of a Feature Flag.
```json
{
  "defaultValue": {
    "boolValue": false
  },
  "targetingRules": [
    {
      "conditions": [
        {
          "userCondition": {
            "comparisonAttribute": "Email",
            "comparator": "sensitiveTextEquals",
            "comparisonValue": {
              "stringValue": "test@example.com"
            }
          }
        }
      ],
      "percentageOptions": [],
      "value": {
        "boolValue": true
      }
    }
  ]
}
```
If we send a replace request body as below:
```json
{
  "defaultValue": {
    "boolValue": true
  }
}
```
Then besides that the default served value is set to `true`, all the Targeting Rules are deleted.
So we get a response like this:
```json
{
  "defaultValue": {
    "boolValue": true
  },
  "targetingRules": []
}
```
- **update-setting-value-v2** — This endpoint updates the value of a Feature Flag or Setting
with a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment.

Only the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.

The advantage of using JSON Patch is that you can describe individual update operations on a resource
without touching attributes that you don't want to change. It supports collection reordering, so it also
can be used for reordering the targeting rules of a Feature Flag or Setting.

For example: We have the following resource of a Feature Flag.
```json
{
  "defaultValue": {
    "boolValue": false
  },
  "targetingRules": [
    {
      "conditions": [
        {
          "userCondition": {
            "comparisonAttribute": "Email",
            "comparator": "sensitiveTextEquals",
            "comparisonValue": {
              "stringValue": "test@example.com"
            }
          }
        }
      ],
      "percentageOptions": [],
      "value": {
        "boolValue": true
      }
    }
  ]
}
```
If we send an update request body as below:
```json
[
  {
    "op": "replace",
    "path": "/targetingRules/0/value/boolValue",
    "value": true
  }
]
```
Only the first Targeting Rule's `value` is going to be set to `false` and all the other fields are remaining unchanged.

So we get a response like this:
```json
{
  "defaultValue": {
    "boolValue": false
  },
  "targetingRules": [
    {
      "conditions": [
        {
          "userCondition": {
            "comparisonAttribute": "Email",
            "comparator": "sensitiveTextEquals",
            "comparisonValue": {
              "stringValue": "test@example.com"
            }
          }
        }
      ],
      "percentageOptions": [],
      "value": {
        "boolValue": false
      }
    }
  ]
}
```
- **get-setting-values** — This endpoint returns the value of a specified Config's Feature Flags or Settings identified by the `configId` parameter
in a specified Environment identified by the `environmentId` parameter.

The most important attributes in the response are the `value`, `rolloutRules` and `percentageRules`.
The `value` represents what the clients will get when the evaluation requests of our SDKs 
are not matching to any of the defined Targeting or Percentage Rules, or when there are no additional rules to evaluate.

The `rolloutRules` and `percentageRules` attributes are representing the current 
Targeting and Percentage Rules configuration of the actual Feature Flag or Setting 
in an **ordered** collection, which means the order of the returned rules is matching to the
evaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).
- **post-setting-values** — This endpoint replaces the values of a specified Config's Feature Flags or Settings identified by the `configId` parameter
in a specified Environment identified by the `environmentId` parameter.

Only the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.

**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't 
want to change in its original state. Not listing one means it will reset.

For example: We have the following resource.
```json
{
  "settingValues": [
    {
      "rolloutPercentageItems": [
        {
          "percentage": 30,
          "value": true
        },
        {
          "percentage": 70,
          "value": false
        }
      ],
      "rolloutRules": [],
      "value": false,
      "settingId": 1
    }
  ]
}
```
If we send a replace request body as below:
```json
{ 
  "settingValues": [
    {
      "value": true,
      "settingId": 1
    }
  ]
}
```
Then besides that the default value is set to `true`, all the Percentage Rules are deleted. 
So we get a response like this:
```json
{
  "settingValues": [
    {
      "rolloutPercentageItems": [],
      "rolloutRules": [],
      "value": true,
      "setting": 
      {
        "settingId": 1
      }
    }
  ]
}
```

The `rolloutRules` property describes two types of rules:

- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.
- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.
- **get-setting-values-v2** — This endpoint returns all Feature Flag and Setting values of a Config identified by the `configId` parameter
in a specified Environment identified by the `environmentId` parameter.

The most important fields in the response are the `defaultValue`, `targetingRules`.
The `defaultValue` represents what the clients will get when the evaluation requests of our SDKs
are not matching to any of the defined Targeting Rules, or when there are no additional rules to evaluate.

The `targetingRules` represents the current
Targeting Rule configuration of the actual Feature Flag or Setting
in an **ordered** collection, which means the order of the returned rules is matching to the
evaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).

The `percentageEvaluationAttribute` represents the custom [User Object](https://configcat.com/docs/targeting/user-object/) attribute that must be used for [percentage evaluation](https://configcat.com/docs/targeting/percentage-options/) of the Feature Flag or Setting.
- **post-setting-values-v2** — This endpoint batch updates the Feature Flags and Settings of a Config identified by the `configId` parameter
in a specified Environment identified by the `environmentId` parameter.

Only those Feature Flags and Settings are updated which are part of the request, all the others are left untouched.

**Important:** As this endpoint is doing a complete replace on those Feature Flags and Settings, which are set in the request. 
It's important to set every other field that you don't want to change in its original state. Not listing a field means that it will reset.

For example: We have the following resource of a Feature Flag.
```json
{
  "settingFormulas": [
    {
      "defaultValue": {
        "boolValue": false
      },
      "targetingRules": [
        {
          "conditions": [
            {
              "userCondition": {
                "comparisonAttribute": "Email",
                "comparator": "sensitiveTextEquals",
                "comparisonValue": {
                  "stringValue": "test@example.com"
                }
              }
            }
          ],
          "percentageOptions": [],
          "value": {
            "boolValue": true
          }
        }
      ],
      "settingId": 1
    }
  ]
}
```
If we send a batch replace request body as below:
```json
{ 
  "updateFormulas": [
    {
      "defaultValue": {
        "boolValue": false
      },
      "settingId": 1
    }
  ]
}
```
Then besides that the default value is set to `true`, all Targeting Rules of the related Feature Flag are deleted.
So we get a response like this:
```json
{
  "settingFormulas": [
    {
      "defaultValue": {
        "boolValue": false
      },
      "targetingRules": [],
      "setting": 
      {
        "settingId": 1
      }
    }
  ]
}
```
- **get-tag** — This endpoint returns the metadata of a Tag 
identified by the `tagId`.
- **update-tag** — This endpoint updates a Tag identified by the `tagId` parameter.
- **delete-tag** — This endpoint deletes a Tag identified by the `tagId` parameter. To remove a Tag from a Feature Flag or Setting use the [Update Flag](#operation/update-setting) endpoint.
- **get-webhook** — This endpoint returns the metadata of a Webhook 
identified by the `webhookId`.
- **replace-webhook** — This endpoint replaces the whole value of a Webhook identified by the `webhookId` parameter.

**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't
want to change in its original state. Not listing one means it will reset.
- **delete-webhook** — This endpoint removes a Webhook identified by the `webhookId` parameter.
- **update-webhook** — This endpoint updates a Webhook identified by the `webhookId` parameter with a collection of [JSON Patch](https://jsonpatch.com) operations.

The advantage of using JSON Patch is that you can describe individual update operations on a resource without touching attributes that you don't want to change.

For example: We have the following resource.
```json
{
  "webhookId": 6,
  "url": "https://example.com/hook",
  "httpMethod": "post",
  "content": "null",
  "webHookHeaders": []
}
```
If we send an update request body as below (it changes the `content` field and adds a new HTTP header):
```json
[
  {
    "op": "replace", 
    "path": "/content", 
    "value": "Some webhook content."
  }, 
  {
    "op": "add", 
    "path": "/webHookHeaders/-", 
    "value": {
      "key": "X-Custom-Header", 
      "value": "Custom header value"
    }
  }
]
```
Only the `content` and `webHookHeaders` are updated and all the other attributes remain unchanged.
So we get a response like this:
```json
{
  "webhookId": 6,
  "url": "https://example.com/hook",
  "httpMethod": "post", 
  "content": "Some webhook content.", 
  "webHookHeaders": [
    {
      "key": "X-Custom-Header", 
      "value": "Custom header value", 
      "isSecure": false
    }
  ]
}
```
- **get-webhook-signing-keys** — This endpoint returns the signing keys of a Webhook 
identified by the `webhookId`.

Signing keys are used for ensuring the Webhook requests you receive are actually sent by ConfigCat.

<a href="https://configcat.com/docs/advanced/notifications-webhooks/#verifying-webhook-requests" target="_blank" rel="noopener noreferrer">Here</a> you can read more about Webhook request verification.
- **add-change-request-comment** — Adds a new comment to the Change Request.
- **apply-change-request** — Applies the Change Request. The proposed changes will be applied and published immediately.
- **approve-change-request** — Adds your approval to the Change Request.
- **claim-change-request-ownership** — Claims ownership of the Change Request.
- **close-change-request** — Closes the Change Request without applying it.
- **create-change-request** — Creates a new Change Request for the specified Config and Environment.
- **create-product** — This endpoint creates a new Product in a specified Organization 
identified by the `organizationId` parameter, which can be obtained from the [List Organizations](#operation/list-organizations) endpoint.
- **create-webhook** — This endpoint creates a new Webhook in a specified Product
identified by the `productId` parameter, which can be obtained from the [List Products](#operation/list-products) endpoint.
- **invite-member** — This endpoint invites a Member into the given Product identified by the `productId` parameter.
- **remove-change-request-approval** — Removes your existing approval from the Change Request.
- **resolve-change-request-setting-conflicts** — Updates the proposed changes to a Setting included in the Change Request to resolve conflicts caused by concurrently published changes.
- **update-member-permissions** — This endpoint updates the permissions of a Member identified by the `userId`. 
This endpoint can also be used to move a Member between Permission Groups within a Product.
Only a single Permission Group can be set per Product.
- **delete-organization-member** — This endpoint removes a Member identified by the `userId` from the 
given Organization identified by the `organizationId` parameter.
- **update-change-request-comment** — Updates an existing Change Request comment.
- **delete-change-request-comment** — Deletes a Change Request comment.
- **delete-invitation** — This endpoint removes an Invitation identified by the `invitationId` parameter.
- **delete-product-member** — This endpoint removes a Member identified by the `userId` from the 
given Product identified by the `productId` parameter.
- **delete-change-request-proposed-change** — Removes a setting from a Change Request.
- **update-sdk-documentation** — If the user asks for coding related to a feature flag (such as integrating the ConfigCat SDK, adding a feature flag, or removing a feature flag), 
    always call the tool "update-sdk-documentation" first to download the latest ConfigCat SDK documentation.

    1. Analyze the SDK URLs listed in the following SDK Reference list.
    2. Then call the tool "update-sdk-documentation" with specific URL from the SDK Reference list to fetch relevant documentation page.
    
    ## SDK Reference

- [Android (Java) SDK Reference](https://configcat.com/docs/sdk-reference/android.md): ConfigCat Android SDK Reference. This is a step-by-step guide on how to use feature flags in your Android Java application.
- [ConfigCat package for Laravel](https://configcat.com/docs/sdk-reference/community/laravel.md): ConfigCat package for Laravel. Implement feature flags within your PHP Laravel application using ConfigCat.
- [ConfigCat SDK for Vue.js](https://configcat.com/docs/sdk-reference/community/vue.md): Unofficial Vue SDK for ConfigCat feature flags. Based on ConfigCat's JavaScript SDK.
- [C++ SDK Reference](https://configcat.com/docs/sdk-reference/cpp.md): ConfigCat C++ SDK Reference. This is a step-by-step guide on how to use feature flags in your C++ application.
- [Dart (Flutter) SDK Reference](https://configcat.com/docs/sdk-reference/dart.md): ConfigCat Dart (Flutter) SDK Reference. This is a step-by-step guide on how to use feature flags in your Dart (Flutter) apps.
- [.NET SDK Reference](https://configcat.com/docs/sdk-reference/dotnet.md): ConfigCat .NET SDK Reference. This is a step-by-step guide on how to use feature flags in your .NET application.
- [Using the ConfigCat SDK in DI‑Based .NET Applications](https://configcat.com/docs/sdk-reference/dotnet/generic-host.md): Using the ConfigCat SDK in DI-based .NET applications. This is a step-by-step guide on how to use feature flags in your ASP.NET Core applications and other modern .NET applications built on .NET Generic Host or .NET's standard dependency injection.
- [Elixir SDK Reference](https://configcat.com/docs/sdk-reference/elixir.md): ConfigCat Elixir SDK Reference. This is a step-by-step guide on how to use feature flags in your Elixir project.
- [Go SDK Reference](https://configcat.com/docs/sdk-reference/go.md): ConfigCat Go SDK Reference. This is a step-by-step guide on how to use feature flags in your Go applications.
- [Swift (iOS) SDK Reference](https://configcat.com/docs/sdk-reference/ios.md): ConfigCat Swift (iOS) SDK Reference. This is a step-by-step guide on how to use feature flags in your iOS mobile application.
- [Java SDK reference](https://configcat.com/docs/sdk-reference/java.md): ConfigCat Java SDK Reference. This is a step-by-step guide on how to use feature flags in your Java application.
- [Browser (JavaScript) SDK](https://configcat.com/docs/sdk-reference/js/browser.md): ConfigCat Browser (JavaScript) SDK Reference. This is a step-by-step guide on how to use feature flags in your frontend applications and Web Workers running in the browser.
- [Bun SDK](https://configcat.com/docs/sdk-reference/js/bun.md): ConfigCat Bun SDK Reference. This is a step-by-step guide on how to use feature flags in your Bun applications.
- [Chromium Extension SDK](https://configcat.com/docs/sdk-reference/js/chromium-extension.md): ConfigCat Chromium Extension SDK Reference. This is a step-by-step guide on how to use feature flags in your extensions for Chromium-based browsers (Chrome, Edge, etc.)
- [Cloudflare Worker SDK](https://configcat.com/docs/sdk-reference/js/cloudflare-worker.md): ConfigCat Cloudflare Worker SDK Reference. This is a step-by-step guide on how to use feature flags in your Cloudflare Workers.
- [Deno SDK](https://configcat.com/docs/sdk-reference/js/deno.md): ConfigCat Deno SDK Reference. This is a step-by-step guide on how to use feature flags in your Deno applications.
- [Node.js SDK](https://configcat.com/docs/sdk-reference/js/node.md): ConfigCat Node.js SDK Reference. This is a step-by-step guide on how to use feature flags in your Node.js applications.
- [ConfigCat SDK for JavaScript](https://configcat.com/docs/sdk-reference/js/overview.md): ConfigCat SDK for JavaScript Reference. This is a step-by-step guide on how to use feature flags in your JavaScript applications.
- [Kotlin Multiplatform SDK Reference](https://configcat.com/docs/sdk-reference/kotlin.md): ConfigCat Kotlin Multiplatform SDK Reference. This is a step-by-step guide on how to use feature flags in your Kotlin Multiplatform apps.
- [OpenFeature Providers](https://configcat.com/docs/sdk-reference/openfeature.md): Integrate feature flags using OpenFeature's vendor-agnostic API with ConfigCat OpenFeature providers. Supported for .NET, Java, Python, Go, JavaScript, React, Node.js, and more.
- [Using ConfigCat's OpenFeature Provider in Angular](https://configcat.com/docs/sdk-reference/openfeature/angular.md): This is a step-by-step guide on how to use ConfigCat with the OpenFeature Angular SDK.
- [OpenFeature Provider for .NET](https://configcat.com/docs/sdk-reference/openfeature/dotnet.md): ConfigCat OpenFeature Provider for .NET. This is a step-by-step guide on how to use ConfigCat with the OpenFeature .NET SDK.
- [OpenFeature Provider for Go](https://configcat.com/docs/sdk-reference/openfeature/go.md): ConfigCat OpenFeature Provider for Go. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Go SDK.
- [OpenFeature Provider for Java](https://configcat.com/docs/sdk-reference/openfeature/java.md): ConfigCat OpenFeature Provider for Java. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Java SDK.
- [OpenFeature Provider for JavaScript](https://configcat.com/docs/sdk-reference/openfeature/js.md): ConfigCat OpenFeature Provider for JavaScript. This is a step-by-step guide on how to use ConfigCat with the OpenFeature JavaScript SDK.
- [OpenFeature Provider for Kotlin](https://configcat.com/docs/sdk-reference/openfeature/kotlin.md): ConfigCat OpenFeature Provider for Kotlin. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Kotlin SDK.
- [Using ConfigCat's OpenFeature Provider in NestJS](https://configcat.com/docs/sdk-reference/openfeature/nestjs.md): This is a step-by-step guide on how to use ConfigCat with the OpenFeature NestJS SDK.
- [OpenFeature Provider for Node.js](https://configcat.com/docs/sdk-reference/openfeature/node.md): ConfigCat OpenFeature Provider for Node.js. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Node.js SDK.
- [OpenFeature Provider for PHP](https://configcat.com/docs/sdk-reference/openfeature/php.md): ConfigCat OpenFeature Provider for PHP. This is a step-by-step guide on how to use ConfigCat with the OpenFeature PHP SDK.
- [OpenFeature Provider for Python](https://configcat.com/docs/sdk-reference/openfeature/python.md): ConfigCat OpenFeature Provider for Python. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Python SDK.
- [Using ConfigCat's OpenFeature Provider in React](https://configcat.com/docs/sdk-reference/openfeature/react.md): This is a step-by-step guide on how to use ConfigCat with the OpenFeature React SDK.
- [OpenFeature Provider for Ruby](https://configcat.com/docs/sdk-reference/openfeature/ruby.md): ConfigCat OpenFeature Provider for Ruby. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Ruby SDK.
- [OpenFeature Provider for Rust](https://configcat.com/docs/sdk-reference/openfeature/rust.md): ConfigCat OpenFeature Provider for Rust. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Rust SDK.
- [OpenFeature Provider for Swift](https://configcat.com/docs/sdk-reference/openfeature/swift.md): ConfigCat OpenFeature Provider for Swift. This is a step-by-step guide on how to use ConfigCat with the OpenFeature Swift SDK.
- [ConfigCat SDK Overview](https://configcat.com/docs/sdk-reference/overview.md): List of all supported technologies like .NET, Java, JavaScript, Node.js, Deno, Bun, Cloudflare Worker, PHP, Python, Ruby, Go, Android, Swift, iOS, Elixir, Dart, Flutter, Angular, React, Vue.js, Chromium Extension, Kotlin Multiplatform, Laravel, Server-Side Rendered apps, etc.
- [PHP SDK Reference](https://configcat.com/docs/sdk-reference/php.md): ConfigCat PHP SDK Reference. This is a step-by-step guide on how to use feature flags in your PHP application.
- [Python SDK Reference](https://configcat.com/docs/sdk-reference/python.md): ConfigCat Python SDK Reference. This is a step-by-step guide on how to use feature flags in your Python application.
- [React SDK Reference](https://configcat.com/docs/sdk-reference/react.md): ConfigCat React SDK Reference. This is a step-by-step guide on how to use feature flags in your React applications.
- [Ruby SDK Reference](https://configcat.com/docs/sdk-reference/ruby.md): ConfigCat Ruby SDK Reference. This is a step-by-step guide on how to use feature flags in your Ruby application.
- [Rust SDK Reference](https://configcat.com/docs/sdk-reference/rust.md): ConfigCat Rust SDK Reference. This is a step-by-step guide on how to use feature flags in your Rust applications.
- [Using the ConfigCat SDK in Unity](https://configcat.com/docs/sdk-reference/unity.md): Using the ConfigCat SDK in Unity. This is a step-by-step guide on how to use feature flags in your Unity project.
- [Unreal Engine SDK Reference](https://configcat.com/docs/sdk-reference/unreal.md): ConfigCat Unreal Engine SDK Reference. This is a step-by-step guide on how to use feature flags in your Unreal Engine project.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mcp-server": {
    "command": "npx",
    "args": ["-y","@configcat/mcp-server"],
    "env": {
      "CONFIGCAT_API_USER": "",
      "CONFIGCAT_API_PASS": ""
    }
  }
}
```

**Requires environment variables:** `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation & README

# ConfigCat MCP Server

[![NPM](https://nodei.co/npm/@configcat/mcp-server.svg?style=flat-square&data=n,v&color=green)](https://www.npmjs.com/package/@configcat/mcp-server)
[![License](https://img.shields.io/github/license/configcat/mcp-server.svg)](https://github.com/configcat/mcp-server/blob/main/LICENSE)

The [ConfigCat](https://configcat.com/)'s Model Context Protocol (MCP) server provides access to [ConfigCat's public management API](https://configcat.com/docs/api/reference/configcat-public-management-api/) for feature flag and configuration management. It also enables your code editor to understand your feature flags, integrate the appropriate ConfigCat SDK into your project or even create new feature flags directly in your codebase.

## Features

- **Tools**: 
  - Complete set of tools for ConfigCat's public management API operations. You can Create, Read, Update and Delete any entities like Feature Flags, Configs, Environments or Products within ConfigCat.
  - Get comprehensive SDK documentation and code examples for seamless feature flag implementation in your project.

## Setup

You can use the following environment variables to configure the MCP server.

| Environment variable | Required | Default | Description |
| -------------------- | -------- | ------- | ----------- |
| CONFIGCAT_API_USER   | &#9745;  |         | [ConfigCat Management API basic authentication username](https://app.configcat.com/my-account/public-api-credentials). |
| CONFIGCAT_API_PASS   | &#9745;  |         | [ConfigCat Management API basic authentication password](https://app.configcat.com/my-account/public-api-credentials). |
| CONFIGCAT_BASE_URL   |          | https://api.configcat.com | ConfigCat Management API host. |


The instructions below show how to connect a client to the MCP server. 

### Cursor

1. Open `Preferences` -> `Cursor Settings` -> `MCP & Integrations`
2. Click `Add Custom MCP`
3. Add the following server definition for the ConfigCat MCP server:

```json
{
  "mcpServers": {
    "ConfigCat": {
      "command": "npx",
      "args": ["-y", "@configcat/mcp-server"],
      "env": {
        "CONFIGCAT_API_USER": "YOUR_API_USER",
        "CONFIGCAT_API_PASS": "YOUR_API_PASSWORD"
      }
    }
  }
}
```

4. Save the settings.

### Visual Studio Code

1. Create a `.vscode/mcp.json` file in your project root with the following content:

```json
{
  "servers": {
    "ConfigCat": {
      "command": "npx",
      "args": ["-y", "@configcat/mcp-server"],
      "env": {
        "CONFIGCAT_API_USER": "YOUR_API_USER",
        "CONFIGCAT_API_PASS": "YOUR_API_PASSWORD"
      }
    }
  }
}
```

2. Save the settings file. The MCP server should now be available in VS Code.

### Claude Desktop

1. Open **Settings** &rarr; **Developer**
2. Click **Edit Config**
3. Open `claude_desktop_config.json`
4. Add the following server definition for the ConfigCat MCP server:

```json
{
  "mcpServers": {
    "ConfigCat": {
      "command": "npx",
      "args": ["-y", "@configcat/mcp-server"],
      "env": {
        "CONFIGCAT_API_USER": "YOUR_API_USER",
        "CONFIGCAT_API_PASS": "YOUR_API_PASSWORD"
      }
    }
  }
}
```

5. Save and restart Claude.

## Available Tools

### Membership Management

#### Organizations

- `list-organizations` - List all organizations

#### Members

- `list-organization-members` - List organization members
- `list-pending-invitations` - List pending invitations
- `list-pending-invitations-org` - List org pending invitations
- `list-product-members` - List product members
- `invite-member` - Invite a new member
- `update-member-permissions` - Update the permissions of a member
- `delete-organization-member` - Remove organization member
- `delete-product-member` - Remove product member
- `delete-invitation` - Cancel invitation

#### Permission Groups

- `list-permission-groups` - List permission groups
- `create-permission-group` - Create a new permission group
- `get-permission-group` - Get permission group details
- `update-permission-group` - Update permission group
- `delete-permission-group` - Delete permission group

### General

#### Products

- `list-products` - List all products
- `get-product` - Get specific product details
- `update-product` - Update existing product
- `delete-product` - Delete a product
- `get-product-preferences` - Get product preferences
- `update-product-preferences` - Update product preferences
- `create-product` - Create a new product

#### Configs

- `list-configs` - List configs for a product
- `create-config` - Create a new config
- `get-config` - Get specific config details
- `update-config` - Update existing config
- `delete-config` - Delete a config

#### Environments

- `list-environments` - List environments for a product
- `create-environment` - Create a new environment
- `get-environment` - Get specific environment details
- `update-environment` - Update existing environment
- `delete-environment` - Delete an environment

#### Segments

- `list-segments` - List user segments
- `create-segment` - Create a new segment
- `get-segment` - Get specific segment details
- `update-segment` - Update existing segment
- `delete-segment` - Delete a segment

#### SDK Keys

- `get-sdk-keys` - Get SDK keys for config/environment

#### Webhooks

- `list-webhooks` - List webhooks
- `get-webhook` - Get webhook details
- `replace-webhook` - Replace webhook configuration
- `update-webhook` - Update existing webhook
- `delete-webhook` - Delete a webhook
- `get-webhook-signing-keys` - List webhook signing keys
- `create-webhook` - Create a new webhook

#### Integrations

- `list-integrations` - List integrations
- `create-integration` - Create a new integration
- `get-integration` - Get integration details
- `update-integration` - Update existing integration
- `delete-integration` - Delete an integration

#### Code References

- `get-code-references` - Get code references

### Diagnostics

#### Audit logs

- `list-auditlogs` - Get product audit logs
- `list-organization-auditlogs` - Get organization audit logs

#### Zombie (stale) flags

- `list-staleflags` - Get stale feature flags report

### Feature Flag metadata

#### Feature Flags & Settings

- `list-settings` - List feature flags for a config
- `create-setting` - Create a new feature flag
- `list-predefined-variations` - List predefined variations
- `update-predefined-variations` - Update predefined variations
- `get-setting` - Get specific feature flag details
- `replace-setting` - Replace feature flag configuration
- `update-setting` - Update existing feature flag
- `delete-setting` - Delete a feature flag

#### Tags

- `list-tags` - List tags for a product
- `create-tag` - Create a new tag
- `list-settings-by-tag` - Get feature flags by tag
- `get-tag` - Get specific tag details
- `update-tag` - Update existing tag
- `delete-tag` - Delete a tag

### Feature Flag & Setting Values (v1 & v2 APIs)

- `get-setting-value` - Get feature flag value
- `update-setting-value` - Update feature flag value
- `replace-setting-value` - Replace feature flag value
- `get-setting-values` - Get multiple setting values
- `post-setting-values` - Update multiple setting values
- V2 variants: `*-v2` versions of above tools for Config V2

### Change Requests

- `get-change-request` - Returns the details of a specific Change Request
- `update-change-request` - Updates the metadata of a Change Request, such as title, note, schedule, etc.
- `list-change-requests` - List Change Requests
- `get-change-request-proposed-changes` - Returns the proposed changes to the Settings included in a Change Request
- `update-change-request-proposed-change` - Updates the proposed changes to the Settings included in a Change Request
- `add-change-request-comment` - Adds a new comment to the Change Request
- `apply-change-request` - Applies the Change Request
- `approve-change-request` - Adds your approval to the Change Request
- `claim-change-request-ownership` - Claims ownership of the Change Request
- `close-change-request` - Closes the Change Request without applying it
- `create-change-request` - Creates a new Change Request for the specified Config and Environment
- `remove-change-request-approval` - Removes your existing approval from the Change Request
- `resolve-change-request-setting-conflicts` - Updates the proposed changes to a Setting included in the Change Request to resolve conflicts caused by concurrently published changes
- `update-change-request-comment` - Updates an existing Change Request comment
- `delete-change-request-comment` - Deletes a Change Request comment
- `delete-change-request-proposed-change` - Removes a setting from a Change Request

### SDK documentation

- `update-sdk-documentation` - Get comprehensive SDK documentation and code examples for seamless feature flag implementation in your project.

## API Rate Limits

The ConfigCat public API has rate limits. The server will respect these limits and return appropriate error messages if limits are exceeded.

## Security Note

This server is designed for management operations only. Do not use it for evaluating feature flag values in production applications - use the [ConfigCat SDKs](https://configcat.com/docs/sdk-reference/overview/) or [ConfigCat Proxy](https://configcat.com/docs/advanced/proxy/proxy-overview/) instead.

## Need help?
https://configcat.com/support

## Contributing
Contributions are welcome. For more info please read the [Contribution Guideline](https://github.com/configcat/mcp-server/blob/HEAD/CONTRIBUTING.md).

## About ConfigCat
- [ConfigCat MCP server documentation](https://configcat.com/docs/advanced/mcp-server)
- [Documentation](https://configcat.com/docs)
- [Blog](https://configcat.com/blog)

