<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Hammad Khan</title>
    <description>The latest articles on DEV Community by Muhammad Hammad Khan (@muhammad_hammadkhan_507a).</description>
    <link>https://dev.to/muhammad_hammadkhan_507a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4223844%2F19b20cb9-7457-4046-b7b2-a7035dfad06d.jpg</url>
      <title>DEV Community: Muhammad Hammad Khan</title>
      <link>https://dev.to/muhammad_hammadkhan_507a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhammad_hammadkhan_507a"/>
    <language>en</language>
    <item>
      <title>Set Up Zoo Code in Android Studio (macOS and Windows)</title>
      <dc:creator>Muhammad Hammad Khan</dc:creator>
      <pubDate>Tue, 03 Nov 2026 09:05:10 +0000</pubDate>
      <link>https://dev.to/muhammad_hammadkhan_507a/set-up-zoo-code-in-android-studio-macos-and-windows-10l4</link>
      <guid>https://dev.to/muhammad_hammadkhan_507a/set-up-zoo-code-in-android-studio-macos-and-windows-10l4</guid>
      <description>&lt;p&gt;&lt;em&gt;By Muhammad Hammad Khan&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A complete installation and first-run guide for macOS and Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this guide covers
&lt;/h2&gt;

&lt;p&gt;Preparing Android Studio, downloading and installing the Zoo Code JetBrains plugin, opening its tool window, connecting an AI/API provider, choosing a model, running a first task, and configuring Auto-Approve permissions safely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important compatibility note — read before installing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As of 3 November 2026, the Zoo Code JetBrains project lists Android Studio 2026.1.4 or newer as required, and says 2026.1.4 is currently available through the preview channel. Zoo Code also requires a JCEF-enabled IDE runtime to display its interface. Do not assume that an older stable Android Studio build will work just because the plugin appears installable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Before you begin
&lt;/h2&gt;

&lt;p&gt;Zoo Code is an AI coding agent integrated into the IntelliJ platform. It is not itself an AI model: you connect it to a model provider (for example OpenAI, Anthropic, OpenRouter, Google Gemini, or a compatible/local provider) and normally supply an API key or other provider credentials.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android Studio:&lt;/strong&gt; install Android Studio 2026.1.4 or newer, with JCEF support enabled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internet:&lt;/strong&gt; needed to download the plugin and, on first launch, its platform-specific Node.js runtime unless a suitable fallback is available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider account:&lt;/strong&gt; create an account with your chosen AI provider and generate an API key if that provider uses API-key authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project:&lt;/strong&gt; have an Android project ready, or create/open one after installing Zoo Code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not normally need to install Node.js manually. The JetBrains plugin automatically downloads a pinned, platform-specific Node.js runtime on first launch. If that download fails, it can fall back to bundled Node.js or Node.js 20.6.0+ on the IDE process PATH.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Install Android Studio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  macOS
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the official Android Studio download page: &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;developer.android.com/studio&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download the macOS build that matches your Mac (Apple silicon or Intel, where offered).&lt;/li&gt;
&lt;li&gt;Open the downloaded DMG and drag Android Studio into Applications, following the installer instructions.&lt;/li&gt;
&lt;li&gt;Launch Android Studio. If macOS asks whether to open an app downloaded from the internet, verify that you downloaded it from the official Android developer site before proceeding.&lt;/li&gt;
&lt;li&gt;Complete the first-run setup wizard and allow it to install the Android SDK and recommended components.&lt;/li&gt;
&lt;li&gt;For Zoo Code, make sure you are using Android Studio 2026.1.4 or newer. If that version is still marked Preview, select the appropriate preview channel/build from the official Android Studio download page.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;developer.android.com/studio&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download the Windows 64-bit installer.&lt;/li&gt;
&lt;li&gt;Run the installer and follow the setup wizard. Keep the Android Studio and Android Virtual Device components selected if you need them.&lt;/li&gt;
&lt;li&gt;Launch Android Studio and complete the first-run setup wizard, including Android SDK installation.&lt;/li&gt;
&lt;li&gt;Use Android Studio 2026.1.4 or newer for Zoo Code. If required, install the preview build from the official download page.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Version check:&lt;/strong&gt; In Android Studio, open &lt;code&gt;Help → About&lt;/code&gt; on Windows/Linux or &lt;code&gt;Android Studio → About Android Studio&lt;/code&gt; on macOS. Confirm the installed version before proceeding.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Download the Zoo Code plugin
&lt;/h2&gt;

