[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-documentdb-mcp-setup":3,"mdc-ey22hp-key":32,"related-repo-azure-documentdb-mcp-setup":1838,"related-org-azure-documentdb-mcp-setup":1942},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"documentdb-mcp-setup","configure DocumentDB MCP server","Guide users through installing and configuring the DocumentDB MCP server for Azure DocumentDB. Use this skill when a user wants to wire the DocumentDB MCP server into an agentic client (Claude Code, Claude Desktop, Cursor, Copilot CLI, Gemini CLI, VS Code) and define a `CONNECTION_PROFILES` entry, or when they hit MCP connection \u002F auth \u002F profile errors.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Database","database",{"name":19,"slug":20,"type":14},"MCP","mcp",5,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fdocumentdb-agent-kit","2026-07-12T08:18:48.585505",null,7,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":29},[],"Agent Skills pack for Azure DocumentDB (MongoDB compatibility) - vector search, full-text search, query optimization, connection tuning, local deployment, security, HA, and MCP setup.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Ftree\u002FHEAD\u002Fskills\u002Fmcp-setup","---\nname: documentdb-mcp-setup\ndescription: Guide users through installing and configuring the DocumentDB MCP server for Azure DocumentDB. Use this skill when a user wants to wire the DocumentDB MCP server into an agentic client (Claude Code, Claude Desktop, Cursor, Copilot CLI, Gemini CLI, VS Code) and define a `CONNECTION_PROFILES` entry, or when they hit MCP connection \u002F auth \u002F profile errors.\n---\n\n# DocumentDB MCP Server Setup\n\nThis skill guides users through wiring the\n[`microsoft\u002Fdocumentdb-mcp`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp)\nserver into an agentic client and pointing it at Azure DocumentDB (or another\nMongoDB-compatible endpoint).\n\nThe DocumentDB MCP server is **stateless** and **administrator-controlled**:\nbackend connection details live in a `CONNECTION_PROFILES` JSON map defined in\nthe MCP client's config. Tools never accept a connection string as a runtime\nargument — they reference a named profile via `connection_profile`.\n\n## Safety: never receive credentials in chat\n\nThe DocumentDB connection string is a **secret** — it contains a username and\npassword that grant database access. The agent MUST follow these rules:\n\n1. **Never ask the user to paste a connection string, password, or token into\n   the chat.** Always instruct the user to add the value directly to their\n   local MCP config file themselves (or run the bundled installer, which\n   prompts via stdin instead of chat).\n2. **Never read, echo, log, or repeat back a credential** the user pasted by\n   mistake. If the user pastes one anyway, respond with: \"I won't process that\n   value — please delete it from the chat history and add it directly to your\n   client's MCP config instead,\" and continue with placeholders only. The\n   agent itself cannot remove messages it has already received — only the\n   user can delete the message from their chat history.\n3. **Never run a shell command that would print a credential to stdout.**\n4. **Never write the credential to any file the agent itself creates or\n   edits.** The agent only writes placeholder `[USER]:[PASSWORD]@...` (square\n   brackets defeat the `mongodb:\u002F\u002F[^:]+:[^@]+@` secret-scanner regex); the\n   user replaces it locally.\n5. **Never include a credential in a generated explanation, summary, commit\n   message, or example.** Use `\u003Credacted>` if you must reference its position.\n\nIf any step below appears to require a credential value, treat it as a\nplaceholder for the user to fill in locally.\n\n## Fastest path: bundled installer\n\nIf the user wants the quickest path and is willing to run a script, point them\nat the kit's installer, which installs both this skill pack and the MCP server\ninto every detected client in one command:\n\n```bash\n# macOS \u002F Linux\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.sh | bash\n\n# Windows (PowerShell)\nirm https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.ps1 | iex\n```\n\nThe installer prompts for a connection string, writes it as the `default`\nprofile, and configures all detected clients. The rest of this skill covers\nthe manual path (and is also the right reference when the installer fails or\nthe user wants to customize).\n\n## Manual setup overview\n\nSetup is per-client. For each client the user has installed:\n\n1. Make sure Node.js 20+ is available (the MCP server runs on Node).\n2. Find that client's MCP config file.\n3. Add a `DocumentDB` server entry that launches the upstream MCP server and\n   passes `CONNECTION_PROFILES` (and `TRANSPORT=stdio` + `AUTH_REQUIRED=false`\n   + `TRUST_LOCAL_STDIO=true` for local stdio use).\n4. Restart the client.\n\n## Step 1: Confirm prerequisites\n\n```bash\nnode --version   # must be >= 20\ngit --version    # required by `npx -y github:microsoft\u002Fdocumentdb-mcp`\n```\n\nIf either is missing, install them before continuing.\n\n## Step 2: Pick the connection target\n\n| Option | When to use | Example URI |\n|---|---|---|\n| **A. Azure DocumentDB** | Production \u002F cloud dev | `mongodb+srv:\u002F\u002F\u003Cuser>:\u003Cpw>@\u003Ccluster>.mongocluster.cosmos.azure.com\u002F?tls=true&authMechanism=SCRAM-SHA-256` |\n| **B. Local MongoDB \u002F DocumentDB** | Local dev | `mongodb:\u002F\u002Flocalhost:27017` |\n| **C. Custom MongoDB-compatible** | Atlas, self-hosted, third-party | `mongodb:\u002F\u002F\u003Cuser>:\u003Cpw>@host:port\u002F?tls=true` |\n\n**Azure DocumentDB connection string:** Azure portal → your DocumentDB cluster\n→ **Settings** → **Connection strings**. Replace `\u003Cusername>` \u002F `\u003Cpassword>`\nwith database user credentials. TLS is required (`tls=true` must be present).\n\n## Step 3: Pick a transport\n\n- **`stdio`** (default, recommended) — the client launches the server as a\n  subprocess. Use this for every client below.\n- **`streamable-http`** — only for browser clients or custom HTTP integrations\n  where you have a separate, long-running server with Entra-authenticated\n  bearer tokens. Not covered here; see the upstream README.\n\nFor stdio, set `AUTH_REQUIRED=false` and `TRUST_LOCAL_STDIO=true`.\nThe server defaults `AUTH_REQUIRED=true` and **exits at startup** unless\n`ENTRA_TENANT_ID` \u002F `ENTRA_AUDIENCE` are set, even for stdio.\n(`TRUST_LOCAL_STDIO` was named `ALLOW_UNAUTHENTICATED_STDIO` before\n[microsoft\u002Fdocumentdb-mcp#83](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp\u002Fpull\u002F83)\n— if you're on an older server build, use that name instead.)\n\n**`AUTH_REQUIRED=false` does not weaken your cluster's auth.** It gates only\nthe Entra-JWT bearer-token check on the MCP server's HTTP\u002FSSE transport —\ni.e., calls from the MCP client to this server. It is fully independent\nfrom how the MCP server talks to your DocumentDB cluster: SCRAM\nusername\u002Fpassword (from the connection-string URI) and Entra-to-cluster\ntokens (`authMode: \"entra\"`) flow through `CONNECTION_PROFILES` and stay\nactive regardless of `AUTH_REQUIRED`. TLS to the cluster (`tls=true`),\ncapability gates (`ENABLE_*_TOOLS`), and tool-tier authorization are also\nunaffected.\n\nThis setup is safe **only because `TRANSPORT=stdio`**: the MCP server runs\nas a subprocess of the trusted local client — no network listener is\nopened. If you ever switch `TRANSPORT` to `streamable-http` or `sse`, set\n`AUTH_REQUIRED=true` and provide the Entra tenant\u002Faudience, or the `\u002Fmcp`\nendpoint will be exposed unauthenticated.\n\n## Step 4: Write the MCP config\n\nThe MCP server entry has the same shape for every client. Only the wrapping\nconfig file and the top-level key (`mcpServers` vs `mcp.servers`) differ.\n\n**Server entry template** (substitute `\u003CCONN_STRING>` with the URI from Step 2):\n\n```jsonc\n{\n  \"DocumentDB\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"github:microsoft\u002Fdocumentdb-mcp\"],\n    \"env\": {\n      \"TRANSPORT\": \"stdio\",\n      \"AUTH_REQUIRED\": \"false\",\n      \"TRUST_LOCAL_STDIO\": \"true\",\n      \"CONNECTION_PROFILES\": \"{\\\"default\\\":{\\\"authMode\\\":\\\"connectionString\\\",\\\"uri\\\":\\\"\u003CCONN_STRING>\\\"}}\"\n    }\n  }\n}\n```\n\nNotes:\n\n- `CONNECTION_PROFILES` is a **JSON string** (escaped) — not a JSON object.\n- The profile name `default` is what agents pass to tool calls via the\n  `connection_profile` argument. You can use any name; `default` keeps it\n  simple.\n- To allow write or management tools, add `\"ENABLE_WRITE_TOOLS\": \"true\"` and\u002For\n  `\"ENABLE_MANAGEMENT_TOOLS\": \"true\"` to `env`. Read tools are on by default.\n- The first `npx -y github:...` invocation will clone and build the server\n  (~30 s on a fast connection). Subsequent invocations use the `npx` cache.\n  For faster startup, install once locally and point `command`\u002F`args` at the\n  built `node \u002Fpath\u002Fto\u002Fdist\u002Fmain.js` instead — this is what the bundled\n  installer does.\n\n### Client-specific config files\n\n| Client | Config file | Top-level key |\n|---|---|---|\n| **Claude Code** (user-scoped) | `~\u002F.claude.json` | `mcpServers` |\n| **Claude Desktop** | macOS: `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` \u003Cbr> Linux: `~\u002F.config\u002FClaude\u002Fclaude_desktop_config.json` \u003Cbr> Windows: `%APPDATA%\\Claude\\claude_desktop_config.json` | `mcpServers` |\n| **Cursor** (user-scoped) | `~\u002F.cursor\u002Fmcp.json` | `mcpServers` |\n| **GitHub Copilot CLI** | `~\u002F.copilot\u002Fmcp-config.json` | `mcpServers` |\n| **GitHub Copilot for VS Code** | VS Code `settings.json` | `mcp.servers` |\n| **Gemini CLI** | `~\u002F.gemini\u002Fsettings.json` | `mcpServers` |\n\nIf the file doesn't exist yet, create it with a single top-level object:\n\n```json\n{ \"mcpServers\": { \"DocumentDB\": { ... } } }\n```\n\nIf it already has other servers, **add** the `DocumentDB` entry inside the\nexisting `mcpServers` object — don't overwrite the whole file.\n\n## Step 5: Restart the client and verify\n\n1. **Fully quit** the client (not just close the window).\n2. Reopen it.\n3. Ask the agent to list available DocumentDB tools, or run a tool directly\n   (the agent should pass `connection_profile: \"default\"`):\n   - `list_databases` — confirms the server is reachable and the profile works\n   - `db_stats` — basic round-trip check\n\n## Troubleshooting\n\n- **`npx` errors \u002F repo not found**: the upstream `microsoft\u002Fdocumentdb-mcp`\n  repo may be private or unreachable. Check `git ls-remote\n  https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp.git`; if it fails, fall back to\n  cloning the repo manually, running `npm install && npm run build`, and\n  pointing `command` → `node`, `args` → `[\"\u003Cabs-path>\u002Fdist\u002Fmain.js\"]`.\n- **`stdio transport is disabled when AUTH_REQUIRED=true` \u002F `unauthenticated stdio is disabled`**:\n  you forgot `TRUST_LOCAL_STDIO: \"true\"` in `env` (or, on older builds before\n  microsoft\u002Fdocumentdb-mcp#83, `ALLOW_UNAUTHENTICATED_STDIO: \"true\"`).\n- **`AUTH_REQUIRED is true but ...` \u002F server exits immediately on launch**:\n  add `\"AUTH_REQUIRED\": \"false\"` to `env`. The server defaults this to `true`\n  and refuses to start without Entra tenant\u002Faudience config. This flag gates\n  only the Entra-JWT bearer check on the MCP server's HTTP\u002FSSE transport\n  — it does **not** disable MongoDB-level auth (SCRAM or `authMode=entra`),\n  TLS, or capability gates. Only set it to `false` together with\n  `TRANSPORT=stdio`.\n- **`connection_profile \"default\" not found`**: the agent is passing a\n  different profile name than what's defined in `CONNECTION_PROFILES`. Either\n  rename your profile or tell the agent which name to use.\n- **TLS errors against Azure DocumentDB**: ensure `tls=true` is in the URI and\n  the connection string is fully URL-encoded (special characters in passwords\n  must be percent-encoded).\n- **Auth errors**: verify the database user exists in Azure portal under your\n  cluster's Settings → Authentication, and that the password is correct.\n- **Connection timeout to Azure**: Azure DocumentDB firewall may be blocking\n  your IP. Portal → cluster → **Networking** → add your client IP to the\n  allowlist.\n- **JSON escape issues**: `CONNECTION_PROFILES` is a string of JSON. Inner\n  double quotes must be escaped (`\\\"`). Use a JSON validator if the client\n  silently ignores the server. The bundled installer handles escaping\n  correctly — prefer it if escaping is painful.\n- **Client doesn't pick up the new server**: ensure a full restart of the\n  client (quit + reopen), not just a window reload.\n- **VS Code uses `mcp.servers`, not `mcpServers`**: this is the one client\n  with a different top-level key.\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,68,104,111,123,200,205,211,216,312,325,331,336,403,409,451,456,462,570,618,624,655,727,780,835,841,862,880,991,996,1115,1122,1350,1355,1438,1464,1470,1526,1532,1832],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"documentdb-mcp-server-setup",[43],{"type":44,"value":45},"text","DocumentDB MCP Server Setup",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50,52,66],{"type":44,"value":51},"This skill guides users through wiring the\n",{"type":38,"tag":53,"props":54,"children":58},"a",{"href":55,"rel":56},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp",[57],"nofollow",[59],{"type":38,"tag":60,"props":61,"children":63},"code",{"className":62},[],[64],{"type":44,"value":65},"microsoft\u002Fdocumentdb-mcp",{"type":44,"value":67},"\nserver into an agentic client and pointing it at Azure DocumentDB (or another\nMongoDB-compatible endpoint).",{"type":38,"tag":47,"props":69,"children":70},{},[71,73,79,81,86,88,94,96,102],{"type":44,"value":72},"The DocumentDB MCP server is ",{"type":38,"tag":74,"props":75,"children":76},"strong",{},[77],{"type":44,"value":78},"stateless",{"type":44,"value":80}," and ",{"type":38,"tag":74,"props":82,"children":83},{},[84],{"type":44,"value":85},"administrator-controlled",{"type":44,"value":87},":\nbackend connection details live in a ",{"type":38,"tag":60,"props":89,"children":91},{"className":90},[],[92],{"type":44,"value":93},"CONNECTION_PROFILES",{"type":44,"value":95}," JSON map defined in\nthe MCP client's config. Tools never accept a connection string as a runtime\nargument — they reference a named profile via ",{"type":38,"tag":60,"props":97,"children":99},{"className":98},[],[100],{"type":44,"value":101},"connection_profile",{"type":44,"value":103},".",{"type":38,"tag":105,"props":106,"children":108},"h2",{"id":107},"safety-never-receive-credentials-in-chat",[109],{"type":44,"value":110},"Safety: never receive credentials in chat",{"type":38,"tag":47,"props":112,"children":113},{},[114,116,121],{"type":44,"value":115},"The DocumentDB connection string is a ",{"type":38,"tag":74,"props":117,"children":118},{},[119],{"type":44,"value":120},"secret",{"type":44,"value":122}," — it contains a username and\npassword that grant database access. The agent MUST follow these rules:",{"type":38,"tag":124,"props":125,"children":126},"ol",{},[127,138,148,156,182],{"type":38,"tag":128,"props":129,"children":130},"li",{},[131,136],{"type":38,"tag":74,"props":132,"children":133},{},[134],{"type":44,"value":135},"Never ask the user to paste a connection string, password, or token into\nthe chat.",{"type":44,"value":137}," Always instruct the user to add the value directly to their\nlocal MCP config file themselves (or run the bundled installer, which\nprompts via stdin instead of chat).",{"type":38,"tag":128,"props":139,"children":140},{},[141,146],{"type":38,"tag":74,"props":142,"children":143},{},[144],{"type":44,"value":145},"Never read, echo, log, or repeat back a credential",{"type":44,"value":147}," the user pasted by\nmistake. If the user pastes one anyway, respond with: \"I won't process that\nvalue — please delete it from the chat history and add it directly to your\nclient's MCP config instead,\" and continue with placeholders only. The\nagent itself cannot remove messages it has already received — only the\nuser can delete the message from their chat history.",{"type":38,"tag":128,"props":149,"children":150},{},[151],{"type":38,"tag":74,"props":152,"children":153},{},[154],{"type":44,"value":155},"Never run a shell command that would print a credential to stdout.",{"type":38,"tag":128,"props":157,"children":158},{},[159,164,166,172,174,180],{"type":38,"tag":74,"props":160,"children":161},{},[162],{"type":44,"value":163},"Never write the credential to any file the agent itself creates or\nedits.",{"type":44,"value":165}," The agent only writes placeholder ",{"type":38,"tag":60,"props":167,"children":169},{"className":168},[],[170],{"type":44,"value":171},"[USER]:[PASSWORD]@...",{"type":44,"value":173}," (square\nbrackets defeat the ",{"type":38,"tag":60,"props":175,"children":177},{"className":176},[],[178],{"type":44,"value":179},"mongodb:\u002F\u002F[^:]+:[^@]+@",{"type":44,"value":181}," secret-scanner regex); the\nuser replaces it locally.",{"type":38,"tag":128,"props":183,"children":184},{},[185,190,192,198],{"type":38,"tag":74,"props":186,"children":187},{},[188],{"type":44,"value":189},"Never include a credential in a generated explanation, summary, commit\nmessage, or example.",{"type":44,"value":191}," Use ",{"type":38,"tag":60,"props":193,"children":195},{"className":194},[],[196],{"type":44,"value":197},"\u003Credacted>",{"type":44,"value":199}," if you must reference its position.",{"type":38,"tag":47,"props":201,"children":202},{},[203],{"type":44,"value":204},"If any step below appears to require a credential value, treat it as a\nplaceholder for the user to fill in locally.",{"type":38,"tag":105,"props":206,"children":208},{"id":207},"fastest-path-bundled-installer",[209],{"type":44,"value":210},"Fastest path: bundled installer",{"type":38,"tag":47,"props":212,"children":213},{},[214],{"type":44,"value":215},"If the user wants the quickest path and is willing to run a script, point them\nat the kit's installer, which installs both this skill pack and the MCP server\ninto every detected client in one command:",{"type":38,"tag":217,"props":218,"children":223},"pre",{"className":219,"code":220,"language":221,"meta":222,"style":222},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# macOS \u002F Linux\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.sh | bash\n\n# Windows (PowerShell)\nirm https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.ps1 | iex\n","bash","",[224],{"type":38,"tag":60,"props":225,"children":226},{"__ignoreMap":222},[227,239,271,281,290],{"type":38,"tag":228,"props":229,"children":232},"span",{"class":230,"line":231},"line",1,[233],{"type":38,"tag":228,"props":234,"children":236},{"style":235},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[237],{"type":44,"value":238},"# macOS \u002F Linux\n",{"type":38,"tag":228,"props":240,"children":242},{"class":230,"line":241},2,[243,249,255,260,266],{"type":38,"tag":228,"props":244,"children":246},{"style":245},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[247],{"type":44,"value":248},"curl",{"type":38,"tag":228,"props":250,"children":252},{"style":251},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[253],{"type":44,"value":254}," -fsSL",{"type":38,"tag":228,"props":256,"children":257},{"style":251},[258],{"type":44,"value":259}," https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.sh",{"type":38,"tag":228,"props":261,"children":263},{"style":262},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[264],{"type":44,"value":265}," |",{"type":38,"tag":228,"props":267,"children":268},{"style":245},[269],{"type":44,"value":270}," bash\n",{"type":38,"tag":228,"props":272,"children":274},{"class":230,"line":273},3,[275],{"type":38,"tag":228,"props":276,"children":278},{"emptyLinePlaceholder":277},true,[279],{"type":44,"value":280},"\n",{"type":38,"tag":228,"props":282,"children":284},{"class":230,"line":283},4,[285],{"type":38,"tag":228,"props":286,"children":287},{"style":235},[288],{"type":44,"value":289},"# Windows (PowerShell)\n",{"type":38,"tag":228,"props":291,"children":292},{"class":230,"line":21},[293,298,303,307],{"type":38,"tag":228,"props":294,"children":295},{"style":245},[296],{"type":44,"value":297},"irm",{"type":38,"tag":228,"props":299,"children":300},{"style":251},[301],{"type":44,"value":302}," https:\u002F\u002Fraw.githubusercontent.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Fmain\u002Finstall.ps1",{"type":38,"tag":228,"props":304,"children":305},{"style":262},[306],{"type":44,"value":265},{"type":38,"tag":228,"props":308,"children":309},{"style":245},[310],{"type":44,"value":311}," iex\n",{"type":38,"tag":47,"props":313,"children":314},{},[315,317,323],{"type":44,"value":316},"The installer prompts for a connection string, writes it as the ",{"type":38,"tag":60,"props":318,"children":320},{"className":319},[],[321],{"type":44,"value":322},"default",{"type":44,"value":324},"\nprofile, and configures all detected clients. The rest of this skill covers\nthe manual path (and is also the right reference when the installer fails or\nthe user wants to customize).",{"type":38,"tag":105,"props":326,"children":328},{"id":327},"manual-setup-overview",[329],{"type":44,"value":330},"Manual setup overview",{"type":38,"tag":47,"props":332,"children":333},{},[334],{"type":44,"value":335},"Setup is per-client. For each client the user has installed:",{"type":38,"tag":124,"props":337,"children":338},{},[339,344,349,398],{"type":38,"tag":128,"props":340,"children":341},{},[342],{"type":44,"value":343},"Make sure Node.js 20+ is available (the MCP server runs on Node).",{"type":38,"tag":128,"props":345,"children":346},{},[347],{"type":44,"value":348},"Find that client's MCP config file.",{"type":38,"tag":128,"props":350,"children":351},{},[352,354,360,362,367,369,375,377,383],{"type":44,"value":353},"Add a ",{"type":38,"tag":60,"props":355,"children":357},{"className":356},[],[358],{"type":44,"value":359},"DocumentDB",{"type":44,"value":361}," server entry that launches the upstream MCP server and\npasses ",{"type":38,"tag":60,"props":363,"children":365},{"className":364},[],[366],{"type":44,"value":93},{"type":44,"value":368}," (and ",{"type":38,"tag":60,"props":370,"children":372},{"className":371},[],[373],{"type":44,"value":374},"TRANSPORT=stdio",{"type":44,"value":376}," + ",{"type":38,"tag":60,"props":378,"children":380},{"className":379},[],[381],{"type":44,"value":382},"AUTH_REQUIRED=false",{"type":38,"tag":384,"props":385,"children":386},"ul",{},[387],{"type":38,"tag":128,"props":388,"children":389},{},[390,396],{"type":38,"tag":60,"props":391,"children":393},{"className":392},[],[394],{"type":44,"value":395},"TRUST_LOCAL_STDIO=true",{"type":44,"value":397}," for local stdio use).",{"type":38,"tag":128,"props":399,"children":400},{},[401],{"type":44,"value":402},"Restart the client.",{"type":38,"tag":105,"props":404,"children":406},{"id":405},"step-1-confirm-prerequisites",[407],{"type":44,"value":408},"Step 1: Confirm prerequisites",{"type":38,"tag":217,"props":410,"children":412},{"className":219,"code":411,"language":221,"meta":222,"style":222},"node --version   # must be >= 20\ngit --version    # required by `npx -y github:microsoft\u002Fdocumentdb-mcp`\n",[413],{"type":38,"tag":60,"props":414,"children":415},{"__ignoreMap":222},[416,434],{"type":38,"tag":228,"props":417,"children":418},{"class":230,"line":231},[419,424,429],{"type":38,"tag":228,"props":420,"children":421},{"style":245},[422],{"type":44,"value":423},"node",{"type":38,"tag":228,"props":425,"children":426},{"style":251},[427],{"type":44,"value":428}," --version",{"type":38,"tag":228,"props":430,"children":431},{"style":235},[432],{"type":44,"value":433},"   # must be >= 20\n",{"type":38,"tag":228,"props":435,"children":436},{"class":230,"line":241},[437,442,446],{"type":38,"tag":228,"props":438,"children":439},{"style":245},[440],{"type":44,"value":441},"git",{"type":38,"tag":228,"props":443,"children":444},{"style":251},[445],{"type":44,"value":428},{"type":38,"tag":228,"props":447,"children":448},{"style":235},[449],{"type":44,"value":450},"    # required by `npx -y github:microsoft\u002Fdocumentdb-mcp`\n",{"type":38,"tag":47,"props":452,"children":453},{},[454],{"type":44,"value":455},"If either is missing, install them before continuing.",{"type":38,"tag":105,"props":457,"children":459},{"id":458},"step-2-pick-the-connection-target",[460],{"type":44,"value":461},"Step 2: Pick the connection target",{"type":38,"tag":463,"props":464,"children":465},"table",{},[466,490],{"type":38,"tag":467,"props":468,"children":469},"thead",{},[470],{"type":38,"tag":471,"props":472,"children":473},"tr",{},[474,480,485],{"type":38,"tag":475,"props":476,"children":477},"th",{},[478],{"type":44,"value":479},"Option",{"type":38,"tag":475,"props":481,"children":482},{},[483],{"type":44,"value":484},"When to use",{"type":38,"tag":475,"props":486,"children":487},{},[488],{"type":44,"value":489},"Example URI",{"type":38,"tag":491,"props":492,"children":493},"tbody",{},[494,520,545],{"type":38,"tag":471,"props":495,"children":496},{},[497,506,511],{"type":38,"tag":498,"props":499,"children":500},"td",{},[501],{"type":38,"tag":74,"props":502,"children":503},{},[504],{"type":44,"value":505},"A. Azure DocumentDB",{"type":38,"tag":498,"props":507,"children":508},{},[509],{"type":44,"value":510},"Production \u002F cloud dev",{"type":38,"tag":498,"props":512,"children":513},{},[514],{"type":38,"tag":60,"props":515,"children":517},{"className":516},[],[518],{"type":44,"value":519},"mongodb+srv:\u002F\u002F\u003Cuser>:\u003Cpw>@\u003Ccluster>.mongocluster.cosmos.azure.com\u002F?tls=true&authMechanism=SCRAM-SHA-256",{"type":38,"tag":471,"props":521,"children":522},{},[523,531,536],{"type":38,"tag":498,"props":524,"children":525},{},[526],{"type":38,"tag":74,"props":527,"children":528},{},[529],{"type":44,"value":530},"B. Local MongoDB \u002F DocumentDB",{"type":38,"tag":498,"props":532,"children":533},{},[534],{"type":44,"value":535},"Local dev",{"type":38,"tag":498,"props":537,"children":538},{},[539],{"type":38,"tag":60,"props":540,"children":542},{"className":541},[],[543],{"type":44,"value":544},"mongodb:\u002F\u002Flocalhost:27017",{"type":38,"tag":471,"props":546,"children":547},{},[548,556,561],{"type":38,"tag":498,"props":549,"children":550},{},[551],{"type":38,"tag":74,"props":552,"children":553},{},[554],{"type":44,"value":555},"C. Custom MongoDB-compatible",{"type":38,"tag":498,"props":557,"children":558},{},[559],{"type":44,"value":560},"Atlas, self-hosted, third-party",{"type":38,"tag":498,"props":562,"children":563},{},[564],{"type":38,"tag":60,"props":565,"children":567},{"className":566},[],[568],{"type":44,"value":569},"mongodb:\u002F\u002F\u003Cuser>:\u003Cpw>@host:port\u002F?tls=true",{"type":38,"tag":47,"props":571,"children":572},{},[573,578,580,585,587,592,594,600,602,608,610,616],{"type":38,"tag":74,"props":574,"children":575},{},[576],{"type":44,"value":577},"Azure DocumentDB connection string:",{"type":44,"value":579}," Azure portal → your DocumentDB cluster\n→ ",{"type":38,"tag":74,"props":581,"children":582},{},[583],{"type":44,"value":584},"Settings",{"type":44,"value":586}," → ",{"type":38,"tag":74,"props":588,"children":589},{},[590],{"type":44,"value":591},"Connection strings",{"type":44,"value":593},". Replace ",{"type":38,"tag":60,"props":595,"children":597},{"className":596},[],[598],{"type":44,"value":599},"\u003Cusername>",{"type":44,"value":601}," \u002F ",{"type":38,"tag":60,"props":603,"children":605},{"className":604},[],[606],{"type":44,"value":607},"\u003Cpassword>",{"type":44,"value":609},"\nwith database user credentials. TLS is required (",{"type":38,"tag":60,"props":611,"children":613},{"className":612},[],[614],{"type":44,"value":615},"tls=true",{"type":44,"value":617}," must be present).",{"type":38,"tag":105,"props":619,"children":621},{"id":620},"step-3-pick-a-transport",[622],{"type":44,"value":623},"Step 3: Pick a transport",{"type":38,"tag":384,"props":625,"children":626},{},[627,641],{"type":38,"tag":128,"props":628,"children":629},{},[630,639],{"type":38,"tag":74,"props":631,"children":632},{},[633],{"type":38,"tag":60,"props":634,"children":636},{"className":635},[],[637],{"type":44,"value":638},"stdio",{"type":44,"value":640}," (default, recommended) — the client launches the server as a\nsubprocess. Use this for every client below.",{"type":38,"tag":128,"props":642,"children":643},{},[644,653],{"type":38,"tag":74,"props":645,"children":646},{},[647],{"type":38,"tag":60,"props":648,"children":650},{"className":649},[],[651],{"type":44,"value":652},"streamable-http",{"type":44,"value":654}," — only for browser clients or custom HTTP integrations\nwhere you have a separate, long-running server with Entra-authenticated\nbearer tokens. Not covered here; see the upstream README.",{"type":38,"tag":47,"props":656,"children":657},{},[658,660,665,666,671,673,679,680,685,687,693,694,700,702,708,710,716,718,725],{"type":44,"value":659},"For stdio, set ",{"type":38,"tag":60,"props":661,"children":663},{"className":662},[],[664],{"type":44,"value":382},{"type":44,"value":80},{"type":38,"tag":60,"props":667,"children":669},{"className":668},[],[670],{"type":44,"value":395},{"type":44,"value":672},".\nThe server defaults ",{"type":38,"tag":60,"props":674,"children":676},{"className":675},[],[677],{"type":44,"value":678},"AUTH_REQUIRED=true",{"type":44,"value":80},{"type":38,"tag":74,"props":681,"children":682},{},[683],{"type":44,"value":684},"exits at startup",{"type":44,"value":686}," unless\n",{"type":38,"tag":60,"props":688,"children":690},{"className":689},[],[691],{"type":44,"value":692},"ENTRA_TENANT_ID",{"type":44,"value":601},{"type":38,"tag":60,"props":695,"children":697},{"className":696},[],[698],{"type":44,"value":699},"ENTRA_AUDIENCE",{"type":44,"value":701}," are set, even for stdio.\n(",{"type":38,"tag":60,"props":703,"children":705},{"className":704},[],[706],{"type":44,"value":707},"TRUST_LOCAL_STDIO",{"type":44,"value":709}," was named ",{"type":38,"tag":60,"props":711,"children":713},{"className":712},[],[714],{"type":44,"value":715},"ALLOW_UNAUTHENTICATED_STDIO",{"type":44,"value":717}," before\n",{"type":38,"tag":53,"props":719,"children":722},{"href":720,"rel":721},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp\u002Fpull\u002F83",[57],[723],{"type":44,"value":724},"microsoft\u002Fdocumentdb-mcp#83",{"type":44,"value":726},"\n— if you're on an older server build, use that name instead.)",{"type":38,"tag":47,"props":728,"children":729},{},[730,740,742,748,750,755,757,763,765,770,772,778],{"type":38,"tag":74,"props":731,"children":732},{},[733,738],{"type":38,"tag":60,"props":734,"children":736},{"className":735},[],[737],{"type":44,"value":382},{"type":44,"value":739}," does not weaken your cluster's auth.",{"type":44,"value":741}," It gates only\nthe Entra-JWT bearer-token check on the MCP server's HTTP\u002FSSE transport —\ni.e., calls from the MCP client to this server. It is fully independent\nfrom how the MCP server talks to your DocumentDB cluster: SCRAM\nusername\u002Fpassword (from the connection-string URI) and Entra-to-cluster\ntokens (",{"type":38,"tag":60,"props":743,"children":745},{"className":744},[],[746],{"type":44,"value":747},"authMode: \"entra\"",{"type":44,"value":749},") flow through ",{"type":38,"tag":60,"props":751,"children":753},{"className":752},[],[754],{"type":44,"value":93},{"type":44,"value":756}," and stay\nactive regardless of ",{"type":38,"tag":60,"props":758,"children":760},{"className":759},[],[761],{"type":44,"value":762},"AUTH_REQUIRED",{"type":44,"value":764},". TLS to the cluster (",{"type":38,"tag":60,"props":766,"children":768},{"className":767},[],[769],{"type":44,"value":615},{"type":44,"value":771},"),\ncapability gates (",{"type":38,"tag":60,"props":773,"children":775},{"className":774},[],[776],{"type":44,"value":777},"ENABLE_*_TOOLS",{"type":44,"value":779},"), and tool-tier authorization are also\nunaffected.",{"type":38,"tag":47,"props":781,"children":782},{},[783,785,795,797,803,805,810,812,818,820,825,827,833],{"type":44,"value":784},"This setup is safe ",{"type":38,"tag":74,"props":786,"children":787},{},[788,790],{"type":44,"value":789},"only because ",{"type":38,"tag":60,"props":791,"children":793},{"className":792},[],[794],{"type":44,"value":374},{"type":44,"value":796},": the MCP server runs\nas a subprocess of the trusted local client — no network listener is\nopened. If you ever switch ",{"type":38,"tag":60,"props":798,"children":800},{"className":799},[],[801],{"type":44,"value":802},"TRANSPORT",{"type":44,"value":804}," to ",{"type":38,"tag":60,"props":806,"children":808},{"className":807},[],[809],{"type":44,"value":652},{"type":44,"value":811}," or ",{"type":38,"tag":60,"props":813,"children":815},{"className":814},[],[816],{"type":44,"value":817},"sse",{"type":44,"value":819},", set\n",{"type":38,"tag":60,"props":821,"children":823},{"className":822},[],[824],{"type":44,"value":678},{"type":44,"value":826}," and provide the Entra tenant\u002Faudience, or the ",{"type":38,"tag":60,"props":828,"children":830},{"className":829},[],[831],{"type":44,"value":832},"\u002Fmcp",{"type":44,"value":834},"\nendpoint will be exposed unauthenticated.",{"type":38,"tag":105,"props":836,"children":838},{"id":837},"step-4-write-the-mcp-config",[839],{"type":44,"value":840},"Step 4: Write the MCP config",{"type":38,"tag":47,"props":842,"children":843},{},[844,846,852,854,860],{"type":44,"value":845},"The MCP server entry has the same shape for every client. Only the wrapping\nconfig file and the top-level key (",{"type":38,"tag":60,"props":847,"children":849},{"className":848},[],[850],{"type":44,"value":851},"mcpServers",{"type":44,"value":853}," vs ",{"type":38,"tag":60,"props":855,"children":857},{"className":856},[],[858],{"type":44,"value":859},"mcp.servers",{"type":44,"value":861},") differ.",{"type":38,"tag":47,"props":863,"children":864},{},[865,870,872,878],{"type":38,"tag":74,"props":866,"children":867},{},[868],{"type":44,"value":869},"Server entry template",{"type":44,"value":871}," (substitute ",{"type":38,"tag":60,"props":873,"children":875},{"className":874},[],[876],{"type":44,"value":877},"\u003CCONN_STRING>",{"type":44,"value":879}," with the URI from Step 2):",{"type":38,"tag":217,"props":881,"children":885},{"className":882,"code":883,"language":884,"meta":222,"style":222},"language-jsonc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"DocumentDB\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"github:microsoft\u002Fdocumentdb-mcp\"],\n    \"env\": {\n      \"TRANSPORT\": \"stdio\",\n      \"AUTH_REQUIRED\": \"false\",\n      \"TRUST_LOCAL_STDIO\": \"true\",\n      \"CONNECTION_PROFILES\": \"{\\\"default\\\":{\\\"authMode\\\":\\\"connectionString\\\",\\\"uri\\\":\\\"\u003CCONN_STRING>\\\"}}\"\n    }\n  }\n}\n","jsonc",[886],{"type":38,"tag":60,"props":887,"children":888},{"__ignoreMap":222},[889,897,905,913,921,929,938,946,955,964,973,982],{"type":38,"tag":228,"props":890,"children":891},{"class":230,"line":231},[892],{"type":38,"tag":228,"props":893,"children":894},{},[895],{"type":44,"value":896},"{\n",{"type":38,"tag":228,"props":898,"children":899},{"class":230,"line":241},[900],{"type":38,"tag":228,"props":901,"children":902},{},[903],{"type":44,"value":904},"  \"DocumentDB\": {\n",{"type":38,"tag":228,"props":906,"children":907},{"class":230,"line":273},[908],{"type":38,"tag":228,"props":909,"children":910},{},[911],{"type":44,"value":912},"    \"command\": \"npx\",\n",{"type":38,"tag":228,"props":914,"children":915},{"class":230,"line":283},[916],{"type":38,"tag":228,"props":917,"children":918},{},[919],{"type":44,"value":920},"    \"args\": [\"-y\", \"github:microsoft\u002Fdocumentdb-mcp\"],\n",{"type":38,"tag":228,"props":922,"children":923},{"class":230,"line":21},[924],{"type":38,"tag":228,"props":925,"children":926},{},[927],{"type":44,"value":928},"    \"env\": {\n",{"type":38,"tag":228,"props":930,"children":932},{"class":230,"line":931},6,[933],{"type":38,"tag":228,"props":934,"children":935},{},[936],{"type":44,"value":937},"      \"TRANSPORT\": \"stdio\",\n",{"type":38,"tag":228,"props":939,"children":940},{"class":230,"line":25},[941],{"type":38,"tag":228,"props":942,"children":943},{},[944],{"type":44,"value":945},"      \"AUTH_REQUIRED\": \"false\",\n",{"type":38,"tag":228,"props":947,"children":949},{"class":230,"line":948},8,[950],{"type":38,"tag":228,"props":951,"children":952},{},[953],{"type":44,"value":954},"      \"TRUST_LOCAL_STDIO\": \"true\",\n",{"type":38,"tag":228,"props":956,"children":958},{"class":230,"line":957},9,[959],{"type":38,"tag":228,"props":960,"children":961},{},[962],{"type":44,"value":963},"      \"CONNECTION_PROFILES\": \"{\\\"default\\\":{\\\"authMode\\\":\\\"connectionString\\\",\\\"uri\\\":\\\"\u003CCONN_STRING>\\\"}}\"\n",{"type":38,"tag":228,"props":965,"children":967},{"class":230,"line":966},10,[968],{"type":38,"tag":228,"props":969,"children":970},{},[971],{"type":44,"value":972},"    }\n",{"type":38,"tag":228,"props":974,"children":976},{"class":230,"line":975},11,[977],{"type":38,"tag":228,"props":978,"children":979},{},[980],{"type":44,"value":981},"  }\n",{"type":38,"tag":228,"props":983,"children":985},{"class":230,"line":984},12,[986],{"type":38,"tag":228,"props":987,"children":988},{},[989],{"type":44,"value":990},"}\n",{"type":38,"tag":47,"props":992,"children":993},{},[994],{"type":44,"value":995},"Notes:",{"type":38,"tag":384,"props":997,"children":998},{},[999,1016,1042,1070],{"type":38,"tag":128,"props":1000,"children":1001},{},[1002,1007,1009,1014],{"type":38,"tag":60,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":44,"value":93},{"type":44,"value":1008}," is a ",{"type":38,"tag":74,"props":1010,"children":1011},{},[1012],{"type":44,"value":1013},"JSON string",{"type":44,"value":1015}," (escaped) — not a JSON object.",{"type":38,"tag":128,"props":1017,"children":1018},{},[1019,1021,1026,1028,1033,1035,1040],{"type":44,"value":1020},"The profile name ",{"type":38,"tag":60,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":44,"value":322},{"type":44,"value":1027}," is what agents pass to tool calls via the\n",{"type":38,"tag":60,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":44,"value":101},{"type":44,"value":1034}," argument. You can use any name; ",{"type":38,"tag":60,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":44,"value":322},{"type":44,"value":1041}," keeps it\nsimple.",{"type":38,"tag":128,"props":1043,"children":1044},{},[1045,1047,1053,1055,1061,1062,1068],{"type":44,"value":1046},"To allow write or management tools, add ",{"type":38,"tag":60,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":44,"value":1052},"\"ENABLE_WRITE_TOOLS\": \"true\"",{"type":44,"value":1054}," and\u002For\n",{"type":38,"tag":60,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":44,"value":1060},"\"ENABLE_MANAGEMENT_TOOLS\": \"true\"",{"type":44,"value":804},{"type":38,"tag":60,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":44,"value":1067},"env",{"type":44,"value":1069},". Read tools are on by default.",{"type":38,"tag":128,"props":1071,"children":1072},{},[1073,1075,1081,1083,1089,1091,1097,1099,1105,1107,1113],{"type":44,"value":1074},"The first ",{"type":38,"tag":60,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":44,"value":1080},"npx -y github:...",{"type":44,"value":1082}," invocation will clone and build the server\n(~30 s on a fast connection). Subsequent invocations use the ",{"type":38,"tag":60,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":44,"value":1088},"npx",{"type":44,"value":1090}," cache.\nFor faster startup, install once locally and point ",{"type":38,"tag":60,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":44,"value":1096},"command",{"type":44,"value":1098},"\u002F",{"type":38,"tag":60,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":44,"value":1104},"args",{"type":44,"value":1106}," at the\nbuilt ",{"type":38,"tag":60,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":44,"value":1112},"node \u002Fpath\u002Fto\u002Fdist\u002Fmain.js",{"type":44,"value":1114}," instead — this is what the bundled\ninstaller does.",{"type":38,"tag":1116,"props":1117,"children":1119},"h3",{"id":1118},"client-specific-config-files",[1120],{"type":44,"value":1121},"Client-specific config files",{"type":38,"tag":463,"props":1123,"children":1124},{},[1125,1146],{"type":38,"tag":467,"props":1126,"children":1127},{},[1128],{"type":38,"tag":471,"props":1129,"children":1130},{},[1131,1136,1141],{"type":38,"tag":475,"props":1132,"children":1133},{},[1134],{"type":44,"value":1135},"Client",{"type":38,"tag":475,"props":1137,"children":1138},{},[1139],{"type":44,"value":1140},"Config file",{"type":38,"tag":475,"props":1142,"children":1143},{},[1144],{"type":44,"value":1145},"Top-level key",{"type":38,"tag":491,"props":1147,"children":1148},{},[1149,1179,1235,1264,1292,1322],{"type":38,"tag":471,"props":1150,"children":1151},{},[1152,1162,1171],{"type":38,"tag":498,"props":1153,"children":1154},{},[1155,1160],{"type":38,"tag":74,"props":1156,"children":1157},{},[1158],{"type":44,"value":1159},"Claude Code",{"type":44,"value":1161}," (user-scoped)",{"type":38,"tag":498,"props":1163,"children":1164},{},[1165],{"type":38,"tag":60,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":44,"value":1170},"~\u002F.claude.json",{"type":38,"tag":498,"props":1172,"children":1173},{},[1174],{"type":38,"tag":60,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":44,"value":851},{"type":38,"tag":471,"props":1180,"children":1181},{},[1182,1190,1227],{"type":38,"tag":498,"props":1183,"children":1184},{},[1185],{"type":38,"tag":74,"props":1186,"children":1187},{},[1188],{"type":44,"value":1189},"Claude Desktop",{"type":38,"tag":498,"props":1191,"children":1192},{},[1193,1195,1201,1203,1207,1209,1215,1216,1219,1221],{"type":44,"value":1194},"macOS: ",{"type":38,"tag":60,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":44,"value":1200},"~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json",{"type":44,"value":1202}," ",{"type":38,"tag":1204,"props":1205,"children":1206},"br",{},[],{"type":44,"value":1208}," Linux: ",{"type":38,"tag":60,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":44,"value":1214},"~\u002F.config\u002FClaude\u002Fclaude_desktop_config.json",{"type":44,"value":1202},{"type":38,"tag":1204,"props":1217,"children":1218},{},[],{"type":44,"value":1220}," Windows: ",{"type":38,"tag":60,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":44,"value":1226},"%APPDATA%\\Claude\\claude_desktop_config.json",{"type":38,"tag":498,"props":1228,"children":1229},{},[1230],{"type":38,"tag":60,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":44,"value":851},{"type":38,"tag":471,"props":1236,"children":1237},{},[1238,1247,1256],{"type":38,"tag":498,"props":1239,"children":1240},{},[1241,1246],{"type":38,"tag":74,"props":1242,"children":1243},{},[1244],{"type":44,"value":1245},"Cursor",{"type":44,"value":1161},{"type":38,"tag":498,"props":1248,"children":1249},{},[1250],{"type":38,"tag":60,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":44,"value":1255},"~\u002F.cursor\u002Fmcp.json",{"type":38,"tag":498,"props":1257,"children":1258},{},[1259],{"type":38,"tag":60,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":44,"value":851},{"type":38,"tag":471,"props":1265,"children":1266},{},[1267,1275,1284],{"type":38,"tag":498,"props":1268,"children":1269},{},[1270],{"type":38,"tag":74,"props":1271,"children":1272},{},[1273],{"type":44,"value":1274},"GitHub Copilot CLI",{"type":38,"tag":498,"props":1276,"children":1277},{},[1278],{"type":38,"tag":60,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":44,"value":1283},"~\u002F.copilot\u002Fmcp-config.json",{"type":38,"tag":498,"props":1285,"children":1286},{},[1287],{"type":38,"tag":60,"props":1288,"children":1290},{"className":1289},[],[1291],{"type":44,"value":851},{"type":38,"tag":471,"props":1293,"children":1294},{},[1295,1303,1314],{"type":38,"tag":498,"props":1296,"children":1297},{},[1298],{"type":38,"tag":74,"props":1299,"children":1300},{},[1301],{"type":44,"value":1302},"GitHub Copilot for VS Code",{"type":38,"tag":498,"props":1304,"children":1305},{},[1306,1308],{"type":44,"value":1307},"VS Code ",{"type":38,"tag":60,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":44,"value":1313},"settings.json",{"type":38,"tag":498,"props":1315,"children":1316},{},[1317],{"type":38,"tag":60,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":44,"value":859},{"type":38,"tag":471,"props":1323,"children":1324},{},[1325,1333,1342],{"type":38,"tag":498,"props":1326,"children":1327},{},[1328],{"type":38,"tag":74,"props":1329,"children":1330},{},[1331],{"type":44,"value":1332},"Gemini CLI",{"type":38,"tag":498,"props":1334,"children":1335},{},[1336],{"type":38,"tag":60,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":44,"value":1341},"~\u002F.gemini\u002Fsettings.json",{"type":38,"tag":498,"props":1343,"children":1344},{},[1345],{"type":38,"tag":60,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":44,"value":851},{"type":38,"tag":47,"props":1351,"children":1352},{},[1353],{"type":44,"value":1354},"If the file doesn't exist yet, create it with a single top-level object:",{"type":38,"tag":217,"props":1356,"children":1360},{"className":1357,"code":1358,"language":1359,"meta":222,"style":222},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"mcpServers\": { \"DocumentDB\": { ... } } }\n","json",[1361],{"type":38,"tag":60,"props":1362,"children":1363},{"__ignoreMap":222},[1364],{"type":38,"tag":228,"props":1365,"children":1366},{"class":230,"line":231},[1367,1372,1377,1382,1387,1392,1397,1401,1405,1409,1413,1417,1423,1428,1433],{"type":38,"tag":228,"props":1368,"children":1369},{"style":262},[1370],{"type":44,"value":1371},"{",{"type":38,"tag":228,"props":1373,"children":1374},{"style":262},[1375],{"type":44,"value":1376}," \"",{"type":38,"tag":228,"props":1378,"children":1380},{"style":1379},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1381],{"type":44,"value":851},{"type":38,"tag":228,"props":1383,"children":1384},{"style":262},[1385],{"type":44,"value":1386},"\"",{"type":38,"tag":228,"props":1388,"children":1389},{"style":262},[1390],{"type":44,"value":1391},":",{"type":38,"tag":228,"props":1393,"children":1394},{"style":262},[1395],{"type":44,"value":1396}," {",{"type":38,"tag":228,"props":1398,"children":1399},{"style":262},[1400],{"type":44,"value":1376},{"type":38,"tag":228,"props":1402,"children":1403},{"style":245},[1404],{"type":44,"value":359},{"type":38,"tag":228,"props":1406,"children":1407},{"style":262},[1408],{"type":44,"value":1386},{"type":38,"tag":228,"props":1410,"children":1411},{"style":262},[1412],{"type":44,"value":1391},{"type":38,"tag":228,"props":1414,"children":1415},{"style":262},[1416],{"type":44,"value":1396},{"type":38,"tag":228,"props":1418,"children":1420},{"style":1419},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1421],{"type":44,"value":1422}," ... ",{"type":38,"tag":228,"props":1424,"children":1425},{"style":262},[1426],{"type":44,"value":1427},"}",{"type":38,"tag":228,"props":1429,"children":1430},{"style":262},[1431],{"type":44,"value":1432}," }",{"type":38,"tag":228,"props":1434,"children":1435},{"style":262},[1436],{"type":44,"value":1437}," }\n",{"type":38,"tag":47,"props":1439,"children":1440},{},[1441,1443,1448,1450,1455,1457,1462],{"type":44,"value":1442},"If it already has other servers, ",{"type":38,"tag":74,"props":1444,"children":1445},{},[1446],{"type":44,"value":1447},"add",{"type":44,"value":1449}," the ",{"type":38,"tag":60,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":44,"value":359},{"type":44,"value":1456}," entry inside the\nexisting ",{"type":38,"tag":60,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":44,"value":851},{"type":44,"value":1463}," object — don't overwrite the whole file.",{"type":38,"tag":105,"props":1465,"children":1467},{"id":1466},"step-5-restart-the-client-and-verify",[1468],{"type":44,"value":1469},"Step 5: Restart the client and verify",{"type":38,"tag":124,"props":1471,"children":1472},{},[1473,1483,1488],{"type":38,"tag":128,"props":1474,"children":1475},{},[1476,1481],{"type":38,"tag":74,"props":1477,"children":1478},{},[1479],{"type":44,"value":1480},"Fully quit",{"type":44,"value":1482}," the client (not just close the window).",{"type":38,"tag":128,"props":1484,"children":1485},{},[1486],{"type":44,"value":1487},"Reopen it.",{"type":38,"tag":128,"props":1489,"children":1490},{},[1491,1493,1499,1501],{"type":44,"value":1492},"Ask the agent to list available DocumentDB tools, or run a tool directly\n(the agent should pass ",{"type":38,"tag":60,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":44,"value":1498},"connection_profile: \"default\"",{"type":44,"value":1500},"):\n",{"type":38,"tag":384,"props":1502,"children":1503},{},[1504,1515],{"type":38,"tag":128,"props":1505,"children":1506},{},[1507,1513],{"type":38,"tag":60,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":44,"value":1512},"list_databases",{"type":44,"value":1514}," — confirms the server is reachable and the profile works",{"type":38,"tag":128,"props":1516,"children":1517},{},[1518,1524],{"type":38,"tag":60,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":44,"value":1523},"db_stats",{"type":44,"value":1525}," — basic round-trip check",{"type":38,"tag":105,"props":1527,"children":1529},{"id":1528},"troubleshooting",[1530],{"type":44,"value":1531},"Troubleshooting",{"type":38,"tag":384,"props":1533,"children":1534},{},[1535,1599,1643,1710,1731,1748,1758,1775,1800,1810],{"type":38,"tag":128,"props":1536,"children":1537},{},[1538,1548,1550,1555,1557,1563,1565,1571,1573,1578,1579,1584,1586,1591,1592,1598],{"type":38,"tag":74,"props":1539,"children":1540},{},[1541,1546],{"type":38,"tag":60,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":44,"value":1088},{"type":44,"value":1547}," errors \u002F repo not found",{"type":44,"value":1549},": the upstream ",{"type":38,"tag":60,"props":1551,"children":1553},{"className":1552},[],[1554],{"type":44,"value":65},{"type":44,"value":1556},"\nrepo may be private or unreachable. Check ",{"type":38,"tag":60,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":44,"value":1562},"git ls-remote https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb-mcp.git",{"type":44,"value":1564},"; if it fails, fall back to\ncloning the repo manually, running ",{"type":38,"tag":60,"props":1566,"children":1568},{"className":1567},[],[1569],{"type":44,"value":1570},"npm install && npm run build",{"type":44,"value":1572},", and\npointing ",{"type":38,"tag":60,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":44,"value":1096},{"type":44,"value":586},{"type":38,"tag":60,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":44,"value":423},{"type":44,"value":1585},", ",{"type":38,"tag":60,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":44,"value":1104},{"type":44,"value":586},{"type":38,"tag":60,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":44,"value":1597},"[\"\u003Cabs-path>\u002Fdist\u002Fmain.js\"]",{"type":44,"value":103},{"type":38,"tag":128,"props":1600,"children":1601},{},[1602,1618,1620,1626,1628,1633,1635,1641],{"type":38,"tag":74,"props":1603,"children":1604},{},[1605,1611,1612],{"type":38,"tag":60,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":44,"value":1610},"stdio transport is disabled when AUTH_REQUIRED=true",{"type":44,"value":601},{"type":38,"tag":60,"props":1613,"children":1615},{"className":1614},[],[1616],{"type":44,"value":1617},"unauthenticated stdio is disabled",{"type":44,"value":1619},":\nyou forgot ",{"type":38,"tag":60,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":44,"value":1625},"TRUST_LOCAL_STDIO: \"true\"",{"type":44,"value":1627}," in ",{"type":38,"tag":60,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":44,"value":1067},{"type":44,"value":1634}," (or, on older builds before\nmicrosoft\u002Fdocumentdb-mcp#83, ",{"type":38,"tag":60,"props":1636,"children":1638},{"className":1637},[],[1639],{"type":44,"value":1640},"ALLOW_UNAUTHENTICATED_STDIO: \"true\"",{"type":44,"value":1642},").",{"type":38,"tag":128,"props":1644,"children":1645},{},[1646,1657,1659,1665,1666,1671,1673,1679,1681,1686,1688,1694,1696,1702,1704,1709],{"type":38,"tag":74,"props":1647,"children":1648},{},[1649,1655],{"type":38,"tag":60,"props":1650,"children":1652},{"className":1651},[],[1653],{"type":44,"value":1654},"AUTH_REQUIRED is true but ...",{"type":44,"value":1656}," \u002F server exits immediately on launch",{"type":44,"value":1658},":\nadd ",{"type":38,"tag":60,"props":1660,"children":1662},{"className":1661},[],[1663],{"type":44,"value":1664},"\"AUTH_REQUIRED\": \"false\"",{"type":44,"value":804},{"type":38,"tag":60,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":44,"value":1067},{"type":44,"value":1672},". The server defaults this to ",{"type":38,"tag":60,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":44,"value":1678},"true",{"type":44,"value":1680},"\nand refuses to start without Entra tenant\u002Faudience config. This flag gates\nonly the Entra-JWT bearer check on the MCP server's HTTP\u002FSSE transport\n— it does ",{"type":38,"tag":74,"props":1682,"children":1683},{},[1684],{"type":44,"value":1685},"not",{"type":44,"value":1687}," disable MongoDB-level auth (SCRAM or ",{"type":38,"tag":60,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":44,"value":1693},"authMode=entra",{"type":44,"value":1695},"),\nTLS, or capability gates. Only set it to ",{"type":38,"tag":60,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":44,"value":1701},"false",{"type":44,"value":1703}," together with\n",{"type":38,"tag":60,"props":1705,"children":1707},{"className":1706},[],[1708],{"type":44,"value":374},{"type":44,"value":103},{"type":38,"tag":128,"props":1711,"children":1712},{},[1713,1722,1724,1729],{"type":38,"tag":74,"props":1714,"children":1715},{},[1716],{"type":38,"tag":60,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":44,"value":1721},"connection_profile \"default\" not found",{"type":44,"value":1723},": the agent is passing a\ndifferent profile name than what's defined in ",{"type":38,"tag":60,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":44,"value":93},{"type":44,"value":1730},". Either\nrename your profile or tell the agent which name to use.",{"type":38,"tag":128,"props":1732,"children":1733},{},[1734,1739,1741,1746],{"type":38,"tag":74,"props":1735,"children":1736},{},[1737],{"type":44,"value":1738},"TLS errors against Azure DocumentDB",{"type":44,"value":1740},": ensure ",{"type":38,"tag":60,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":44,"value":615},{"type":44,"value":1747}," is in the URI and\nthe connection string is fully URL-encoded (special characters in passwords\nmust be percent-encoded).",{"type":38,"tag":128,"props":1749,"children":1750},{},[1751,1756],{"type":38,"tag":74,"props":1752,"children":1753},{},[1754],{"type":44,"value":1755},"Auth errors",{"type":44,"value":1757},": verify the database user exists in Azure portal under your\ncluster's Settings → Authentication, and that the password is correct.",{"type":38,"tag":128,"props":1759,"children":1760},{},[1761,1766,1768,1773],{"type":38,"tag":74,"props":1762,"children":1763},{},[1764],{"type":44,"value":1765},"Connection timeout to Azure",{"type":44,"value":1767},": Azure DocumentDB firewall may be blocking\nyour IP. Portal → cluster → ",{"type":38,"tag":74,"props":1769,"children":1770},{},[1771],{"type":44,"value":1772},"Networking",{"type":44,"value":1774}," → add your client IP to the\nallowlist.",{"type":38,"tag":128,"props":1776,"children":1777},{},[1778,1783,1785,1790,1792,1798],{"type":38,"tag":74,"props":1779,"children":1780},{},[1781],{"type":44,"value":1782},"JSON escape issues",{"type":44,"value":1784},": ",{"type":38,"tag":60,"props":1786,"children":1788},{"className":1787},[],[1789],{"type":44,"value":93},{"type":44,"value":1791}," is a string of JSON. Inner\ndouble quotes must be escaped (",{"type":38,"tag":60,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":44,"value":1797},"\\\"",{"type":44,"value":1799},"). Use a JSON validator if the client\nsilently ignores the server. The bundled installer handles escaping\ncorrectly — prefer it if escaping is painful.",{"type":38,"tag":128,"props":1801,"children":1802},{},[1803,1808],{"type":38,"tag":74,"props":1804,"children":1805},{},[1806],{"type":44,"value":1807},"Client doesn't pick up the new server",{"type":44,"value":1809},": ensure a full restart of the\nclient (quit + reopen), not just a window reload.",{"type":38,"tag":128,"props":1811,"children":1812},{},[1813,1830],{"type":38,"tag":74,"props":1814,"children":1815},{},[1816,1818,1823,1825],{"type":44,"value":1817},"VS Code uses ",{"type":38,"tag":60,"props":1819,"children":1821},{"className":1820},[],[1822],{"type":44,"value":859},{"type":44,"value":1824},", not ",{"type":38,"tag":60,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":44,"value":851},{"type":44,"value":1831},": this is the one client\nwith a different top-level key.",{"type":38,"tag":1833,"props":1834,"children":1835},"style",{},[1836],{"type":44,"value":1837},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1839,"total":1941},[1840,1861,1873,1888,1901,1913,1926],{"slug":1841,"name":1841,"fn":1842,"description":1843,"org":1844,"tags":1845,"stars":21,"repoUrl":22,"updatedAt":1860},"documentdb-azure-deployment","deploy Azure DocumentDB clusters","Deploy an Azure DocumentDB cluster (`Microsoft.DocumentDB\u002FmongoClusters`) end-to-end — Bicep (primary), Azure CLI one-shot, Terraform, or portal. Covers resource-group creation, cluster parameters (tier, storage, server version, sharding, HA), firewall rule configuration, retrieving the connection string, and teardown. Use when the user asks to provision, create, deploy, or spin up an Azure DocumentDB cluster, or wants infrastructure-as-code for one.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1846,1847,1850,1853,1854,1857],{"name":11,"slug":8,"type":14},{"name":1848,"slug":1849,"type":14},"Bicep","bicep",{"name":1851,"slug":1852,"type":14},"CLI","cli",{"name":16,"slug":17,"type":14},{"name":1855,"slug":1856,"type":14},"Deployment","deployment",{"name":1858,"slug":1859,"type":14},"Terraform","terraform","2026-07-12T08:18:56.861159",{"slug":1862,"name":1862,"fn":1863,"description":1864,"org":1865,"tags":1866,"stars":21,"repoUrl":22,"updatedAt":1872},"documentdb-connection","configure MongoDB connections for DocumentDB","Optimize MongoDB client connection configuration (pools, timeouts, patterns) for Azure DocumentDB. Use this skill when working on functions that instantiate or configure a MongoDB client (e.g., calling `connect()`), configuring connection pools, troubleshooting connection errors (ECONNREFUSED, timeouts, pool exhaustion), optimizing connection-related performance issues. Includes scenarios like building serverless functions, creating API endpoints, optimizing high-traffic applications, or debugging connection failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1867,1868,1869],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":1870,"slug":1871,"type":14},"Performance","performance","2026-07-12T08:18:49.875358",{"slug":1874,"name":1874,"fn":1875,"description":1876,"org":1877,"tags":1878,"stars":21,"repoUrl":22,"updatedAt":1887},"documentdb-data-modeling","design Azure DocumentDB data models","Data modeling patterns for Azure DocumentDB — embed vs reference, 16 MB document limit, denormalization for read-heavy workloads, schema versioning. Use when designing new schemas, reviewing existing data models, migrating from SQL, deciding between embedding and referencing, modeling one-to-one \u002F one-to-many \u002F many-to-many relationships, or troubleshooting document-size and query-performance problems that stem from the data model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1879,1880,1883,1884],{"name":11,"slug":8,"type":14},{"name":1881,"slug":1882,"type":14},"Data Modeling","data-modeling",{"name":16,"slug":17,"type":14},{"name":1885,"slug":1886,"type":14},"MongoDB","mongodb","2026-08-01T05:42:33.42955",{"slug":1889,"name":1889,"fn":1890,"description":1891,"org":1892,"tags":1893,"stars":21,"repoUrl":22,"updatedAt":1900},"documentdb-driver","implement Azure DocumentDB driver best practices","MongoDB driver and SDK best practices for Azure DocumentDB — singleton `MongoClient`, connection reuse, connection-pool fundamentals. Use when writing code that instantiates a MongoDB client, reviewing driver initialization, or diagnosing connection-related bugs. For full connection-pool tuning (serverless vs OLTP vs OLAP, timeouts, retries), see the `documentdb-connection` skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1894,1895,1896,1897],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":1885,"slug":1886,"type":14},{"name":1898,"slug":1899,"type":14},"SDK","sdk","2026-07-12T08:18:42.136316",{"slug":1902,"name":1902,"fn":1903,"description":1904,"org":1905,"tags":1906,"stars":21,"repoUrl":22,"updatedAt":1912},"documentdb-full-text-search","implement full-text search in Azure DocumentDB","Full-text search best practices for Azure DocumentDB using the `createSearchIndexes` command and `$search` aggregation stage — BM25 keyword scoring, fuzzy search (`maxEdits`), phrase search with `slop`, custom analyzers (keyword + lowerCase + asciiFolding + edgeGram) for prefix \u002F ID matching, `pathHierarchy` tokenizer for hierarchical IDs, multi-field search indexes, and hybrid (BM25 + vector) retrieval via Reciprocal Rank Fusion. Use when building search experiences, adding typo tolerance, matching phrases or prefixes on IDs \u002F SKUs \u002F part numbers, or combining lexical and semantic retrieval on the same collection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1907,1908,1909],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":1910,"slug":1911,"type":14},"Search","search","2026-07-15T06:02:41.270913",{"slug":1914,"name":1914,"fn":1915,"description":1916,"org":1917,"tags":1918,"stars":21,"repoUrl":22,"updatedAt":1925},"documentdb-high-availability","configure high availability for DocumentDB","High availability, business-continuity, and disaster-recovery best practices for Azure DocumentDB — enabling in-region HA with availability zones (99.99% SLA), adding active-passive cross-region replica clusters (99.995% SLA), and understanding automatic backup retention. Use when designing production topology, planning failover, provisioning DR, picking regions, or reviewing cluster architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1919,1920,1921,1924],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":1922,"slug":1923,"type":14},"Operations","operations",{"name":1870,"slug":1871,"type":14},"2026-07-12T08:18:53.654505",{"slug":1927,"name":1927,"fn":1928,"description":1929,"org":1930,"tags":1931,"stars":21,"repoUrl":22,"updatedAt":1940},"documentdb-indexing","select and shape Azure DocumentDB indexes","Index-type selection and shape guidance for Azure DocumentDB — when to use single-field, compound (ESR), multikey, wildcard, hashed, 2dsphere, TTL, and vector indexes; query-pattern → index-shape cookbook; per-collection index budget; DocumentDB-specific preference for `textSearch` over community `$text`. Use when designing or reviewing indexes, choosing an index type for a query pattern, or deciding whether an additional index is worth the write cost.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1932,1933,1936,1937],{"name":11,"slug":8,"type":14},{"name":1934,"slug":1935,"type":14},"Cosmos DB","cosmos-db",{"name":16,"slug":17,"type":14},{"name":1938,"slug":1939,"type":14},"NoSQL","nosql","2026-07-12T08:18:44.753904",17,{"items":1943,"total":2116},[1944,1963,1980,1999,2012,2027,2040,2055,2066,2078,2091,2104],{"slug":1945,"name":1945,"fn":1946,"description":1947,"org":1948,"tags":1949,"stars":1960,"repoUrl":1961,"updatedAt":1962},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1950,1951,1954,1957],{"name":11,"slug":8,"type":14},{"name":1952,"slug":1953,"type":14},"Compliance","compliance",{"name":1955,"slug":1956,"type":14},"Governance","governance",{"name":1958,"slug":1959,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1964,"name":1964,"fn":1965,"description":1966,"org":1967,"tags":1968,"stars":1977,"repoUrl":1978,"updatedAt":1979},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1969,1970,1971,1974],{"name":11,"slug":8,"type":14},{"name":1855,"slug":1856,"type":14},{"name":1972,"slug":1973,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":1975,"slug":1976,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1981,"name":1981,"fn":1982,"description":1983,"org":1984,"tags":1985,"stars":1996,"repoUrl":1997,"updatedAt":1998},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1986,1989,1990,1993],{"name":1987,"slug":1988,"type":14},"API Development","api-development",{"name":11,"slug":8,"type":14},{"name":1991,"slug":1992,"type":14},"Code Review","code-review",{"name":1994,"slug":1995,"type":14},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":2000,"name":2000,"fn":2001,"description":2002,"org":2003,"tags":2004,"stars":1996,"repoUrl":1997,"updatedAt":2011},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2005,2006,2007,2008],{"name":11,"slug":8,"type":14},{"name":1855,"slug":1856,"type":14},{"name":1898,"slug":1899,"type":14},{"name":2009,"slug":2010,"type":14},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":2013,"name":2013,"fn":2014,"description":2015,"org":2016,"tags":2017,"stars":1996,"repoUrl":1997,"updatedAt":2026},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2018,2019,2022,2025],{"name":11,"slug":8,"type":14},{"name":2020,"slug":2021,"type":14},"GitHub","github",{"name":2023,"slug":2024,"type":14},"Project Management","project-management",{"name":1898,"slug":1899,"type":14},"2026-07-12T08:17:38.345387",{"slug":2028,"name":2028,"fn":2029,"description":2030,"org":2031,"tags":2032,"stars":1996,"repoUrl":1997,"updatedAt":2039},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2033,2034,2037,2038],{"name":11,"slug":8,"type":14},{"name":2035,"slug":2036,"type":14},"CI\u002FCD","ci-cd",{"name":1855,"slug":1856,"type":14},{"name":1898,"slug":1899,"type":14},"2026-07-12T08:17:34.27607",{"slug":2041,"name":2041,"fn":2042,"description":2043,"org":2044,"tags":2045,"stars":1996,"repoUrl":1997,"updatedAt":2054},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2046,2047,2048,2051],{"name":1987,"slug":1988,"type":14},{"name":11,"slug":8,"type":14},{"name":2049,"slug":2050,"type":14},"OpenAPI","openapi",{"name":2052,"slug":2053,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":2056,"name":2056,"fn":2057,"description":2058,"org":2059,"tags":2060,"stars":1996,"repoUrl":1997,"updatedAt":2065},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2061,2062,2063,2064],{"name":11,"slug":8,"type":14},{"name":2035,"slug":2036,"type":14},{"name":1898,"slug":1899,"type":14},{"name":2009,"slug":2010,"type":14},"2026-07-12T08:17:37.08523",{"slug":2067,"name":2067,"fn":2068,"description":2069,"org":2070,"tags":2071,"stars":1996,"repoUrl":1997,"updatedAt":2077},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2072,2075,2076],{"name":2073,"slug":2074,"type":14},"LLM","llm",{"name":1870,"slug":1871,"type":14},{"name":2052,"slug":2053,"type":14},"2026-07-12T08:17:42.080413",{"slug":2079,"name":2079,"fn":2080,"description":2081,"org":2082,"tags":2083,"stars":1996,"repoUrl":1997,"updatedAt":2090},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2084,2085,2086,2089],{"name":11,"slug":8,"type":14},{"name":2035,"slug":2036,"type":14},{"name":2087,"slug":2088,"type":14},"Debugging","debugging",{"name":1898,"slug":1899,"type":14},"2026-07-12T08:17:40.821512",{"slug":2092,"name":2092,"fn":2093,"description":2094,"org":2095,"tags":2096,"stars":1996,"repoUrl":1997,"updatedAt":2103},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2097,2098,2099,2102],{"name":11,"slug":8,"type":14},{"name":1952,"slug":1953,"type":14},{"name":2100,"slug":2101,"type":14},"Process Optimization","process-optimization",{"name":2052,"slug":2053,"type":14},"2026-07-12T08:17:32.970921",{"slug":2105,"name":2105,"fn":2106,"description":2107,"org":2108,"tags":2109,"stars":1996,"repoUrl":1997,"updatedAt":2115},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2110,2111,2114],{"name":1994,"slug":1995,"type":14},{"name":2112,"slug":2113,"type":14},"Plugin Development","plugin-development",{"name":2052,"slug":2053,"type":14},"2026-07-12T08:17:35.873862",109]