NewAgent Observability is live.
Back to directory
LaunchDarkly logo

LaunchDarkly MCP server: 20 tools, two routes

What an AI agent can change through LaunchDarkly, which of the two servers you should be running, and how many of its tools alter what users see.

Connector
Official, hosted or local
Coverage
Feature flags, AI configs, environments, audit log
Tools
20 on the local server
Biggest risk for an agent
Half the tools change live flags

Last verified 1 September 2026 · from LaunchDarkly's repository, its documentation and the server's own tools/list response

This page is one of 90 in a directory of monitoring and developer tools. Each page checks what an AI coding agent can get out of the tool through its MCP server, the connector that lets the agent query the tool directly.

Summary

LaunchDarkly publishes two MCP servers. Its README says which to use: the hosted one at mcp.launchdarkly.com/mcp/launchdarkly. LaunchDarkly calls that server more feature complete and more frequently updated.

The local package exists for EU and Federal instances, which do not yet support the hosted server. That is its stated purpose, not a general-purpose alternative.

The local server registers 20 tools, and ten of them write. Creating, updating and deleting flags and AI configs are all available with no read-only mode, which for a feature-flag product means an agent can change what users see.

What is the LaunchDarkly MCP server?

It is LaunchDarkly's server for the Model Context Protocol. LaunchDarkly controls feature flags, so the agent gains tools for reading and changing which features are on for whom.

Half the surface is AI configs, LaunchDarkly's newer product for managing model and prompt selection behind a flag. Eleven of the twenty tools name ai-config directly.

There are two servers. The hosted one is the default recommendation. The local one covered here is for EU and Federal instances, and LaunchDarkly says plainly that it lags the hosted server.

LaunchDarkly covers release in full. Code references reach part of the way into code review. AI configs reach part of the way into agent operation. Nothing reaches production observability or cost.

Part of the workWhat LaunchDarkly has hereCan an agent reach it
Code, tests & reviewCode referencesPartial. get-code-references shows where a flag is used in your source, which is review context rather than a review product
CI & releaseFeature flags, environments, targetingYes. Core strength. Progressive delivery is what the product is for
Production observabilityAudit logNo telemetry. The audit log records what changed in LaunchDarkly, not how the system behaved afterwards
Agent observability & evalsAI config targetingPartial. AI configs control which model and prompt an agent runs on. There are no traces or evaluations here
AI cost managementNoneNo token or model spend data

For an agent, that means LaunchDarkly answers what is switched on for whom, and can change it. An agent connected here can tell you which flags are live in production and where they are referenced in code. It cannot tell you whether turning a flag on made anything worse. Run this connector beside an observability connector, and give it tighter permissions than most.

What can an AI agent do with LaunchDarkly?

TaskToolsWorksWatch out for
Find what is switched on in productionlist-feature-flags get-flag-status-across-environmentsYesStatus is per environment; name the environment rather than assuming production
Find where a flag is used in codeget-code-referencesYesNeeds the code-references integration configured in LaunchDarkly
See who changed a flag and whenget-audit-log-entriesYesRecords LaunchDarkly changes only, not deployments
Change a flag's targetingupdate-feature-flag get-environmentsYesA write that reaches users immediately. Keep it off the allowlist
Manage which model an agent useslist-ai-configs get-ai-config-targeting update-ai-config-targetingYesUpdating targeting changes model or prompt selection in production
Create or remove a flagcreate-feature-flag delete-feature-flagYesDeletion is permanent and reaches every environment
Check whether a rollout caused an incidentNoNo telemetry. LaunchDarkly knows the flag flipped, not what happened next

Ten of the twenty tools write, and on a feature-flag product a write is a production change with no deploy in between. This is the connector on which an allowlist matters most.

20 tools registered, all on by default, of which 10 write

Flags3
list-feature-flagsget-feature-flagget-flag-status-across-environments
Flags, write3
create-feature-flagupdate-feature-flagdelete-feature-flag
AI configs4
list-ai-configsget-ai-configget-ai-config-targetingget-ai-config-variation
AI configs, write7
create-ai-configupdate-ai-configdelete-ai-configupdate-ai-config-targetingcreate-ai-config-variationupdate-ai-config-variationdelete-ai-config-variation
Context3
get-environmentsget-audit-log-entriesget-code-references

Half the surface is AI configs, LaunchDarkly's product for managing model and prompt selection behind a flag. Counted from the server's own tools/list response on 21 August 2026.

What connecting costs before the first question