&lt;p&gt;The JetBrains integration is distributed as a ZIP plugin from the official Zoo-Code-Org GitHub Releases page. This is different from installing the VS Code extension from the VS Code Marketplace.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the official repository: &lt;a href="https://github.com/Zoo-Code-Org/Zoo-Code-Jetbrains" rel="noopener noreferrer"&gt;github.com/Zoo-Code-Org/Zoo-Code-Jetbrains&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Open its Releases page: &lt;a href="https://github.com/Zoo-Code-Org/Zoo-Code-Jetbrains/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download the latest release asset that is the installable JetBrains plugin ZIP (the filename is typically similar to &lt;code&gt;ZooCode-…zip&lt;/code&gt;). Do not unzip it.&lt;/li&gt;
&lt;li&gt;Keep the ZIP somewhere easy to find, such as Downloads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use the release ZIP for normal installation. The repository also documents a build-from-source workflow, but that is intended for developers contributing to or building the plugin and is not required for ordinary users.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Install Zoo Code in Android Studio
&lt;/h2&gt;

&lt;p&gt;The following plugin installation steps are the same on macOS and Windows; only the name of the IDE settings menu differs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;macOS: &lt;code&gt;Android Studio → Settings/Preferences → Plugins&lt;/code&gt;. Windows: &lt;code&gt;File → Settings → Plugins&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the Plugins screen, select the gear icon near the plugin search/results area.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Install Plugin from Disk…&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Browse to the Zoo Code plugin ZIP downloaded in the previous section and select it. Leave the ZIP compressed.&lt;/li&gt;
&lt;li&gt;Confirm installation if Android Studio prompts you.&lt;/li&gt;
&lt;li&gt;Restart Android Studio when prompted. A restart is important because the plugin loads into the IDE runtime.&lt;/li&gt;
&lt;li&gt;After restart, locate the Zoo Code tool window, usually on the right-hand tool-window stripe. Click it to open the chat panel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the tool window does not appear, first confirm that the plugin is enabled under &lt;code&gt;Settings → Plugins → Installed&lt;/code&gt;, then restart the IDE. See the troubleshooting section for JCEF and runtime checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. First launch and connect an API provider
&lt;/h2&gt;

