AI assistants (MCP)

Connect Claude, Cursor, VS Code or another AI assistant to featflags, and ask it to look up, create, roll out and clean up flags for you, with your access and your approvals.

featflags runs a hosted MCP server, so any AI assistant that connects to remote MCP servers can work with your flags: “turn search-v2 off in production”, “roll new-checkout out to 10%”, “which flags can we delete?”. There’s nothing to install and no key to copy: you add a URL, sign in with your featflags account, and choose what the assistant may do.

https://app.featflags.io/mcp

Connect your assistant

When the assistant first connects, a featflags page opens in your browser: sign in if you aren’t, pick the organisation the assistant works in, and choose whether it gets your own access there or read-only access. Then allow it.

Claude Code. Run this, then /mcp in Claude Code and choose to authenticate:

claude mcp add --transport http featflags https://app.featflags.io/mcp

Claude (claude.ai or the desktop app). Settings → Connectors → Add custom connector, and paste the URL.

Cursor. Settings → MCP → Add new MCP server, or in ~/.cursor/mcp.json:

{ "mcpServers": { "featflags": { "url": "https://app.featflags.io/mcp" } } }

VS Code. Command Palette → MCP: Add Server → HTTP, or in .vscode/mcp.json:

{ "servers": { "featflags": { "type": "http", "url": "https://app.featflags.io/mcp" } } }

Anything else that supports remote MCP servers with OAuth sign-in takes the same URL.

The sign-in page tells you what’s asking. An assistant that registered itself is shown by the name it claims (“an app calling itself Claude”), since any app can call itself anything; one identified by its own website shows that site. When the sign-in returns to an app on your computer, the page says so, because any app on the computer could be listening: only allow a connection you just started.

What it can do

Tool What it does
list_projects Your projects and their environments, with which need a comment or approval.
list_flags A project’s flags and their status in each environment, searched by key, description or status.
get_flag A flag’s variants and, per environment, whether it’s on, its rules, default and release plan.
evaluate_flag What a flag serves a given context in an environment, and why.
flag_history A flag’s changes, newest first.
flag_stats Its evaluations by variant and hour.
stale_flags Flags ready to archive, those safe to remove because no scanned code reads them, and others that stopped changing.
flag_code_references Where code reads a flag, per repository and branch.
create_flag Creates a flag, off everywhere.
set_flag_enabled Turns a flag on or off in an environment.
update_targeting Changes a flag’s rules or default in an environment, percentage rollouts included.
start_release_milestone Starts, or goes back to, a milestone of the flag’s release plan.
archive_flag Archives a flag.

Reading tools are marked read-only and changing ones as such, so your assistant can ask you before it changes anything.

Safety

  • It acts as you. The assistant has your access in the organisation you picked, or a reader’s if you chose read-only, and never more. If your role shrinks, or you leave the organisation, its access does too.
  • Your rules apply. Its changes go through the same checks as yours: where an environment requires a comment, it has to give one; where it requires approval, its change waits for reviewers and it tells you so. Its changes are recorded in history as yours, through the assistant.
  • It can’t widen its reach. No tool manages members, API tokens, SDK keys, experiment keys or billing, or shows a key or a secret. Individual targets, uploaded lists, segments, webhooks, triggers and experiments stay in the app.
  • It’s easy to disconnect. Your account page lists your Connected apps, with each one’s organisation, access and last use, and a Disconnect button. Owners can also revoke any connection among the organisation’s API tokens. A connection you don’t use for 90 days expires.

featflags doesn’t run an AI model: your assistant’s model decides which tools to call, and featflags only sees those calls.