squareone_ MCP

~/squareone ❯ mcp add squareone

App icons for AI coding agents

Connect the SquareOne MCP server and ask your agent to “use design/icon.png as the app icon”. It previews the icon on every mask, generates the files and wires them into your iOS, Android, Expo or Flutter project. Everything runs locally.

01 Connect the server

Claude Code

Terminal
❯ claude mcp add squareone -- npx -y squareone mcp

Cursor

.cursor/mcp.json
{
  "mcpServers": {
    "squareone": {
      "command": "npx",
      "args": ["-y", "squareone", "mcp"]
    }
  }
}

VS Code (Copilot)

.vscode/mcp.json
{
  "servers": {
    "squareone": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "squareone", "mcp"]
    }
  }
}

Codex CLI

~/.codex/config.toml
[mcp_servers.squareone]
command = "npx"
args = ["-y", "squareone", "mcp"]

Requires Node.js 18+. Restart the client after adding the server.

02 Tools your agent gets

  • preview_app_icon

    Renders the icon as launchers show it: iOS (plus dark and tinted), Android adaptive circle and rounded masks and the themed icon, so the agent can tune size and background before generating.

  • generate_app_icons

    Writes every icon for iOS, Android, Expo and/or Flutter into a folder and returns the file list with step-by-step integration instructions.

  • get_app_icon_specs

    Returns sizes and rules for every platform, handy when the agent debugs an existing icon setup.

claude — my-app

> Use design/icon.png as the app icon, with an iOS dark variant

● Detected React Native (android/, ios/)

✓ preview_app_icon — logo touches the Android mask, retrying at 80%

✓ generate_app_icons — 28 files in app-icons/

✓ Replaced mipmap-*/ic_launcher* and mipmap-anydpi-v26

✓ Replaced Images.xcassets/AppIcon.appiconset

Example session. Exact output depends on your agent.

03 Give your agent the playbook

The instructions tell the agent how to detect the project type, preview before generating, replace launcher files without leaving duplicates, and what to tell you at the end. Use the skill for Claude Code (and other agents that read SKILL.md), or paste the short version into your project's AGENTS.md.

SKILL.md

raw file ↗
Install as a Claude Code skill
mkdir -p .claude/skills/app-icons
curl -o .claude/skills/app-icons/SKILL.md \
  https://squareone.dewxit.com/agents/SKILL.md
.claude/skills/app-icons/SKILL.md
---
name: app-icons
description: Create or update app icons for iOS, Android (adaptive and themed icons), Expo, React Native or Flutter apps from one image, using the SquareOne MCP server or CLI. Use when the user asks to add, change, fix or resize an app icon or launcher icon.
---

# App icons with SquareOne

SquareOne generates every app icon from one image: an iOS AppIcon.appiconset (single 1024px icon, optional iOS 18 dark/tinted), Android legacy, round, adaptive and themed icons plus a Play Store icon, an Expo app.json config and Flutter flutter_launcher_icons files. Docs: https://squareone.dewxit.com/agents

## Tools

Prefer the MCP tools when the `squareone` server is connected:

- `preview_app_icon` - renders a PNG of the icon on iOS (incl. dark/tinted) and Android (circle and rounded masks, themed icon).
- `generate_app_icons` - writes the icons to a folder and returns integration steps.
- `get_app_icon_specs` - sizes and rules for every platform.

Without MCP, use the CLI (Node 18+):

```bash
npx -y squareone preview path/to/icon.png -o icon-preview.png
npx -y squareone generate path/to/icon.png -p ios,android -o app-icons
npx -y squareone specs
```

## Workflow

1. Detect the project type:
   - `app.json` / `app.config.*` with Expo config -> platform `expo`.
   - `pubspec.yaml` -> platform `flutter`.
   - `ios/` and `android/` folders (bare React Native or native apps) -> platforms `ios`, `android`.
2. Find the artwork. Prefer a square PNG or SVG of at least 1024px. Ask the user if there is none; never use a screenshot or a low-resolution favicon.
3. Preview first. Full-bleed artwork works at scale 100; a logo on a transparent background usually needs scale 70-85 and a background color. Check that nothing important is cut off by the Android circle mask and that the themed icon is recognizable.
4. Generate into a temporary folder such as `app-icons` (not directly into the project).
5. Integrate by following the returned README for each platform:
   - iOS: replace the contents of the existing `AppIcon.appiconset` in the app's asset catalog (React Native: `ios/<App>/Images.xcassets`). Keep the set name the target uses.
   - Android: copy `res/` into `android/app/src/main/res`, replacing the existing launcher files with the same name. Make sure the manifest uses `@mipmap/ic_launcher` and `@mipmap/ic_launcher_round`. Remove stale `ic_launcher` files of other formats (e.g. .webp) with the same name, or the build fails with duplicate resources.
   - Expo: copy the images, set `icon` and `ios.icon` and replace the whole `android.adaptiveIcon` object in app.json / app.config (drop any template `backgroundImage`, it hides the background color).
   - Flutter: copy `assets/icon`, put `flutter_launcher_icons.yaml` next to `pubspec.yaml`, add `flutter_launcher_icons` (0.14.2+) as a dev dependency and run `dart run flutter_launcher_icons`.
6. Delete the temporary folder after integrating.
7. Tell the user what changed and that a native rebuild is needed (Expo Go keeps its own icon; iOS may cache the old icon until the app is reinstalled).

## Rules

- iOS icons must be opaque and must not be pre-rounded; SquareOne already handles this.
- Upload `android/play-store-512.png` to Google Play Console manually; don't commit it into res/.

AGENTS.md snippet

raw file ↗
AGENTS.md
## App icons

Use SquareOne for app / launcher icons instead of resizing images by hand.

- MCP server: `npx -y squareone mcp` (tools: `preview_app_icon`, `generate_app_icons`, `get_app_icon_specs`).
- CLI fallback: `npx -y squareone generate <image> -p <ios,android,expo,flutter> -o app-icons`, then follow `app-icons/README.md`.
- Preview first: logos on a transparent background usually need scale 70-85 and a background color.
- Generate into a temporary folder, integrate, then delete it. Remove stale launcher files with the same name but another format (.webp) to avoid duplicate resources.
- Full instructions: https://squareone.dewxit.com/agents/SKILL.md

Agents that read the web can also start from /llms.txt.

04 No MCP? Use the CLI

Terminal
npx -y squareone preview icon.png -o icon-preview.png
npx -y squareone generate icon.png -p ios,android,expo -o app-icons \
  --ios-dark --ios-tinted --scale 80
npx -y squareone --help

Frequently asked questions

Does the MCP server upload my artwork anywhere?+

No. The server runs locally through npx and renders images on your machine with the same generator as the website. Nothing is sent to squareone.

Which AI agents does it work with?+

Any client that supports MCP servers over stdio, including Claude Code, Cursor, VS Code with Copilot, Codex CLI, Windsurf and Zed. Agents without MCP can use the CLI with the same commands.

What do I need installed?+

Node.js 18 or newer. The package uses prebuilt native canvas binaries, so there is nothing else to install.

Does the agent change my project files?+

The MCP tools only write into the output folder you choose. The agent then integrates the files into your project following the returned instructions, so you can review every change as usual.