&lt;p&gt;Zoo Code needs an LLM inference provider before it can generate or edit code. Provider availability and exact fields depend on the provider and the Zoo Code version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create or obtain provider credentials
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Choose a provider. Examples include OpenAI, Anthropic, OpenRouter, Google Gemini, DeepSeek, xAI, or a compatible gateway. Local-model options include Ollama and LM Studio.&lt;/li&gt;
&lt;li&gt;Create/sign in to your account on that provider's official website.&lt;/li&gt;
&lt;li&gt;If required, open the provider's developer/API dashboard, create an API key, and copy it. Some providers require billing activation or account verification before API calls work.&lt;/li&gt;
&lt;li&gt;Treat the API key like a password. Do not paste it into source code, screenshots, public documentation, Git commits, or a shared settings export.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configure the provider in Zoo Code
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the Zoo Code tool window in Android Studio.&lt;/li&gt;
&lt;li&gt;If a first-run welcome/setup screen appears, select the provider you intend to use and follow its prompts.&lt;/li&gt;
&lt;li&gt;If you are already inside the Zoo Code chat, click the gear icon to open Zoo Code settings.&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;Providers&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Use the &lt;strong&gt;+&lt;/strong&gt; button beside the profile selector to create a new API configuration profile. Give it a descriptive name, such as &lt;em&gt;OpenAI – Android Work&lt;/em&gt; or &lt;em&gt;OpenRouter – Personal&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;In that profile, choose the API provider from the provider dropdown.&lt;/li&gt;
&lt;li&gt;Paste the API key into the provider's API-key field (or complete the provider's authentication flow if it uses another method).&lt;/li&gt;
&lt;li&gt;Choose a model supported by that provider. Check the provider's current model catalogue and ensure the selected model supports tool/function calling; coding-agent tasks rely on tool use.&lt;/li&gt;
&lt;li&gt;Review any provider-specific fields, such as base URL, deployment/region, organization, or model options. Only fill fields that the provider requires.&lt;/li&gt;
&lt;li&gt;Save/close settings if the interface offers a save action. Select the new profile in the profile selector so it is active.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can switch profiles later from the Providers settings page or from the API Configuration dropdown in the chat interface. Profiles can store different providers, keys, models, and model settings. The exact options differ by provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Provider choice:&lt;/strong&gt; OpenRouter can be convenient if you want to access models from multiple providers through one account/key. Direct provider integration is useful when you specifically want that vendor's own API. For local inference, configure Ollama or LM Studio and ensure the local model is running and reachable.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Start Zoo Code and run a first task
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open an Android project in Android Studio and wait for Gradle sync/indexing to finish.&lt;/li&gt;
&lt;li&gt;Open the Zoo Code tool window.&lt;/li&gt;
&lt;li&gt;Check the active API configuration/profile and model in the chat interface.&lt;/li&gt;
&lt;li&gt;Choose a mode. &lt;strong&gt;Ask&lt;/strong&gt; is suitable for questions and explanations; &lt;strong&gt;Architect&lt;/strong&gt; is useful for planning; &lt;strong&gt;Code&lt;/strong&gt; is for implementation; &lt;strong&gt;Debug&lt;/strong&gt; is for diagnosing problems.&lt;/li&gt;
&lt;li&gt;Start with a low-risk request, for example: “Inspect this project and explain its main modules and entry points. Do not modify any files yet.”&lt;/li&gt;
&lt;li&gt;Review the response. Next, try a small implementation request on a branch or copy of the project.&lt;/li&gt;
&lt;li&gt;When Zoo Code proposes an action, inspect the proposed operation and approve or reject it as appropriate. Depending on the action, it may read files, edit files, or request a terminal command.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A useful first coding prompt is specific about the outcome, files or feature involved, constraints, and whether changes are allowed. Ask Zoo Code to explain its plan before making broad changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Configure Auto-Approve permissions
&lt;/h2&gt;

