MCP Server
Connect Claude Code, Codex, Cursor and other AI assistants to Flipper Cloud with its MCP server, then ask which feature flags are ready to remove.
Flipper Cloud runs a Model Context Protocol (MCP) server, so AI assistants like Claude Code, Codex and Cursor can read your feature flags and help you clean them up. Ask "Which Flipper flags can we remove?" and your assistant checks every environment, your telemetry and your audit history, then tells you which flags are done and why.
The server is read-only. It can't enable, disable or delete a flag, and it sees only what you can see in Flipper Cloud.
Connect
The server lives at https://www.flippercloud.io/mcp and uses the streamable HTTP transport. Connect by signing in with your Flipper Cloud account, or with an API key.
Sign in
Add the server URL to your assistant. The first time it connects, a browser window asks you to sign in to Flipper Cloud and allow the assistant to read your account.
In Claude (claude.ai and the desktop app), go to Settings → Connectors, choose Add custom connector, and enter https://www.flippercloud.io/mcp.
Claude Code
claude mcp add --transport http flipper-cloud https://www.flippercloud.io/mcp
Then run /mcp in Claude Code and choose Authenticate.
Cursor (~/.cursor/mcp.json, or .cursor/mcp.json in a project)
{
"mcpServers": {
"flipper-cloud": {
"url": "https://www.flippercloud.io/mcp"
}
}
}
Any other MCP client that supports OAuth works the same way. A connection acts as you and can read what you can see. It stays signed in until you disconnect it under Profile → API Keys or change your password.
Or use an API key
For clients that don't support OAuth, or scripts. Go to Profile → API Keys and create a key. It's shown once, so copy it somewhere safe, like a FLIPPER_CLOUD_API_KEY environment variable. A key acts as you, just like a connection, and stops working the moment you revoke it.
Claude Code
claude mcp add --transport http flipper-cloud https://www.flippercloud.io/mcp --header "Authorization: Bearer $FLIPPER_CLOUD_API_KEY"
Codex (~/.codex/config.toml, with the key in FLIPPER_CLOUD_API_KEY)
[mcp_servers.flipper-cloud]
url = "https://www.flippercloud.io/mcp"
bearer_token_env_var = "FLIPPER_CLOUD_API_KEY"
Any MCP client that can send an Authorization: Bearer header over HTTP works.
Ask about your flags
Try prompts like these:
- "Which Flipper flags can we clean up in the Billing project?"
- "Is the
new_checkoutflag safe to remove? Who owns it?" - "Remove the flags that are fully enabled everywhere from this codebase, keeping the enabled code path."
How it finds flags to remove
A flag is only done once it's settled in every environment, so the server looks at all of a project's shared environments together. Each candidate comes with its reasons and how confident to be:
| Reason | Confidence | Means |
|---|---|---|
fully_enabled |
High | On for everyone in every environment |
fully_disabled |
High | Off in every environment |
always_true |
Verify | Conditionally enabled, but every check in the window returned true |
always_false |
Verify | Conditionally enabled, but every check in the window returned false |
not_evaluated |
Verify | Your apps send telemetry, but nothing checked the flag in the window |
- Settling flags wait. A flag created or changed in the last 7 days isn't a candidate yet.
- Permanent flags are skipped unless you ask for them. Set a flag's longevity to permanent when you create or edit it.
- Usage-based reasons need telemetry from every environment. If only staging sends telemetry, a flag production never checks could look always true, so the server holds those reasons back and says telemetry is partial.
- Removing a flag takes three steps: remove the check from your code, deploy, then delete the flag from Flipper Cloud. Deleting it first means your code falls back to the flag being off.
Tools
| Tool | What it returns |
|---|---|
whoami |
The person the key belongs to and their organizations |
list_projects |
Projects you can see, with their shared environments and whether the plan includes telemetry |
list_cleanup_candidates |
A project's flags that look ready to remove, strongest first. Takes project_id, plus optional days of telemetry (30 by default, up to your plan's retention), include_permanent and limit
|
get_feature |
One flag's description, owner, tags, state and checks in each environment, and its latest changes. Takes project_id and key
|
Privacy
Assistants see your teammates' names where they've set one, never their email addresses (whoami shows only your own). They never see your customers' actor IDs: gates are shown as counts, and actor and expression values are left out of a flag's history. Change history follows your plan's audit history retention.
Limits
Each key or connected app can make 120 requests a minute. Over that, the server answers 429 with a Retry-After header.
Get audit history, rollbacks, advanced permissions, analytics, and all of your projects in one place.
You can choose from several tiers to sponsor Flipper on GitHub and get some great benefits!