A context window is the amount of text a model can hold at once, and connecting uses some of it before the agent asks anything. Every tool the server registers sends its name, description and input schema to the model when the session starts. The tool list is charged whether or not a single tool is called.

LaunchDarkly's cost sits mostly in its schemas rather than its prose: descriptions average 150 characters, while input schemas average 713, because flag and targeting objects are structurally large.

Tool setToolsTokens (GPT-5.6, GPT-5.5)Tokens (GPT-4, GPT-3.5)Tokens (Claude Haiku 4.5 to Opus 5)Share of a 200,000-token window
Every tool, as registered203,866 to 6,7693,717 to 6,7925,888 to 7,6811.9% to 3.8%

Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 21 August 2026 from tools/list on the published @launchdarkly/mcp-server package, run locally with a placeholder key.

Registration is static, so no LaunchDarkly account was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting, about 75%, wide because the schemas carry most of the payload. Reasoning tokens are output, spent per request. The tool list is input, charged once at connection.

The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer, so the definitions were sent to the API's count_tokens endpoint and a no-tools baseline subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end, Opus 5 and Sonnet 5 at the high end. The gap between them is about a third.

Can LaunchDarkly watch your own AI agents?

LaunchDarkly sits on the control side of this stage rather than the observing side: it decides what an agent runs on, and records nothing about what happened. Read from LaunchDarkly’s MCP documentation on 21 August 2026.

SignalCoveredNotes
Trace and session trackingNoNo trace, span or session is stored, so nothing can be read back
Eval scores on recorded trafficNoThere are no evaluations in the product to read
Prompt version trackingPartialAI configs hold the model and prompt an agent runs on, so a change is visible as configuration. That is what will run, not what did
Offline experimentsNoExperimentation targets flags rather than model output
Token and cost trackingNoNo tool returns a token count or a cost figure

LaunchDarkly MCP server limits: where answers come back incomplete

LaunchDarkly's first constraint is specific to a connector that can change live flags.

The agent says: I updated the flag. Users saw the change immediately.

A feature-flag change takes effect without a deploy. That is the product working as designed, and it means update-feature-flag, update-ai-config-targeting and delete-feature-flag are production changes made from a chat window.

Ten of LaunchDarkly's twenty tools write, and the server has no read-only mode. The MCP client allowlist is the only gate.

Guard: Approve read tools only. In Claude Code, run /permissions and leave every create-, update- and delete- tool unapproved.

The agent says: I have all the LaunchDarkly tools. The hosted server has more.

LaunchDarkly states that the hosted server is more feature complete and receives more frequent updates than this self-managed one, which it provides for EU and Federal instances that do not yet support hosted.

So an absent capability here is not necessarily absent from LaunchDarkly. It may simply not have reached the local package.

Guard: Use the hosted server unless you are on an EU or Federal instance. Check the hosted server's tools before concluding something is unsupported.

The agent says: This flag is not used anywhere in code. The code-references integration was never set up.

get-code-references reads data that LaunchDarkly's code-references scanner populates from your repositories. Without that integration it returns nothing, and an unused flag and an unscanned repository look identical.

Guard: Confirm the code-references integration is configured before treating an empty result as evidence a flag is dead.

How to configure LaunchDarkly MCP for agents

  1. 1

    Use the hosted server unless you cannot

    LaunchDarkly states the hosted server is more feature complete and receives more frequent updates. This package exists for EU and Federal instances.

  2. 2

    Allowlist read tools

    Ten of the twenty write, and on a feature-flag product a write reaches users without a deploy.

  3. 3

    Scope the access token

    LD_ACCESS_TOKEN carries whatever the token was granted, across every project and environment it can reach.

  4. 4

    Set up code references if you want them

    get-code-references returns nothing without LaunchDarkly's repository scanner, and an unscanned repository looks the same as an unused flag.

Paste this into your agent’s instructions

A flag answer is only meaningful with its environment, and an empty code-references result is easy to misread as a dead flag. The block makes the agent state both.

Terminal
When you answer using LaunchDarkly MCP tools, state:
- The project and environment each flag status came from.
  A flag can be on in one environment and off in another.
- Whether code references are configured. An empty result may
  mean the repository was never scanned, not that the flag is
  unused.
- Whether you changed anything. Flag and targeting updates
  reach users without a deploy.
Never state that data does not exist. State that none was
returned under the constraints above.
Write your answer in ASD-STE100 Simplified Technical
English. Use short sentences with one idea in each.

Do you need the MCP server at all?