&lt;p&gt;Auto-Approve controls which operations Zoo Code may perform without asking you to approve each one. This can make repetitive work faster, but it also removes an important safety checkpoint. Start with approvals disabled or narrowly scoped; do not select “All” simply to make the agent run unattended.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick controls in the chat panel
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In the Zoo Code chat panel, find the &lt;strong&gt;Auto-Approve&lt;/strong&gt; dropdown beside the chat input.&lt;/li&gt;
&lt;li&gt;Open it. The dropdown contains permission tiles and an &lt;strong&gt;Enabled&lt;/strong&gt; master switch.&lt;/li&gt;
&lt;li&gt;Keep &lt;strong&gt;Enabled&lt;/strong&gt; off while reviewing the available permissions. Selecting permission tiles does not by itself activate auto-approval if the master switch is off.&lt;/li&gt;
&lt;li&gt;Select only the specific permissions you understand and want to allow. Use &lt;strong&gt;None&lt;/strong&gt; to clear the selected permissions. Use &lt;strong&gt;All&lt;/strong&gt; only if you deliberately want every listed category enabled.&lt;/li&gt;
&lt;li&gt;Turn &lt;strong&gt;Enabled&lt;/strong&gt; on only when you are ready for the selected operations to be auto-approved. Turn it off to pause all auto-approval; your individual selections remain saved.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Detailed controls in Zoo Code settings
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the Auto-Approve dropdown in the chat panel.&lt;/li&gt;
&lt;li&gt;Click its gear/settings icon in the top-right area.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Auto-Approve Settings&lt;/strong&gt; (or the equivalent Auto-Approve section in the settings panel).&lt;/li&gt;
&lt;li&gt;Review each permission category below and enable only what is needed for your workflow.&lt;/li&gt;
&lt;li&gt;Return to the chat and confirm the global &lt;strong&gt;Enabled&lt;/strong&gt; switch is in the intended state.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What the permission categories mean
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Permission&lt;/th&gt;
&lt;th&gt;What it allows&lt;/th&gt;
&lt;th&gt;Risk / guidance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read files and directories&lt;/td&gt;
&lt;td&gt;Read project files and folder contents without asking.&lt;/td&gt;
&lt;td&gt;Medium. A sensible starting point if restricted to the workspace.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit files&lt;/td&gt;
&lt;td&gt;Create or modify files without asking.&lt;/td&gt;
&lt;td&gt;High. Prefer manual approval until you trust the workflow.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execute approved commands&lt;/td&gt;
&lt;td&gt;Run terminal commands that match your configured allowlist.&lt;/td&gt;
&lt;td&gt;High. Use narrow command prefixes; never allow all commands casually.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use the browser&lt;/td&gt;
&lt;td&gt;Use browser-related tools without asking.&lt;/td&gt;
&lt;td&gt;Medium. Consider what sites and data the agent can access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use MCP servers&lt;/td&gt;
&lt;td&gt;Use configured Model Context Protocol tools.&lt;/td&gt;
&lt;td&gt;Medium–High. Requires the global setting and each tool's own Always allow checkbox.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switch modes&lt;/td&gt;
&lt;td&gt;Switch between modes without asking.&lt;/td&gt;
&lt;td&gt;Low. Changes the agent's working mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create &amp;amp; complete subtasks&lt;/td&gt;
&lt;td&gt;Manage subtasks without asking.&lt;/td&gt;
&lt;td&gt;Low. Workflow convenience.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Answer follow-up questions&lt;/td&gt;
&lt;td&gt;Choose the default suggested answer after a timeout.&lt;/td&gt;
&lt;td&gt;Low. Review the timeout and whether unattended continuation is appropriate.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Important details for command execution and file boundaries
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command allowlist:&lt;/strong&gt; “Always approve allowed execute operations” is not a blanket permission to run every command. Add only specific, trusted command prefixes to Allowed Commands. Keep a Denied Commands list for dangerous operations; deny rules can take precedence over matching allow rules.&lt;/li&gt;
&lt;li&gt;Never use &lt;code&gt;*&lt;/code&gt; as an allow-all command prefix on a normal development machine. Commands such as destructive file deletion, disk formatting, privilege escalation, shutdown/reboot, publishing, and pushing code can have serious consequences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outside-workspace access:&lt;/strong&gt; separate options control whether Zoo Code can read or write files outside the current project. Keep these disabled unless a task genuinely requires it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protected files:&lt;/strong&gt; an additional option can allow changes to protected Zoo/Roo configuration files. Leave it off unless you understand why the agent needs to edit them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; enabling the global “Always approve MCP tools” setting is not enough by itself. You must also mark each individual MCP tool as “Always allow”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Enabled switch:&lt;/strong&gt; auto-approval only operates when Enabled is on and at least one permission is selected. Enabled off pauses all selected auto-approvals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended beginner setup:&lt;/strong&gt; allow read-only access within the project if you are comfortable with it; keep automatic file writes, terminal execution, browser use, and MCP permissions off until you have reviewed how Zoo Code behaves. Approve edits and commands individually at first.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. macOS and Windows keyboard shortcuts
&lt;/h2&gt;

