[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-launchdarkly-mcp-configure":3,"mdc-r9o0gh-key":34,"related-org-launchdarkly-mcp-configure":979,"related-repo-launchdarkly-mcp-configure":1115},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":29,"sourceUrl":32,"mdContent":33},"mcp-configure","configure LaunchDarkly MCP server","Configure the LaunchDarkly hosted MCP server during onboarding. Use when the parent LaunchDarkly onboarding skill reaches Step 4 (MCP). Supports Cursor, Claude Code, Windsurf, GitHub Copilot, and other MCP-compatible agents. OAuth authentication; no API keys for the hosted server.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"launchdarkly","LaunchDarkly","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Flaunchdarkly.png",[12,16,19],{"name":13,"slug":14,"type":15},"MCP","mcp","tag",{"name":17,"slug":18,"type":15},"AI Infrastructure","ai-infrastructure",{"name":9,"slug":8,"type":15},20,"https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling","2026-04-16T05:07:59.346989","Apache-2.0",6,[26,27,28],"agent-skills","launchdarkly-ai","managed-by-terraform",{"repoUrl":21,"stars":20,"forks":24,"topics":30,"description":31},[26,27,28],"LaunchDarkly's official AI tooling","https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling\u002Ftree\u002FHEAD\u002Fskills\u002Fonboarding\u002Fmcp-configure","---\nname: mcp-configure\ndescription: \"Configure the LaunchDarkly hosted MCP server during onboarding. Use when the parent LaunchDarkly onboarding skill reaches Step 4 (MCP). Supports Cursor, Claude Code, Windsurf, GitHub Copilot, and other MCP-compatible agents. OAuth authentication; no API keys for the hosted server.\"\nlicense: Apache-2.0\ncompatibility: Requires an MCP-compatible coding agent and a LaunchDarkly account\nmetadata:\n  author: launchdarkly\n  version: \"0.1.0\"\n---\n\n# LaunchDarkly MCP Server Configuration (onboarding)\n\nConfigures the LaunchDarkly hosted MCP server so flag management skills and onboarding can use MCP tools. Uses OAuth for authentication — no API keys needed for the hosted server.\n\nThis skill is nested under [LaunchDarkly onboarding](..\u002FSKILL.md); the parent skill's **Step 4** hands off here. **Hosted MCP** is the default and the only supported option for this onboarding flow.\n\n## Prerequisites\n\n- A LaunchDarkly account (sign up at the resolved signup URL — see [Source Attribution](..\u002FSKILL.md#source-attribution) in the parent skill; default: `https:\u002F\u002Fapp.launchdarkly.com\u002Fsignup?source=agent`)\n- An MCP-compatible coding agent\n\n## Hosted MCP Server\n\nLaunchDarkly provides a unified hosted MCP server that handles feature management, AgentControl, and other LaunchDarkly capabilities.\n\n| Server      | URL                                              | Purpose                                      |\n| ----------- | ------------------------------------------------ | -------------------------------------------- |\n| LaunchDarkly | `https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly` | Feature flags, AgentControl, and more |\n\n## Workflow\n\n### Step 1: Detect the Agent\n\nIf the parent onboarding skill already identified the agent, use that context. Otherwise infer from agent-specific directories, config files, and the tools available to you at runtime. Do not ask the user — pick the strongest match.\n\n### Step 2: Try Quick Install\n\nThe fastest path is the quick install link. Present it to the user:\n\n**LaunchDarkly MCP:** [https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly\u002Finstall](https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly\u002Finstall)\n\n**Important: tell the user what to expect after clicking the link.** The install link may open in the browser, but the authorization or \"add server\" prompt typically appears **back in the coding environment** (the editor or host app where the agent runs), not in the browser. Immediately after presenting the link, include guidance like:\n\n- After clicking the link, watch your coding environment (the editor where this conversation is running) for an approval dialog, an \"add MCP server\" prompt, or a tools\u002Fintegrations panel notification.\n- The browser may start the OAuth flow, but you'll likely need to confirm or approve the server in the editor itself.\n- **If no prompt appears:** check the editor's MCP, integrations, or tools settings area to see if the server was added but needs to be enabled. If it's not there at all, fall back to manual setup (Step 3 below).\n\nIf the quick install link doesn't work (agent doesn't support it, or user prefers manual setup), proceed to Step 3.\n\n### Step 3: Manual Configuration\n\nLocate the MCP config file for the detected agent and add the hosted server entry. See [MCP Config Templates](references\u002Fmcp-config-templates.md) for the exact JSON per agent.\n\n| Agent          | Config file location                                       |\n| -------------- | ---------------------------------------------------------- |\n| Cursor         | `.cursor\u002Fmcp.json` (project) or global Cursor settings     |\n| Claude Code    | `.mcp.json` (project) or `~\u002F.claude.json` (global)         |\n| GitHub Copilot | Repo **Settings** on GitHub.com → Copilot → Cloud agent → MCP (see [MCP UI links](references\u002Fmcp-ui-links.md)) |\n| Windsurf       | Agent-specific MCP config                                  |\n\nThe unified server handles both feature management and AgentControl, so only one server entry is needed.\n\n### Step 4: Agent-Specific Authorization\n\nAfter writing the config, some agents need extra steps. **Do not** send users through long manual menu paths only—use [MCP UI links](references\u002Fmcp-ui-links.md) (HTTPS docs + `command:` shortcuts for VS Code \u002F Cursor).\n\n**Cursor:**\n\n1. Open MCP in Cursor using the [Cursor MCP doc link and in-app shortcuts](references\u002Fmcp-ui-links.md#clients) (e.g. Settings search via `command:` link when clickable).\n2. Toggle on **LaunchDarkly** (or the name from your config).\n3. Click **Connect** to authorize with the LaunchDarkly account.\n\n**VS Code (when applicable):**\n\n- Use [VS Code MCP doc + `mcp.json` \u002F Settings links](references\u002Fmcp-ui-links.md#clients); trust or start the server if prompted.\n\n**Claude Code:**\n\n- Authorization happens automatically on first MCP tool call via OAuth prompt. File-based setup: [Claude Code MCP doc](https:\u002F\u002Fdocs.claude.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fmcp).\n\n**GitHub Copilot:**\n\n- Click **Save** after adding the MCP configuration in repo settings. Use the [GitHub Copilot MCP doc](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fcustomizing-copilot\u002Fextending-copilot-coding-agent-with-mcp) for the exact **Settings** path on github.com.\n\n### Step 5: Enable and Verify\n\nAfter adding the config, the user needs to enable and authorize the server. MCP tools may become available immediately in some agents (Cursor, Claude Code) without a restart.\n\n1. **Tell the user to enable the server.** They need to toggle on the LaunchDarkly server and complete OAuth in their editor's MCP settings (e.g. in Cursor: toggle on the server and click **Connect**).\n2. **Probe immediately.** After the user confirms they've enabled the server, call a lightweight MCP tool (e.g. `list-feature-flags` with the known project key). Do not ask the user whether MCP is working — just try it.\n   - **Success** (normal response, even an empty flag list): MCP is live. Note it in the onboarding log and continue.\n   - **Failure** (tool not found, auth error, timeout): **update the onboarding log first** (set Step 4 to \"in progress - pending restart\", Next step to \"Step 4: Verify MCP after restart\"), then suggest a restart with clear resume instructions:\n     > \"MCP tools aren't available yet. Try restarting your editor. When you come back, just say **'continue LaunchDarkly onboarding'** — I'll pick up where we left off using the onboarding log.\"\n3. **If restart doesn't help**, fall back to ldcli\u002FAPI for Steps 5-6. Note the fallback in the onboarding log. Do **not** block the rest of onboarding.\n4. If the failure looks like a config issue (wrong file path, missing OAuth, server not enabled), mention the likely cause so the user can fix it on their own time — but do not block progress.\n\n## Edge Cases\n\n- **User already has MCP configured:** Verify by checking for existing LD MCP entries in the config.\n  - `mcp\u002Flaunchdarkly` → working, skip configuration\n  - `mcp\u002Ffm` or `mcp\u002Faiconfigs` → deprecated, ask before migrating:\n\n    **D-MIGRATE -- BLOCKING:** Call your structured question tool now.\n    - question: \"I see you have a deprecated MCP server configured (`mcp\u002Ffm` and\u002For `mcp\u002Faiconfigs`). Those endpoints are deprecated — the unified server at `mcp\u002Flaunchdarkly` now handles both feature management and AgentControl. Want me to update your config?\"\n    - options:\n      - \"Yes, update my config to use the unified server\"\n      - \"No, leave it as is for now\"\n    - STOP. Do not modify the MCP config before the user selects an option.\n\n    If they agree, remove the deprecated entries and ensure the unified `mcp\u002Flaunchdarkly` config is present. See [MCP Config Templates](references\u002Fmcp-config-templates.md). If they decline, note the deprecation and continue.\n- **User has the old npx-based local server:** Migrate them. Remove the old `npx @launchdarkly\u002Fmcp-server` entry and any `LD_ACCESS_TOKEN` env vars. Replace with the hosted server config. See [MCP Config Templates — Migration](references\u002Fmcp-config-templates.md#migrating-from-old-configurations).\n- **Agent not in known list:** Provide the generic pattern: the user needs to add an MCP server entry pointing to `https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly` using whatever format their agent expects.\n- **User opts out of MCP during onboarding:** Document that choice and continue with the parent skill's ldcli\u002FAPI fallbacks for environments and flags; do not block SDK work.\n\n## What NOT to Do\n\n- Don't configure the old npx-based local server. Use the hosted server.\n- Don't ask for or store API keys for the hosted server. The hosted server uses OAuth.\n- Don't configure the old separate FM\u002FAgentControl servers. Use the unified `mcp\u002Flaunchdarkly` server.\n\n## References\n\n- [MCP UI links](references\u002Fmcp-ui-links.md) — HTTPS + `command:` links to open MCP settings (Cursor, VS Code, Claude Code, Windsurf, GitHub)\n- [MCP Config Templates](references\u002Fmcp-config-templates.md) — hosted OAuth JSON per agent; migration from old configurations\n- [Official MCP docs](https:\u002F\u002Flaunchdarkly.com\u002Fdocs\u002Fhome\u002Fgetting-started\u002Fmcp-hosted) — full hosted setup guide\n",{"data":35,"body":39},{"name":4,"description":6,"license":23,"compatibility":36,"metadata":37},"Requires an MCP-compatible coding agent and a LaunchDarkly account",{"author":8,"version":38},"0.1.0",{"type":40,"children":41},"root",[42,51,57,86,93,125,131,136,190,196,203,208,214,219,236,253,276,281,287,300,408,413,419,445,453,500,508,531,539,556,564,593,599,604,709,715,902,908,933,939],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"launchdarkly-mcp-server-configuration-onboarding",[48],{"type":49,"value":50},"text","LaunchDarkly MCP Server Configuration (onboarding)",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Configures the LaunchDarkly hosted MCP server so flag management skills and onboarding can use MCP tools. Uses OAuth for authentication — no API keys needed for the hosted server.",{"type":43,"tag":52,"props":58,"children":59},{},[60,62,69,71,77,79,84],{"type":49,"value":61},"This skill is nested under ",{"type":43,"tag":63,"props":64,"children":66},"a",{"href":65},"..\u002FSKILL.md",[67],{"type":49,"value":68},"LaunchDarkly onboarding",{"type":49,"value":70},"; the parent skill's ",{"type":43,"tag":72,"props":73,"children":74},"strong",{},[75],{"type":49,"value":76},"Step 4",{"type":49,"value":78}," hands off here. ",{"type":43,"tag":72,"props":80,"children":81},{},[82],{"type":49,"value":83},"Hosted MCP",{"type":49,"value":85}," is the default and the only supported option for this onboarding flow.",{"type":43,"tag":87,"props":88,"children":90},"h2",{"id":89},"prerequisites",[91],{"type":49,"value":92},"Prerequisites",{"type":43,"tag":94,"props":95,"children":96},"ul",{},[97,120],{"type":43,"tag":98,"props":99,"children":100},"li",{},[101,103,109,111,118],{"type":49,"value":102},"A LaunchDarkly account (sign up at the resolved signup URL — see ",{"type":43,"tag":63,"props":104,"children":106},{"href":105},"..\u002FSKILL.md#source-attribution",[107],{"type":49,"value":108},"Source Attribution",{"type":49,"value":110}," in the parent skill; default: ",{"type":43,"tag":112,"props":113,"children":115},"code",{"className":114},[],[116],{"type":49,"value":117},"https:\u002F\u002Fapp.launchdarkly.com\u002Fsignup?source=agent",{"type":49,"value":119},")",{"type":43,"tag":98,"props":121,"children":122},{},[123],{"type":49,"value":124},"An MCP-compatible coding agent",{"type":43,"tag":87,"props":126,"children":128},{"id":127},"hosted-mcp-server",[129],{"type":49,"value":130},"Hosted MCP Server",{"type":43,"tag":52,"props":132,"children":133},{},[134],{"type":49,"value":135},"LaunchDarkly provides a unified hosted MCP server that handles feature management, AgentControl, and other LaunchDarkly capabilities.",{"type":43,"tag":137,"props":138,"children":139},"table",{},[140,164],{"type":43,"tag":141,"props":142,"children":143},"thead",{},[144],{"type":43,"tag":145,"props":146,"children":147},"tr",{},[148,154,159],{"type":43,"tag":149,"props":150,"children":151},"th",{},[152],{"type":49,"value":153},"Server",{"type":43,"tag":149,"props":155,"children":156},{},[157],{"type":49,"value":158},"URL",{"type":43,"tag":149,"props":160,"children":161},{},[162],{"type":49,"value":163},"Purpose",{"type":43,"tag":165,"props":166,"children":167},"tbody",{},[168],{"type":43,"tag":145,"props":169,"children":170},{},[171,176,185],{"type":43,"tag":172,"props":173,"children":174},"td",{},[175],{"type":49,"value":9},{"type":43,"tag":172,"props":177,"children":178},{},[179],{"type":43,"tag":112,"props":180,"children":182},{"className":181},[],[183],{"type":49,"value":184},"https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly",{"type":43,"tag":172,"props":186,"children":187},{},[188],{"type":49,"value":189},"Feature flags, AgentControl, and more",{"type":43,"tag":87,"props":191,"children":193},{"id":192},"workflow",[194],{"type":49,"value":195},"Workflow",{"type":43,"tag":197,"props":198,"children":200},"h3",{"id":199},"step-1-detect-the-agent",[201],{"type":49,"value":202},"Step 1: Detect the Agent",{"type":43,"tag":52,"props":204,"children":205},{},[206],{"type":49,"value":207},"If the parent onboarding skill already identified the agent, use that context. Otherwise infer from agent-specific directories, config files, and the tools available to you at runtime. Do not ask the user — pick the strongest match.",{"type":43,"tag":197,"props":209,"children":211},{"id":210},"step-2-try-quick-install",[212],{"type":49,"value":213},"Step 2: Try Quick Install",{"type":43,"tag":52,"props":215,"children":216},{},[217],{"type":49,"value":218},"The fastest path is the quick install link. Present it to the user:",{"type":43,"tag":52,"props":220,"children":221},{},[222,227,229],{"type":43,"tag":72,"props":223,"children":224},{},[225],{"type":49,"value":226},"LaunchDarkly MCP:",{"type":49,"value":228}," ",{"type":43,"tag":63,"props":230,"children":234},{"href":231,"rel":232},"https:\u002F\u002Fmcp.launchdarkly.com\u002Fmcp\u002Flaunchdarkly\u002Finstall",[233],"nofollow",[235],{"type":49,"value":231},{"type":43,"tag":52,"props":237,"children":238},{},[239,244,246,251],{"type":43,"tag":72,"props":240,"children":241},{},[242],{"type":49,"value":243},"Important: tell the user what to expect after clicking the link.",{"type":49,"value":245}," The install link may open in the browser, but the authorization or \"add server\" prompt typically appears ",{"type":43,"tag":72,"props":247,"children":248},{},[249],{"type":49,"value":250},"back in the coding environment",{"type":49,"value":252}," (the editor or host app where the agent runs), not in the browser. Immediately after presenting the link, include guidance like:",{"type":43,"tag":94,"props":254,"children":255},{},[256,261,266],{"type":43,"tag":98,"props":257,"children":258},{},[259],{"type":49,"value":260},"After clicking the link, watch your coding environment (the editor where this conversation is running) for an approval dialog, an \"add MCP server\" prompt, or a tools\u002Fintegrations panel notification.",{"type":43,"tag":98,"props":262,"children":263},{},[264],{"type":49,"value":265},"The browser may start the OAuth flow, but you'll likely need to confirm or approve the server in the editor itself.",{"type":43,"tag":98,"props":267,"children":268},{},[269,274],{"type":43,"tag":72,"props":270,"children":271},{},[272],{"type":49,"value":273},"If no prompt appears:",{"type":49,"value":275}," check the editor's MCP, integrations, or tools settings area to see if the server was added but needs to be enabled. If it's not there at all, fall back to manual setup (Step 3 below).",{"type":43,"tag":52,"props":277,"children":278},{},[279],{"type":49,"value":280},"If the quick install link doesn't work (agent doesn't support it, or user prefers manual setup), proceed to Step 3.",{"type":43,"tag":197,"props":282,"children":284},{"id":283},"step-3-manual-configuration",[285],{"type":49,"value":286},"Step 3: Manual Configuration",{"type":43,"tag":52,"props":288,"children":289},{},[290,292,298],{"type":49,"value":291},"Locate the MCP config file for the detected agent and add the hosted server entry. See ",{"type":43,"tag":63,"props":293,"children":295},{"href":294},"references\u002Fmcp-config-templates.md",[296],{"type":49,"value":297},"MCP Config Templates",{"type":49,"value":299}," for the exact JSON per agent.",{"type":43,"tag":137,"props":301,"children":302},{},[303,319],{"type":43,"tag":141,"props":304,"children":305},{},[306],{"type":43,"tag":145,"props":307,"children":308},{},[309,314],{"type":43,"tag":149,"props":310,"children":311},{},[312],{"type":49,"value":313},"Agent",{"type":43,"tag":149,"props":315,"children":316},{},[317],{"type":49,"value":318},"Config file location",{"type":43,"tag":165,"props":320,"children":321},{},[322,341,368,395],{"type":43,"tag":145,"props":323,"children":324},{},[325,330],{"type":43,"tag":172,"props":326,"children":327},{},[328],{"type":49,"value":329},"Cursor",{"type":43,"tag":172,"props":331,"children":332},{},[333,339],{"type":43,"tag":112,"props":334,"children":336},{"className":335},[],[337],{"type":49,"value":338},".cursor\u002Fmcp.json",{"type":49,"value":340}," (project) or global Cursor settings",{"type":43,"tag":145,"props":342,"children":343},{},[344,349],{"type":43,"tag":172,"props":345,"children":346},{},[347],{"type":49,"value":348},"Claude Code",{"type":43,"tag":172,"props":350,"children":351},{},[352,358,360,366],{"type":43,"tag":112,"props":353,"children":355},{"className":354},[],[356],{"type":49,"value":357},".mcp.json",{"type":49,"value":359}," (project) or ",{"type":43,"tag":112,"props":361,"children":363},{"className":362},[],[364],{"type":49,"value":365},"~\u002F.claude.json",{"type":49,"value":367}," (global)",{"type":43,"tag":145,"props":369,"children":370},{},[371,376],{"type":43,"tag":172,"props":372,"children":373},{},[374],{"type":49,"value":375},"GitHub Copilot",{"type":43,"tag":172,"props":377,"children":378},{},[379,381,386,388,394],{"type":49,"value":380},"Repo ",{"type":43,"tag":72,"props":382,"children":383},{},[384],{"type":49,"value":385},"Settings",{"type":49,"value":387}," on GitHub.com → Copilot → Cloud agent → MCP (see ",{"type":43,"tag":63,"props":389,"children":391},{"href":390},"references\u002Fmcp-ui-links.md",[392],{"type":49,"value":393},"MCP UI links",{"type":49,"value":119},{"type":43,"tag":145,"props":396,"children":397},{},[398,403],{"type":43,"tag":172,"props":399,"children":400},{},[401],{"type":49,"value":402},"Windsurf",{"type":43,"tag":172,"props":404,"children":405},{},[406],{"type":49,"value":407},"Agent-specific MCP config",{"type":43,"tag":52,"props":409,"children":410},{},[411],{"type":49,"value":412},"The unified server handles both feature management and AgentControl, so only one server entry is needed.",{"type":43,"tag":197,"props":414,"children":416},{"id":415},"step-4-agent-specific-authorization",[417],{"type":49,"value":418},"Step 4: Agent-Specific Authorization",{"type":43,"tag":52,"props":420,"children":421},{},[422,424,429,431,435,437,443],{"type":49,"value":423},"After writing the config, some agents need extra steps. ",{"type":43,"tag":72,"props":425,"children":426},{},[427],{"type":49,"value":428},"Do not",{"type":49,"value":430}," send users through long manual menu paths only—use ",{"type":43,"tag":63,"props":432,"children":433},{"href":390},[434],{"type":49,"value":393},{"type":49,"value":436}," (HTTPS docs + ",{"type":43,"tag":112,"props":438,"children":440},{"className":439},[],[441],{"type":49,"value":442},"command:",{"type":49,"value":444}," shortcuts for VS Code \u002F Cursor).",{"type":43,"tag":52,"props":446,"children":447},{},[448],{"type":43,"tag":72,"props":449,"children":450},{},[451],{"type":49,"value":452},"Cursor:",{"type":43,"tag":454,"props":455,"children":456},"ol",{},[457,477,488],{"type":43,"tag":98,"props":458,"children":459},{},[460,462,468,470,475],{"type":49,"value":461},"Open MCP in Cursor using the ",{"type":43,"tag":63,"props":463,"children":465},{"href":464},"references\u002Fmcp-ui-links.md#clients",[466],{"type":49,"value":467},"Cursor MCP doc link and in-app shortcuts",{"type":49,"value":469}," (e.g. Settings search via ",{"type":43,"tag":112,"props":471,"children":473},{"className":472},[],[474],{"type":49,"value":442},{"type":49,"value":476}," link when clickable).",{"type":43,"tag":98,"props":478,"children":479},{},[480,482,486],{"type":49,"value":481},"Toggle on ",{"type":43,"tag":72,"props":483,"children":484},{},[485],{"type":49,"value":9},{"type":49,"value":487}," (or the name from your config).",{"type":43,"tag":98,"props":489,"children":490},{},[491,493,498],{"type":49,"value":492},"Click ",{"type":43,"tag":72,"props":494,"children":495},{},[496],{"type":49,"value":497},"Connect",{"type":49,"value":499}," to authorize with the LaunchDarkly account.",{"type":43,"tag":52,"props":501,"children":502},{},[503],{"type":43,"tag":72,"props":504,"children":505},{},[506],{"type":49,"value":507},"VS Code (when applicable):",{"type":43,"tag":94,"props":509,"children":510},{},[511],{"type":43,"tag":98,"props":512,"children":513},{},[514,516,529],{"type":49,"value":515},"Use ",{"type":43,"tag":63,"props":517,"children":518},{"href":464},[519,521,527],{"type":49,"value":520},"VS Code MCP doc + ",{"type":43,"tag":112,"props":522,"children":524},{"className":523},[],[525],{"type":49,"value":526},"mcp.json",{"type":49,"value":528}," \u002F Settings links",{"type":49,"value":530},"; trust or start the server if prompted.",{"type":43,"tag":52,"props":532,"children":533},{},[534],{"type":43,"tag":72,"props":535,"children":536},{},[537],{"type":49,"value":538},"Claude Code:",{"type":43,"tag":94,"props":540,"children":541},{},[542],{"type":43,"tag":98,"props":543,"children":544},{},[545,547,554],{"type":49,"value":546},"Authorization happens automatically on first MCP tool call via OAuth prompt. File-based setup: ",{"type":43,"tag":63,"props":548,"children":551},{"href":549,"rel":550},"https:\u002F\u002Fdocs.claude.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fmcp",[233],[552],{"type":49,"value":553},"Claude Code MCP doc",{"type":49,"value":555},".",{"type":43,"tag":52,"props":557,"children":558},{},[559],{"type":43,"tag":72,"props":560,"children":561},{},[562],{"type":49,"value":563},"GitHub Copilot:",{"type":43,"tag":94,"props":565,"children":566},{},[567],{"type":43,"tag":98,"props":568,"children":569},{},[570,571,576,578,585,587,591],{"type":49,"value":492},{"type":43,"tag":72,"props":572,"children":573},{},[574],{"type":49,"value":575},"Save",{"type":49,"value":577}," after adding the MCP configuration in repo settings. Use the ",{"type":43,"tag":63,"props":579,"children":582},{"href":580,"rel":581},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fcustomizing-copilot\u002Fextending-copilot-coding-agent-with-mcp",[233],[583],{"type":49,"value":584},"GitHub Copilot MCP doc",{"type":49,"value":586}," for the exact ",{"type":43,"tag":72,"props":588,"children":589},{},[590],{"type":49,"value":385},{"type":49,"value":592}," path on github.com.",{"type":43,"tag":197,"props":594,"children":596},{"id":595},"step-5-enable-and-verify",[597],{"type":49,"value":598},"Step 5: Enable and Verify",{"type":43,"tag":52,"props":600,"children":601},{},[602],{"type":49,"value":603},"After adding the config, the user needs to enable and authorize the server. MCP tools may become available immediately in some agents (Cursor, Claude Code) without a restart.",{"type":43,"tag":454,"props":605,"children":606},{},[607,623,687,704],{"type":43,"tag":98,"props":608,"children":609},{},[610,615,617,621],{"type":43,"tag":72,"props":611,"children":612},{},[613],{"type":49,"value":614},"Tell the user to enable the server.",{"type":49,"value":616}," They need to toggle on the LaunchDarkly server and complete OAuth in their editor's MCP settings (e.g. in Cursor: toggle on the server and click ",{"type":43,"tag":72,"props":618,"children":619},{},[620],{"type":49,"value":497},{"type":49,"value":622},").",{"type":43,"tag":98,"props":624,"children":625},{},[626,631,633,639,641],{"type":43,"tag":72,"props":627,"children":628},{},[629],{"type":49,"value":630},"Probe immediately.",{"type":49,"value":632}," After the user confirms they've enabled the server, call a lightweight MCP tool (e.g. ",{"type":43,"tag":112,"props":634,"children":636},{"className":635},[],[637],{"type":49,"value":638},"list-feature-flags",{"type":49,"value":640}," with the known project key). Do not ask the user whether MCP is working — just try it.\n",{"type":43,"tag":94,"props":642,"children":643},{},[644,654],{"type":43,"tag":98,"props":645,"children":646},{},[647,652],{"type":43,"tag":72,"props":648,"children":649},{},[650],{"type":49,"value":651},"Success",{"type":49,"value":653}," (normal response, even an empty flag list): MCP is live. Note it in the onboarding log and continue.",{"type":43,"tag":98,"props":655,"children":656},{},[657,662,664,669,671],{"type":43,"tag":72,"props":658,"children":659},{},[660],{"type":49,"value":661},"Failure",{"type":49,"value":663}," (tool not found, auth error, timeout): ",{"type":43,"tag":72,"props":665,"children":666},{},[667],{"type":49,"value":668},"update the onboarding log first",{"type":49,"value":670}," (set Step 4 to \"in progress - pending restart\", Next step to \"Step 4: Verify MCP after restart\"), then suggest a restart with clear resume instructions:\n",{"type":43,"tag":672,"props":673,"children":674},"blockquote",{},[675],{"type":43,"tag":52,"props":676,"children":677},{},[678,680,685],{"type":49,"value":679},"\"MCP tools aren't available yet. Try restarting your editor. When you come back, just say ",{"type":43,"tag":72,"props":681,"children":682},{},[683],{"type":49,"value":684},"'continue LaunchDarkly onboarding'",{"type":49,"value":686}," — I'll pick up where we left off using the onboarding log.\"",{"type":43,"tag":98,"props":688,"children":689},{},[690,695,697,702],{"type":43,"tag":72,"props":691,"children":692},{},[693],{"type":49,"value":694},"If restart doesn't help",{"type":49,"value":696},", fall back to ldcli\u002FAPI for Steps 5-6. Note the fallback in the onboarding log. Do ",{"type":43,"tag":72,"props":698,"children":699},{},[700],{"type":49,"value":701},"not",{"type":49,"value":703}," block the rest of onboarding.",{"type":43,"tag":98,"props":705,"children":706},{},[707],{"type":49,"value":708},"If the failure looks like a config issue (wrong file path, missing OAuth, server not enabled), mention the likely cause so the user can fix it on their own time — but do not block progress.",{"type":43,"tag":87,"props":710,"children":712},{"id":711},"edge-cases",[713],{"type":49,"value":714},"Edge Cases",{"type":43,"tag":94,"props":716,"children":717},{},[718,842,875,892],{"type":43,"tag":98,"props":719,"children":720},{},[721,726,728],{"type":43,"tag":72,"props":722,"children":723},{},[724],{"type":49,"value":725},"User already has MCP configured:",{"type":49,"value":727}," Verify by checking for existing LD MCP entries in the config.\n",{"type":43,"tag":94,"props":729,"children":730},{},[731,742],{"type":43,"tag":98,"props":732,"children":733},{},[734,740],{"type":43,"tag":112,"props":735,"children":737},{"className":736},[],[738],{"type":49,"value":739},"mcp\u002Flaunchdarkly",{"type":49,"value":741}," → working, skip configuration",{"type":43,"tag":98,"props":743,"children":744},{},[745,751,753,759,761,765,770,772,824,827,829,834,836,840],{"type":43,"tag":112,"props":746,"children":748},{"className":747},[],[749],{"type":49,"value":750},"mcp\u002Ffm",{"type":49,"value":752}," or ",{"type":43,"tag":112,"props":754,"children":756},{"className":755},[],[757],{"type":49,"value":758},"mcp\u002Faiconfigs",{"type":49,"value":760}," → deprecated, ask before migrating:",{"type":43,"tag":762,"props":763,"children":764},"br",{},[],{"type":43,"tag":72,"props":766,"children":767},{},[768],{"type":49,"value":769},"D-MIGRATE -- BLOCKING:",{"type":49,"value":771}," Call your structured question tool now.",{"type":43,"tag":94,"props":773,"children":774},{},[775,801,819],{"type":43,"tag":98,"props":776,"children":777},{},[778,780,785,787,792,794,799],{"type":49,"value":779},"question: \"I see you have a deprecated MCP server configured (",{"type":43,"tag":112,"props":781,"children":783},{"className":782},[],[784],{"type":49,"value":750},{"type":49,"value":786}," and\u002For ",{"type":43,"tag":112,"props":788,"children":790},{"className":789},[],[791],{"type":49,"value":758},{"type":49,"value":793},"). Those endpoints are deprecated — the unified server at ",{"type":43,"tag":112,"props":795,"children":797},{"className":796},[],[798],{"type":49,"value":739},{"type":49,"value":800}," now handles both feature management and AgentControl. Want me to update your config?\"",{"type":43,"tag":98,"props":802,"children":803},{},[804,806],{"type":49,"value":805},"options:\n",{"type":43,"tag":94,"props":807,"children":808},{},[809,814],{"type":43,"tag":98,"props":810,"children":811},{},[812],{"type":49,"value":813},"\"Yes, update my config to use the unified server\"",{"type":43,"tag":98,"props":815,"children":816},{},[817],{"type":49,"value":818},"\"No, leave it as is for now\"",{"type":43,"tag":98,"props":820,"children":821},{},[822],{"type":49,"value":823},"STOP. Do not modify the MCP config before the user selects an option.",{"type":43,"tag":762,"props":825,"children":826},{},[],{"type":49,"value":828},"If they agree, remove the deprecated entries and ensure the unified ",{"type":43,"tag":112,"props":830,"children":832},{"className":831},[],[833],{"type":49,"value":739},{"type":49,"value":835}," config is present. See ",{"type":43,"tag":63,"props":837,"children":838},{"href":294},[839],{"type":49,"value":297},{"type":49,"value":841},". If they decline, note the deprecation and continue.",{"type":43,"tag":98,"props":843,"children":844},{},[845,850,852,858,860,866,868,874],{"type":43,"tag":72,"props":846,"children":847},{},[848],{"type":49,"value":849},"User has the old npx-based local server:",{"type":49,"value":851}," Migrate them. Remove the old ",{"type":43,"tag":112,"props":853,"children":855},{"className":854},[],[856],{"type":49,"value":857},"npx @launchdarkly\u002Fmcp-server",{"type":49,"value":859}," entry and any ",{"type":43,"tag":112,"props":861,"children":863},{"className":862},[],[864],{"type":49,"value":865},"LD_ACCESS_TOKEN",{"type":49,"value":867}," env vars. Replace with the hosted server config. See ",{"type":43,"tag":63,"props":869,"children":871},{"href":870},"references\u002Fmcp-config-templates.md#migrating-from-old-configurations",[872],{"type":49,"value":873},"MCP Config Templates — Migration",{"type":49,"value":555},{"type":43,"tag":98,"props":876,"children":877},{},[878,883,885,890],{"type":43,"tag":72,"props":879,"children":880},{},[881],{"type":49,"value":882},"Agent not in known list:",{"type":49,"value":884}," Provide the generic pattern: the user needs to add an MCP server entry pointing to ",{"type":43,"tag":112,"props":886,"children":888},{"className":887},[],[889],{"type":49,"value":184},{"type":49,"value":891}," using whatever format their agent expects.",{"type":43,"tag":98,"props":893,"children":894},{},[895,900],{"type":43,"tag":72,"props":896,"children":897},{},[898],{"type":49,"value":899},"User opts out of MCP during onboarding:",{"type":49,"value":901}," Document that choice and continue with the parent skill's ldcli\u002FAPI fallbacks for environments and flags; do not block SDK work.",{"type":43,"tag":87,"props":903,"children":905},{"id":904},"what-not-to-do",[906],{"type":49,"value":907},"What NOT to Do",{"type":43,"tag":94,"props":909,"children":910},{},[911,916,921],{"type":43,"tag":98,"props":912,"children":913},{},[914],{"type":49,"value":915},"Don't configure the old npx-based local server. Use the hosted server.",{"type":43,"tag":98,"props":917,"children":918},{},[919],{"type":49,"value":920},"Don't ask for or store API keys for the hosted server. The hosted server uses OAuth.",{"type":43,"tag":98,"props":922,"children":923},{},[924,926,931],{"type":49,"value":925},"Don't configure the old separate FM\u002FAgentControl servers. Use the unified ",{"type":43,"tag":112,"props":927,"children":929},{"className":928},[],[930],{"type":49,"value":739},{"type":49,"value":932}," server.",{"type":43,"tag":87,"props":934,"children":936},{"id":935},"references",[937],{"type":49,"value":938},"References",{"type":43,"tag":94,"props":940,"children":941},{},[942,958,967],{"type":43,"tag":98,"props":943,"children":944},{},[945,949,951,956],{"type":43,"tag":63,"props":946,"children":947},{"href":390},[948],{"type":49,"value":393},{"type":49,"value":950}," — HTTPS + ",{"type":43,"tag":112,"props":952,"children":954},{"className":953},[],[955],{"type":49,"value":442},{"type":49,"value":957}," links to open MCP settings (Cursor, VS Code, Claude Code, Windsurf, GitHub)",{"type":43,"tag":98,"props":959,"children":960},{},[961,965],{"type":43,"tag":63,"props":962,"children":963},{"href":294},[964],{"type":49,"value":297},{"type":49,"value":966}," — hosted OAuth JSON per agent; migration from old configurations",{"type":43,"tag":98,"props":968,"children":969},{},[970,977],{"type":43,"tag":63,"props":971,"children":974},{"href":972,"rel":973},"https:\u002F\u002Flaunchdarkly.com\u002Fdocs\u002Fhome\u002Fgetting-started\u002Fmcp-hosted",[233],[975],{"type":49,"value":976},"Official MCP docs",{"type":49,"value":978}," — full hosted setup guide",{"items":980,"total":1114},[981,998,1007,1021,1032,1044,1052,1066,1077,1086,1096,1105],{"slug":982,"name":982,"fn":983,"description":984,"org":985,"tags":986,"stars":20,"repoUrl":21,"updatedAt":997},"agent-graphs","create and manage agent graphs","Create and manage agent graphs — directed graphs of configs connected by edges with handoff logic. Use when building multi-agent workflows where configs route to each other.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[987,990,993,994],{"name":988,"slug":989,"type":15},"Agents","agents",{"name":991,"slug":992,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},{"name":995,"slug":996,"type":15},"Multi-Agent","multi-agent","2026-07-28T05:33:33.709407",{"slug":999,"name":999,"fn":1000,"description":1001,"org":1002,"tags":1003,"stars":20,"repoUrl":21,"updatedAt":1006},"aiconfig-agent-graphs","manage agent graphs","DEPRECATED redirect — this skill was renamed to agent-graphs. Do not use this skill; invoke agent-graphs instead. Kept only so old references to aiconfig-agent-graphs still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1004,1005],{"name":988,"slug":989,"type":15},{"name":991,"slug":992,"type":15},"2026-05-22T06:55:56.527064",{"slug":1008,"name":1008,"fn":1009,"description":1010,"org":1011,"tags":1012,"stars":20,"repoUrl":21,"updatedAt":1020},"aiconfig-ai-metrics","manage built-in AI metrics","DEPRECATED redirect — this skill was renamed to built-in-metrics. Do not use this skill; invoke built-in-metrics instead. Kept only so old references to aiconfig-ai-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1013,1016,1017],{"name":1014,"slug":1015,"type":15},"Analytics","analytics",{"name":9,"slug":8,"type":15},{"name":1018,"slug":1019,"type":15},"Metrics","metrics","2026-05-22T06:55:53.858749",{"slug":1022,"name":1022,"fn":1023,"description":1024,"org":1025,"tags":1026,"stars":20,"repoUrl":21,"updatedAt":1031},"aiconfig-create","redirect to configs-create skill","DEPRECATED redirect — this skill was renamed to configs-create. Do not use this skill; invoke configs-create instead. Kept only so old references to aiconfig-create still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1027,1028],{"name":9,"slug":8,"type":15},{"name":1029,"slug":1030,"type":15},"Reference","reference","2026-05-22T06:55:41.790591",{"slug":1033,"name":1033,"fn":1034,"description":1035,"org":1036,"tags":1037,"stars":20,"repoUrl":21,"updatedAt":1043},"aiconfig-custom-metrics","configure custom metrics in LaunchDarkly","DEPRECATED redirect — this skill was renamed to custom-metrics. Do not use this skill; invoke custom-metrics instead. Kept only so old references to aiconfig-custom-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1038,1039,1042],{"name":1014,"slug":1015,"type":15},{"name":1040,"slug":1041,"type":15},"Feature Flags","feature-flags",{"name":9,"slug":8,"type":15},"2026-05-22T06:55:57.84851",{"slug":1045,"name":1045,"fn":1046,"description":1047,"org":1048,"tags":1049,"stars":20,"repoUrl":21,"updatedAt":1051},"aiconfig-migrate","redirect to migrate skill","DEPRECATED redirect — this skill was renamed to migrate. Do not use this skill; invoke migrate instead. Kept only so old references to aiconfig-migrate still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1050],{"name":1029,"slug":1030,"type":15},"2026-05-22T06:55:44.464733",{"slug":1053,"name":1053,"fn":1054,"description":1055,"org":1056,"tags":1057,"stars":20,"repoUrl":21,"updatedAt":1065},"aiconfig-online-evals","run online evaluations","DEPRECATED redirect — this skill was renamed to online-evals. Do not use this skill; invoke online-evals instead. Kept only so old references to aiconfig-online-evals still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1058,1061,1062],{"name":1059,"slug":1060,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":1063,"slug":1064,"type":15},"Testing","testing","2026-05-22T06:55:55.179617",{"slug":1067,"name":1067,"fn":1068,"description":1069,"org":1070,"tags":1071,"stars":20,"repoUrl":21,"updatedAt":1076},"aiconfig-projects","manage AI configuration projects","DEPRECATED redirect — this skill was renamed to projects. Do not use this skill; invoke projects instead. Kept only so old references to aiconfig-projects still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1072,1075],{"name":1073,"slug":1074,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},"2026-05-22T06:55:48.522229",{"slug":1078,"name":1078,"fn":1079,"description":1080,"org":1081,"tags":1082,"stars":20,"repoUrl":21,"updatedAt":1085},"aiconfig-snippets","manage AI configuration snippets","DEPRECATED redirect — this skill was renamed to snippets. Do not use this skill; invoke snippets instead. Kept only so old references to aiconfig-snippets still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1083,1084],{"name":1073,"slug":1074,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:47.16557",{"slug":1087,"name":1087,"fn":1088,"description":1089,"org":1090,"tags":1091,"stars":20,"repoUrl":21,"updatedAt":1095},"aiconfig-targeting","configure LaunchDarkly targeting rules","DEPRECATED redirect — this skill was renamed to configs-targeting. Do not use this skill; invoke configs-targeting instead. Kept only so old references to aiconfig-targeting still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1092,1093,1094],{"name":1073,"slug":1074,"type":15},{"name":1040,"slug":1041,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:49.845445",{"slug":1097,"name":1097,"fn":1098,"description":1099,"org":1100,"tags":1101,"stars":20,"repoUrl":21,"updatedAt":1104},"aiconfig-tools","redirect to tools skill","DEPRECATED redirect — this skill was renamed to tools. Do not use this skill; invoke tools instead. Kept only so old references to aiconfig-tools still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1102,1103],{"name":9,"slug":8,"type":15},{"name":1029,"slug":1030,"type":15},"2026-05-22T06:55:39.13373",{"slug":1106,"name":1106,"fn":1107,"description":1108,"org":1109,"tags":1110,"stars":20,"repoUrl":21,"updatedAt":1113},"aiconfig-update","redirect to configs-update skill","DEPRECATED redirect — this skill was renamed to configs-update. Do not use this skill; invoke configs-update instead. Kept only so old references to aiconfig-update still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1111,1112],{"name":9,"slug":8,"type":15},{"name":1029,"slug":1030,"type":15},"2026-05-22T06:55:40.464884",49,{"items":1116,"total":1114},[1117,1124,1129,1135,1140,1146,1150],{"slug":982,"name":982,"fn":983,"description":984,"org":1118,"tags":1119,"stars":20,"repoUrl":21,"updatedAt":997},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1120,1121,1122,1123],{"name":988,"slug":989,"type":15},{"name":991,"slug":992,"type":15},{"name":9,"slug":8,"type":15},{"name":995,"slug":996,"type":15},{"slug":999,"name":999,"fn":1000,"description":1001,"org":1125,"tags":1126,"stars":20,"repoUrl":21,"updatedAt":1006},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1127,1128],{"name":988,"slug":989,"type":15},{"name":991,"slug":992,"type":15},{"slug":1008,"name":1008,"fn":1009,"description":1010,"org":1130,"tags":1131,"stars":20,"repoUrl":21,"updatedAt":1020},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1132,1133,1134],{"name":1014,"slug":1015,"type":15},{"name":9,"slug":8,"type":15},{"name":1018,"slug":1019,"type":15},{"slug":1022,"name":1022,"fn":1023,"description":1024,"org":1136,"tags":1137,"stars":20,"repoUrl":21,"updatedAt":1031},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1138,1139],{"name":9,"slug":8,"type":15},{"name":1029,"slug":1030,"type":15},{"slug":1033,"name":1033,"fn":1034,"description":1035,"org":1141,"tags":1142,"stars":20,"repoUrl":21,"updatedAt":1043},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1143,1144,1145],{"name":1014,"slug":1015,"type":15},{"name":1040,"slug":1041,"type":15},{"name":9,"slug":8,"type":15},{"slug":1045,"name":1045,"fn":1046,"description":1047,"org":1147,"tags":1148,"stars":20,"repoUrl":21,"updatedAt":1051},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1149],{"name":1029,"slug":1030,"type":15},{"slug":1053,"name":1053,"fn":1054,"description":1055,"org":1151,"tags":1152,"stars":20,"repoUrl":21,"updatedAt":1065},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1153,1154,1155],{"name":1059,"slug":1060,"type":15},{"name":9,"slug":8,"type":15},{"name":1063,"slug":1064,"type":15}]