Yes, and LaunchDarkly's own guidance points that way. The hosted server is the recommended surface, and the REST API covers the same operations with the same key.

The connector's advantage is that flag and targeting shapes are complicated, and the schemas describe them, so an agent can construct a valid targeting change without being handed the API reference.

That advantage cuts both ways here. A tool that makes a targeting change easy to write also makes it easy to apply by mistake.

Use the hosted server unless your instance is EU or Federal. Keep write tools off the allowlist either way.

LaunchDarkly MCP server setup

The hosted server at mcp.launchdarkly.com/mcp/launchdarkly is the recommended route and needs no install. The local package runs with npx and takes an access token, either as --api-key or in LD_ACCESS_TOKEN.

The local package is intended for EU and Federal instances, which do not yet support the hosted server.

Claude Code, hosted

The recommended route. No token appears in the config because the hosted server authenticates through its own OAuth flow on first connect.

Terminal
claude mcp add --transport http launchdarkly https://mcp.launchdarkly.com/mcp/launchdarkly

Claude Code, local

For EU and Federal instances. This process holds an access token.

Terminal
claude mcp add-json "launchdarkly" '{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","<your-token>"]}'

Cursor

In ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one.

Terminal
{"mcpServers":{"launchdarkly":{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","$LD_ACCESS_TOKEN"],
  "env":{"LD_ACCESS_TOKEN":"<your-token>"}}}}

Codex CLI

Codex reads TOML, so the JSON blocks above will not transfer.

Terminal
[mcp_servers.launchdarkly]
command = "npx"
args = ["-y", "@launchdarkly/mcp-server", "start", "--api-key", "$LD_ACCESS_TOKEN"]
env = { LD_ACCESS_TOKEN = "<your-token>" }

Every other client

Each block below is the configuration for one client, with the file path and the key that client expects.

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.

Quit and restart fully for changes to load. Paths in args must be absolute. Logs at ~/Library/Logs/Claude/mcp.log.

Terminal
{"mcpServers":{"launchdarkly":{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","$LD_ACCESS_TOKEN"],
  "env":{"LD_ACCESS_TOKEN":"<your-token>"}}}}
Gemini CLI

~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.

Terminal
{"mcpServers":{"launchdarkly":{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","$LD_ACCESS_TOKEN"],
  "env":{"LD_ACCESS_TOKEN":"<your-token>"}}}}
VS Code Copilot

.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.

Terminal
{"servers":{"launchdarkly":{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","$LD_ACCESS_TOKEN"],
  "env":{"LD_ACCESS_TOKEN":"<your-token>"}}}}

The key is `servers`, not `mcpServers`. VS Code is the only client that uses that name, and copying a config from anywhere else fails silently.

Windsurf

~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same access token.

Zed

~/.config/zed/settings.json, carrying the same access token as the blocks above.

The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.

Google Antigravity

~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.

Terminal
{"mcpServers":{"launchdarkly":{"command":"npx",
  "args":["-y","@launchdarkly/mcp-server","start","--api-key","$LD_ACCESS_TOKEN"],
  "env":{"LD_ACCESS_TOKEN":"<your-token>"}}}}
Amp (Sourcegraph)

~/.config/amp/settings.json or .amp/settings.json, carrying the same access token. The amp mcp CLI covers approve, doctor and oauth.

The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.

Cline

~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same access token. Supports stdio, streamable HTTP and SSE.

Goose (Block)

~/.config/goose/config.yaml, carrying the same access token.

YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.

Kiro (AWS)

.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same access token.

Warp

~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same access token. Also addable through the /agent-add-mcp skill.

JetBrains Junie

.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same access token. Use /mcp in the CLI to manage.

Roo Code

.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same access token.

Continue