&lt;p&gt;The Zoo Code documentation lists these default shortcuts for toggling Auto-Approve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;macOS:&lt;/strong&gt; &lt;code&gt;Cmd + Option (Alt) + A&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows:&lt;/strong&gt; &lt;code&gt;Ctrl + Alt + A&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a shortcut does not work in the JetBrains integration, use the Auto-Approve dropdown in the Zoo Code chat panel. Shortcut registration can vary by IDE keymap or plugin version. The VS Code documentation also describes a Command Palette toggle, but do not assume every VS Code command name or shortcut is exposed identically in Android Studio.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Zoo Code tool window is blank or does not render
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Confirm that your Android Studio version is 2026.1.4 or newer and that the IDE runtime supports JCEF.&lt;/li&gt;
&lt;li&gt;For IntelliJ Platform 2026.2 / build 262 and later, JCEF is distributed as a separate bundled plugin. Open &lt;code&gt;Settings → Plugins → Installed&lt;/code&gt;, find the bundled JCEF plugin, enable it if disabled, and restart Android Studio.&lt;/li&gt;
&lt;li&gt;On older supported IDE builds, JCEF is supplied by the IDE runtime; check the Zoo Code JetBrains repository's Known Issues page if rendering still fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Plugin fails to start or extension host fails
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Restart Android Studio after installing the plugin.&lt;/li&gt;
&lt;li&gt;Check the IDE progress/status area on first launch for a “Downloading Node.js runtime” task.&lt;/li&gt;
&lt;li&gt;Allow Android Studio to reach &lt;code&gt;nodejs.org&lt;/code&gt;. If using a local Node.js fallback, confirm Node.js 20.6.0 or newer is available on the IDE process PATH.&lt;/li&gt;
&lt;li&gt;Inspect the Android Studio IDE log for Zoo Code or Extension Host errors.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Provider or model errors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check that the API key is copied correctly and belongs to the selected provider.&lt;/li&gt;
&lt;li&gt;Confirm that the provider account has API access, available credits/billing, and no account-level restrictions.&lt;/li&gt;
&lt;li&gt;Confirm that the model identifier is valid for that provider and supports tool/function calling.&lt;/li&gt;
&lt;li&gt;For an OpenAI-compatible endpoint, verify the base URL, authentication format, and model ID with that gateway's documentation.&lt;/li&gt;
&lt;li&gt;Try a simpler supported model/provider profile to isolate whether the issue is provider-specific.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Plugin installation fails
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Make sure you downloaded the JetBrains plugin ZIP from the Zoo Code JetBrains GitHub Releases page—not a VS Code &lt;code&gt;.vsix&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Do not extract the ZIP before selecting it in &lt;strong&gt;Install Plugin from Disk&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Check Android Studio compatibility and ensure the plugin is enabled after restart.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Final checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Android Studio 2026.1.4 or newer installed.&lt;/li&gt;
&lt;li&gt;JCEF is available and enabled.&lt;/li&gt;
&lt;li&gt;Latest Zoo Code JetBrains release ZIP downloaded from the official repository.&lt;/li&gt;
&lt;li&gt;Plugin installed through &lt;code&gt;Settings/Preferences → Plugins → Install Plugin from Disk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Android Studio restarted and Zoo Code tool window opened.&lt;/li&gt;
&lt;li&gt;Provider profile created with a valid API key or authentication.&lt;/li&gt;
&lt;li&gt;A tool-capable model selected and active.&lt;/li&gt;
&lt;li&gt;A harmless first task completed successfully.&lt;/li&gt;
&lt;li&gt;Auto-Approve reviewed carefully; only necessary permissions enabled.&lt;/li&gt;
&lt;li&gt;Automatic terminal execution and outside-workspace access left off unless specifically required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Official references
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Zoo-Code-Org/Zoo-Code-Jetbrains" rel="noopener noreferrer"&gt;Zoo Code for JetBrains — repository, Android Studio compatibility, installation and troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Zoo-Code-Org/Zoo-Code-Jetbrains/releases" rel="noopener noreferrer"&gt;Zoo Code JetBrains — GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.zoocode.dev/features/api-configuration-profiles" rel="noopener noreferrer"&gt;Zoo Code — API Configuration Profiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.zoocode.dev/features/auto-approving-actions" rel="noopener noreferrer"&gt;Zoo Code — Auto-Approving Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.zoocode.dev/providers" rel="noopener noreferrer"&gt;Zoo Code — Model Providers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;Android Studio download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.zoocode.dev/faq" rel="noopener noreferrer"&gt;Zoo Code FAQ and security notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;A note on sources: Zoo Code’s general documentation is primarily written for its VS Code extension. This guide applies the documented provider-profile and Auto-Approve concepts to the JetBrains integration, while the plugin download/install path and Android Studio compatibility requirements come from the official JetBrains repository. Re-check the repository and documentation after major releases.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Muhammad Hammad Khan&lt;/em&gt;&lt;/p&gt;

</description>
      <category>androidstudio</category>
      <category>ai</category>
      <category>jetbrains</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Connecting Figma MCP to Zoo Code (macOS and Windows, using Codex CLI)</title>
      <dc:creator>Muhammad Hammad Khan</dc:creator>
      <pubDate>Tue, 03 Nov 2026 08:50:30 +0000</pubDate>
      <link>https://dev.to/muhammad_hammadkhan_507a/connecting-figma-mcp-to-zoo-code-macos-and-windows-using-codex-cli-2gmh</link>
      <guid>https://dev.to/muhammad_hammadkhan_507a/connecting-figma-mcp-to-zoo-code-macos-and-windows-using-codex-cli-2gmh</guid>
      <description>&lt;p&gt;&lt;em&gt;By Muhammad Hammad Khan&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A practical setup and troubleshooting guide for connecting Figma's hosted remote MCP server to Zoo Code inside Android Studio, using Codex CLI, without requiring a Claude subscription. The macOS process reflects the setup actually completed; Windows credential handling is marked where it was not tested.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Critical configuration detail:&lt;/strong&gt; &lt;code&gt;"type": "streamable-http"&lt;/code&gt; (not &lt;code&gt;"type": "http"&lt;/code&gt;) resolved Zoo Code's "Invalid MCP settings format" error in the tested setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Version context:&lt;/strong&gt; Zoo Code 3.90.0, Android Studio, Figma remote MCP, Codex CLI&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Overview and safety
&lt;/h2&gt;

&lt;p&gt;The remote Figma MCP endpoint is &lt;code&gt;https://mcp.figma.com/mcp&lt;/code&gt;. It works with browser-based Figma; the Figma desktop app is not required for the remote server.&lt;/p&gt;

&lt;p&gt;Codex CLI was used to authorize Figma. Claude Code was briefly explored but not used for the final connection, because the goal was to avoid buying a Claude subscription just to authorize Figma.&lt;/p&gt;

&lt;p&gt;This workflow uses a workaround/helper to transfer an existing Figma MCP credential into Zoo Code. It is not an officially documented, first-party Figma-to-Zoo-Code integration. Figma notes that direct remote-server support is limited to listed clients; support and authentication behavior can change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Never publish a bearer token, Keychain export, credential file, or screenshot that reveals a token.&lt;/li&gt;
&lt;li&gt;Back up configuration before editing; do not commit &lt;code&gt;mcp_settings.json&lt;/code&gt; or local credential files to Git.&lt;/li&gt;
&lt;li&gt;Keep the normal Codex configuration intact. Do not expose credentials in chat or shell logs.&lt;/li&gt;
&lt;li&gt;Only authorize an account permitted to access the target Figma file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MCP vs Code Connect
&lt;/h3&gt;

&lt;p&gt;MCP lets the coding agent call Figma tools to read design context. Code Connect is an optional mapping from Figma components to real components in a codebase. Code Connect was not required to establish the MCP connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. macOS: completed workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Verify Node.js and npm
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
npm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Install and verify Codex CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex
codex &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tested machine reported Codex CLI 0.163.0. Your version may differ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Sign in to Codex CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Complete the browser-based sign-in flow. Codex must be authenticated before the helper can launch the Figma MCP login flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Start Figma authorization through the helper
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx figma-mcp-auth mint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helper launched a Codex MCP login flow using an isolated &lt;code&gt;CODEX_HOME&lt;/code&gt;, opened a browser, and asked for Figma authorization. Sign in to the intended Figma account and click &lt;strong&gt;Allow&lt;/strong&gt;. The isolated home was intended to avoid changing the normal Codex setup.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not use the Claude route. The Claude-specific path would require Claude Code authentication; Codex CLI was chosen instead to avoid a Claude subscription.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 5: Verify Codex has the Figma MCP server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm the &lt;code&gt;figma&lt;/code&gt; entry points to &lt;code&gt;https://mcp.figma.com/mcp&lt;/code&gt; and shows OAuth enabled. The list does not need to display the token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Diagnose the helper's Keychain lookup
&lt;/h3&gt;

&lt;p&gt;The first injection attempt failed because the helper could not find a Figma token. On the tested Mac, Keychain metadata showed this arrangement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service: Codex MCP Credentials
account: figma|&amp;lt;client-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helper originally expected the opposite arrangement (service beginning with &lt;code&gt;figma|&lt;/code&gt; and account &lt;code&gt;Codex MCP Credentials&lt;/code&gt;). The local helper's &lt;code&gt;lib/keyring.js&lt;/code&gt; was adjusted to search the actual Mac Keychain arrangement. A safe check then confirmed a matching credential and valid access token without printing the secret.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Check the helper's URL constants
&lt;/h3&gt;

&lt;p&gt;The inspected published package had malformed URL constants in its local source. They were corrected only after inspecting that package build. If your installed version already has correct constants, do not overwrite them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MCP_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mcp.figma.com/mcp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AUTHORIZE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.figma.com/oauth/mcp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TOKEN_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.figma.com/v1/oauth/token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;REGISTER_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.figma.com/v1/oauth/mcp/register&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PROTECTED_RESOURCE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mcp.figma.com/.well-known/oauth-protected-resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SCOPE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp:connect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;KEYRING_ACCOUNT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Codex MCP Credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;KEYRING_SERVICE_PREFIX&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;figma|&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OAuth endpoints and helper internals can change. Inspect the version you are actually using; if the constants differ, consult the package maintainer and current Figma docs rather than guessing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 8: Save the matching credential to the helper's local store
&lt;/h3&gt;

&lt;p&gt;A local transfer script read the matching Keychain credential and saved it to the helper's local token store. It validated that the credential matched the Figma MCP URL and was unexpired, and reported the expiry without printing the token. This transfer script was environment-specific; do not recreate it by guesswork or expose the secret.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 9: Open Zoo Code's global MCP settings
&lt;/h3&gt;

&lt;p&gt;In Android Studio, open &lt;strong&gt;Zoo Code → MCP Servers → Edit Global MCP&lt;/strong&gt;. The tested macOS path was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;~/.zoo-code/globalStorage/wecode-ai.zoo-code/settings/mcp_settings.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file initially contained an empty &lt;code&gt;mcpServers&lt;/code&gt; object. Back it up before editing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 10: Inject the credential
&lt;/h3&gt;

&lt;p&gt;After the local token store was populated, the helper's dry run showed that it would update the &lt;code&gt;figma&lt;/code&gt; entry. Review dry-run output first, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx figma-mcp-auth inject &lt;span class="nt"&gt;--client&lt;/span&gt; codex &lt;span class="nt"&gt;--target&lt;/span&gt; zcode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helper reported that the Zoo Code settings file had been updated. Command behavior can vary by package version; check its README/help before running it in another environment. Do not inject before token lookup succeeds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 11: Correct the transport type (critical fix)
&lt;/h3&gt;

&lt;p&gt;The first config used &lt;code&gt;"type": "http"&lt;/code&gt; and Zoo Code returned &lt;code&gt;Invalid MCP settings format: mcpServers.figma: Invalid input&lt;/code&gt;. Changing the value to &lt;code&gt;"streamable-http"&lt;/code&gt; resolved the validation error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"figma"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.figma.com/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer YOUR_EXISTING_TOKEN"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the real token only in your local file; the placeholder above is for documentation. Preserve all quotes, commas, and braces. The endpoint must be the plain URL shown, not a Markdown-formatted link.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 12: Restart and test
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Restart Zoo Code or start a fresh agent session.&lt;/li&gt;
&lt;li&gt;Ask: "List the available tools from the Figma MCP server."&lt;/li&gt;
&lt;li&gt;Paste the complete Figma file URL and ask the agent to inspect a specific frame/node.&lt;/li&gt;
&lt;li&gt;If it asks for &lt;code&gt;fileKey&lt;/code&gt;, provide the file URL. Server configuration alone does not identify the file you want to inspect.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Windows: equivalent steps and important limitation
&lt;/h2&gt;

&lt;p&gt;The successful credential transfer described above was performed on macOS. The helper version was adjusted for macOS Keychain; Windows uses a different credential store. &lt;strong&gt;Do not treat the Windows credential-transfer portion as verified end-to-end until tested on a Windows machine.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install prerequisites
&lt;/h3&gt;

&lt;p&gt;Install Node.js from nodejs.org. Open PowerShell and verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Install and authenticate Codex CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;openai/codex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Complete the browser-based Codex login. Then run the helper authorization command and approve Figma in the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;figma-mcp-auth&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;mint&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Confirm Codex Figma entry
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;mcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm the Figma entry and endpoint &lt;code&gt;https://mcp.figma.com/mcp&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Check Windows credential-store support before injection
&lt;/h3&gt;

&lt;p&gt;The Mac-specific Keychain lookup cannot be used on Windows. Inspect the helper source and documentation to confirm it supports Windows Credential Manager or another secure Windows credential source. If it does not, stop and use a reviewed Windows-compatible method or ask the maintainer to add support. Do not print tokens or paste secrets into scripts, chats, or tickets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Locate Zoo Code global settings
&lt;/h3&gt;

&lt;p&gt;In Android Studio, open &lt;strong&gt;Zoo Code → MCP Servers → Edit Global MCP&lt;/strong&gt;. Use the actual path opened by the extension. If needed, search the user profile for &lt;code&gt;mcp_settings.json&lt;/code&gt; under Zoo Code's globalStorage directory. Back up the file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Configure the server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"figma"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.figma.com/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer YOUR_EXISTING_TOKEN"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a real token only after secure, supported transfer. Do not use &lt;code&gt;"type": "http"&lt;/code&gt; in the tested Zoo Code version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Restart and verify
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Restart Zoo Code or create a new agent session.&lt;/li&gt;
&lt;li&gt;Ask it to list Figma MCP tools.&lt;/li&gt;
&lt;li&gt;Supply the complete Figma file URL and target frame/node.&lt;/li&gt;
&lt;li&gt;If validation fails, check transport type, JSON syntax, endpoint, and header structure before debugging authentication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Troubleshooting
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Meaning / fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SSE error: status 405&lt;/td&gt;
&lt;td&gt;The attempted SSE/endpoint combination was not accepted. Use the transport supported by this Zoo Code version.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP 403 / invalid OAuth response&lt;/td&gt;
&lt;td&gt;Direct OAuth was rejected for the attempted client. The workflow used Codex CLI authorization and a secure credential transfer instead.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex CLI not found&lt;/td&gt;
&lt;td&gt;Install Codex CLI and verify &lt;code&gt;codex --version&lt;/code&gt; works in the terminal you are using.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No Figma MCP token available&lt;/td&gt;
&lt;td&gt;The helper could not find a credential in its expected store. Check its keyring assumptions and the platform credential store.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invalid MCP settings format&lt;/td&gt;
&lt;td&gt;In the tested Zoo Code build, changing &lt;code&gt;"type": "http"&lt;/code&gt; to &lt;code&gt;"type": "streamable-http"&lt;/code&gt; fixed validation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent asks for fileKey&lt;/td&gt;
&lt;td&gt;Provide the complete Figma file URL or a link copied from the target frame/selection.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  5. End-to-end verification checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Codex CLI is installed and authenticated.&lt;/li&gt;
&lt;li&gt;Codex lists the Figma MCP server and correct remote endpoint.&lt;/li&gt;
&lt;li&gt;The helper can securely locate an unexpired credential without printing it.&lt;/li&gt;
&lt;li&gt;Zoo Code's global config contains the &lt;code&gt;figma&lt;/code&gt; server entry.&lt;/li&gt;
&lt;li&gt;The transport is exactly &lt;code&gt;streamable-http&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The endpoint is exactly &lt;code&gt;https://mcp.figma.com/mcp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Authorization is a Bearer header and the token remains private.&lt;/li&gt;
&lt;li&gt;Zoo Code has been restarted or a fresh agent session opened.&lt;/li&gt;
&lt;li&gt;The agent lists Figma tools and can read the target file when given its URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A config entry by itself is not proof of success. Confirm the agent can list tools and read the intended design.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Prompts to test the connection
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Check tool availability&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;List the tools available from the connected Figma MCP server. Report any connection or authentication error exactly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Inspect a design&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Inspect this Figma design: PASTE_THE_COMPLETE_FIGMA_FILE_URL. Use the connected Figma MCP tools. Identify the file and target node from the URL. Read the selected frame's design context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  7. Code Connect (optional)
&lt;/h2&gt;

&lt;p&gt;Code Connect maps a Figma component to the corresponding real component in the codebase. For example, it can map a Figma button to a reusable Jetpack Compose button so generated code can reuse the existing implementation. It is not needed just to read designs with MCP. Choose "Not now" unless your project has reusable components ready to map.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Figma: remote server installation&lt;/li&gt;
&lt;li&gt;Figma: guide to the MCP server&lt;/li&gt;
&lt;li&gt;Zoo Code: MCP configuration&lt;/li&gt;
&lt;li&gt;Figma: troubleshooting tools that do not load&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;The macOS keyring fix and helper-source adjustments were specific to the package version and local environment. The Windows credential transfer has not been verified end-to-end.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Muhammad Hammad Khan&lt;/em&gt;&lt;/p&gt;

</description>
      <category>figma</category>
      <category>mcp</category>
      <category>androidstudio</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