.continue/mcpServers/*.yaml, one file per server, carrying the same access token.

YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.

Trae

.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same access token.

Devin

Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. The block below is the shape those fields describe, shown for reference. Either route uses the same access token.

Non-default instance

Point the local server at an EU or Federal endpoint with --server-url, alongside the token.

Terminal
LD_ACCESS_TOKEN=<your-token> \
npx -y @launchdarkly/mcp-server start \
  --server-url https://app.eu.launchdarkly.com

Read-only access, permissions and security

  • Half the tools change production

    Ten of the twenty create, update or delete flags and AI configs, and a flag change takes effect without a deploy.

  • There is no read-only mode

    The server offers no flag equivalent to a read-only switch, so the client's allowlist is the only gate.

  • AI config targeting selects the model

    update-ai-config-targeting changes which model or prompt an agent runs on in production, which changes how the agent behaves, not just how it is configured.

  • The token carries broad reach

    An access token spans the projects and environments it was granted, so scope it to the smallest set that answers your questions.

Troubleshooting

A flag looks off but users still see the feature
Flag status is per environment. Use get-flag-status-across-environments and name the environment rather than assuming production.
No code references for a flag you know is used
get-code-references reads data from LaunchDarkly's repository scanner. Without that integration the result is empty, which looks identical to an unused flag.
401 on connect
The access token is missing or scoped to another instance. For EU or Federal, set --server-url to the correct endpoint.
A capability exists in LaunchDarkly but not in the server
LaunchDarkly states the hosted server is more feature complete than this local one. Check the hosted server before concluding the product lacks it.
A flag changed that you did not change
Write tools have no server-side gate. Remove every create-, update- and delete- tool from your client's allowlist, and check get-audit-log-entries for what happened.

LaunchDarkly MCP server: Reference

ItemValue
StatusRepository pushed 21 August 2026 · MIT license
Adoption27 stars
Package@launchdarkly/mcp-server on npm; hosted server at mcp.launchdarkly.com/mcp/launchdarkly
ScopeThe local server is for EU and Federal instances; hosted is recommended otherwise
AuthLD_ACCESS_TOKEN, or --api-key on the command line
Tools20, all on by default, of which 10 write
Read-onlyNone. Gate the write tools in the client

What engineers report

The local server has a small public footprint, so the useful signals are LaunchDarkly's own guidance and the read-write split.

What was checkedWhat it shows
Stars27
Last push21 August 2026
LicenseMIT
Tools20, of which 10 write
Stated purposeEU and Federal instances; hosted server recommended otherwise

“Using an API key makes it difficult to use your MCP in an IDE because we can't push the key to our source code. ... Many MCPs in the IDE now just send you to authenticate, rather than working with a static API key.”

oreporan, GitHub issue, 17 September 2025 · Static keys against a browser flow, in a configuration file that lives in a repository.

“The CLI defaults --api-key to an empty string, and the nullish coalescing operator in the security module doesn't treat it as nullish, so the env var is never read.”

joey-kendall, GitHub issue, 18 February 2026 · A precise diagnosis of why the environment variable fallback silently fails.

Repository facts from the GitHub API, retrieved 21 August 2026. Tool counts and the read-write split come from the server's own tools/list response.

Should you connect an agent to LaunchDarkly?

Yes, though it is no longer actively maintained. Best for EU and Federal instances, read tools only, with flag changes left to a reviewed process.

Strongest fit
Teams on EU or Federal LaunchDarkly instances who want an agent auditing which flags are live and where they are referenced.
Main advantage
Schemas that describe flag and targeting structures well enough for an agent to work with them correctly.
Main weakness
LaunchDarkly says this server lags the hosted one, so a missing capability may be a packaging gap rather than a product gap.
Operational risk
Half the tools change live flags with no deploy in between, and there is no read-only mode.

From Oodle

One platform for agent traces and infrastructure

Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface, from $10 per million spans.

See agent observability

Frequently asked questions

How many tools does the LaunchDarkly MCP server have?

20 on the local server, of which 10 write. Counted from the server's own tools/list response on the published npm package, 21 August 2026.

Should I use the hosted or the local server?

Hosted, unless your instance is EU or Federal. LaunchDarkly states the hosted server is more feature complete and receives more frequent updates.

Can an agent turn a feature on for real users?

Yes. update-feature-flag takes effect without a deploy, and the server has no read-only mode. Restrict write tools in your MCP client.

What are the AI config tools for?

AI configs control which model and prompt an agent runs on, managed behind a flag. Eleven of the twenty tools cover them, and updating targeting changes model selection in production.

Can it tell me whether a rollout caused a problem?

No. LaunchDarkly records the flag change; the effect is in your telemetry. Pair it with an observability connector.

Changelog

  • 8 May 2026. launchdarkly/mcp-server v0.6.2 released, the most recent version.
  • 22 May 2025. First release, v0.2.4.

Sources

Every number on this page traces to one of these

  1. Repository facts from the GitHub API · launchdarkly/mcp-server, retrieved 21 August 2026
  2. Hosted-versus-local guidance and the EU and Federal scope from the repository README
  3. Tool counts and the read-write split from the server's own tools/list response

LaunchDarkly’s own MCP documentation

Also release and delivery:

For what a rollout does to production: