SkillAgentSearch skills...

midjourney-mcp-cli

Midjourney MCP server and CLI for Claude Code, Codex and AI agents. 32 tools for generating images, following jobs to completion, downloading the real files, and building moodboards that make a style reusable.

Install / Use

claude mcp add thenavidm -- npx -y github:thenavidm/midjourney-mcp-cli

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Supported Platforms

Claude Code
Claude Desktop
Cursor
Windsurf
OpenAI Codex

Our assessment of midjourney-mcp-cli

midjourney-mcp-cli scores 83/100 on our quality scale, 675th of 963 AI & Machine Learning skills we index.

Its MCP Server is 35 KB long, well organised into 40 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 7 days ago, so midjourney-mcp-cli is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

midjourney-mcp-cli compared with similar skills

All 4 of these similar skills score higher than midjourney-mcp-cli; compare them before choosing.

SkillScoreStarsUpdatedFormat
midjourney-mcp-cli (this skill)by thenavidm8337d agoMCP Server
claude-memby thedotmack100100.1ktodayCLAUDE.md
Agent-Reachby Panniantong10096.5k4d agoCLAUDE.md
Understand-Anythingby Egonex-AI10086.1ktodayCLAUDE.md
headroomby headroomlabs-ai10075.1ktodayCLAUDE.md

Frequently asked questions

How do I install midjourney-mcp-cli?
Run claude mcp add thenavidm -- npx -y github:thenavidm/midjourney-mcp-cli. The install tabs above show the steps for each supported agent.
Which AI agents does midjourney-mcp-cli work with?
It is written for Claude Code, Claude Desktop, Cursor, Windsurf and OpenAI Codex, as a MCP Server file. Other agents that read the same format can often use it too.
Is midjourney-mcp-cli safe to use?
It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is midjourney-mcp-cli still maintained?
The repository was last updated 7 days ago, so midjourney-mcp-cli is actively maintained.
<img src="https://cdn.navid.me/connectors/midjourney-icon-solid.png" alt="Midjourney" width="88">

Midjourney MCP + CLI

npm License YouTube X LinkedIn

Midjourney MCP server and CLI for Claude Code, Codex and AI agents. 32 tools for generating images, following jobs to completion, downloading the real files, and building moodboards that make a style reusable.

Midjourney publishes no API, so this drives a real Chrome that is signed in as you.

There is no key to paste and no cookie to export. You sign in once, in a window, and the session lives in a browser profile rather than in a config file.

32 tools, on both surfaces. It waits for jobs to finish and hands back the actual files, not a screenshot of them.

Built and maintained by Navid Moazzez. Built on Slipway, which turns one definition of each tool into the MCP server and the CLI.

<img src="https://cdn.navid.me/repos/midjourney-mcp-cli.gif" alt="Claude Code using the Midjourney MCP server" width="520">

Two ways to use it

Command line

midjourney-cli in your terminal, for scripting, cron, pipes, or a quick question without opening anything:

midjourney-cli                                        # every command, one line each
midjourney-cli login                                  # sign in once, in a window
midjourney-cli imagine "a red fox in snow" --ar 16:9 --confirm
midjourney-cli list-jobs --limit 5 --select id,prompt --json
midjourney-cli download-job <job-id> --out-dir ./renders
midjourney-cli list-moodboards --json | jq -r '.moodboards[].title'
midjourney-cli which "save my pictures to disk"       # find the right command
midjourney-cli <command> --help                       # what any command takes

--confirm is the shell spelling of the confirmation that generating requires. --json gives JSON, --compact puts it on one line, --select id,status keeps only the fields you name, and errors are JSON on stderr whichever you pick.

Handlers return data rather than pre-rendered text, so --json gives real fields on every command and jq works the same way everywhere.

MCP server, for your AI app

midjourney-mcp is what Claude Code, Claude Desktop, Cursor and the rest launch. You never run it by hand:

claude mcp add midjourney -- npx -y @thenavidm/midjourney-mcp-cli@latest

There is nothing to put in -e. Run midjourney-cli login first.

Then just ask: "shoot that campaign in the style of my High Fashion moodboard".

Every other client is in section 3. Each generation waits for your approval in the client, as section 7 explains.

Which one

| Where you are | What you can reach | |---|---| | An agent that can run shell commands, like Claude Code or Cursor | Both. The CLI is the cheaper one: it costs nothing until you type it | | claude.ai or a phone | Neither. Your logged-in browser is on this machine, and a cloud connector cannot reach it | | A terminal, a script, cron or CI | The CLI only. There is no MCP client in a shell |

They are the same program reading the same tool definitions, so anything one can do, the other can.

Features

Every tool is both a command and an MCP tool, with the same name. The command is the tool name with dashes.

| Capability | CLI command | MCP tool | |---|---|---| | Who am I, is the session live | midjourney-cli whoami | whoami | | Generate and wait for the images | midjourney-cli imagine | imagine | | Generate without waiting | midjourney-cli submit-imagine | submit_imagine | | Re-run a job, or re-render at HD | midjourney-cli rerun-job | rerun_job | | Vary one image from a grid | midjourney-cli vary-image | vary_image | | Recent generations | midjourney-cli list-jobs | list_jobs | | One job by id | midjourney-cli get-job | get_job | | Wait for a job to finish | midjourney-cli wait-for-job | wait_for_job | | What is rendering now | midjourney-cli get-queue | get_queue | | Save the real files to disk | midjourney-cli download-job / download-url | download_job / download_url | | List and read moodboards | midjourney-cli list-moodboards / get-moodboard | list_moodboards / get_moodboard | | Create a moodboard | midjourney-cli create-moodboard | create_moodboard | | Add to, remove from a moodboard | midjourney-cli add-to-moodboard / remove-from-moodboard | add_to_moodboard / remove_from_moodboard | | Personalisation profiles | midjourney-cli list-personalized-profiles | list_personalized_profiles | | Folders and storage | midjourney-cli list-folders / get-storage | list_folders / get_storage | | The public explore feed | midjourney-cli explore-feed | explore_feed | | Any endpoint with no named tool | midjourney-cli api-get / submit-raw-job | api_get / submit_raw_job | | Check your setup | midjourney-cli doctor | not a tool | | Sign in | midjourney-cli login | not a tool | | Record what the web app calls | midjourney-cli capture | not a tool | | Find the right command | midjourney-cli which "..." | not a tool |

All 27 with their arguments are in section 6.

Contents

| # | Section | What is in it | |---|---|---| | 1 | What you can ask it | Real prompts, not features | | 2 | Sign in once | No key, no cookie | | 3 | Install | Every client, copy and paste, plus the shell | | 4 | Output and exit codes | What scripts branch on | | 5 | Which surface, and what each costs | Measured in Claude Code, and how to spend less | | 6 | Tools | All 32, by what they reach | | 7 | Spending safely | Why generating asks twice | | 8 | Prompts and parameters | The grammar, validated before you pay | | 9 | Moodboards | Turning a look into something reusable | | 10 | How it works | Architecture, and why a browser | | 11 | Your data | What is stored and where | | 12 | Risks | Read this before you install | | 13 | Troubleshooting | When something breaks | | 14 | Environment variables | Every knob, and its default | | 15 | FAQ | Including what an MCP server is |

1. What you can ask it

  • Make me a 16:9 hero image of a red fox asleep in snow, muted palette
  • Shoot that campaign in the style of my High Fashion moodboard
  • Make a moodboard for cold Nordic product shots, fill it, then shoot a jar of face cream in that style
  • Generate four logo concepts at low stylize so they stay literal, and save them
  • Vary the second one, strong, and save the results
  • Upscale that one and turn it into a video
  • Take that last image's seed and try it again with chaos 40
  • What is in my Midjourney queue right now?
  • Download everything I generated today into ./renders
  • Show me my last ten jobs with just the prompt and the image URLs
  • Re-run job 3f9c1a2b with the prompt changed to say "at dusk"

The thing you cannot do without this: hand an agent a brief and get finished image files back. Every other route stops at a job id, or at a screenshot of the image rather than the image. This waits for the render and writes the real bytes to disk, so the next step in a pipeline has something to open.

2. Sign in once

There is no API key. Midjourney does not issue one, and this server never handles a credential of any kind.

Instead it runs Chrome against a profile of its own, at ~/.midjourney-mcp/chrome-profile. You sign in there once and the session persists, exactly as it would in a browser you use by hand.

npx -y @thenavidm/midjourney-mcp-cli@latest login

A Chrome window opens on midjourney.com. Sign in. The command waits, notices, and exits.

The profile is separate from your everyday Chrome on purpose. Nothing here can see your normal browsing, your other logins, or your history, and your normal browser does not need to be running.

To revoke it, sign out in that window, or delete the profile:

rm -rf ~/.midjourney-mcp/chrome-profile

3. Install

The long version, every step with what to do when one fails, is in INSTALL.md.

Node 22 or newer, and Google Chrome. Nothing else.

npx -y @thenavidm/midjourney-mcp-cli --version

Node 22 is the floor because the browser connection uses the global WebSocket that landed in that release. That is also why it has no dependency doing it.

Claude Code

claude mcp add midjourney -- npx -y @thenavidm/midjourney-mcp-cli@latest

--scope user makes it available in every project rather than the current one.

Claude Desktop

| Platform | Path | |---|---| | macOS | ~/Library/Application Support/Claude/claude_desktop_config.json | | Windows | %APPDATA%\Claude\claude_desktop_config.json |

{
  "mcpServers": {
    "midjourney": {
      "command": "npx",
      "args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
    }
  }
}

There is also a one-click .mcpb bundle on the release page, installed through Settings, Extensions, Install Extension.

[!TIP] Claude Desktop does not inherit your shell PATH, so a bare npx can fail silently. Use the absolute path from which npx, and fully quit the app rather than closing the window.

Cursor

.cursor/mcp.json, the same JSON shape as Claude Desktop, key mcpServers.

VS Code

.vscode/mcp.json. The key is servers, not mcpServers, and the entry takes "type": "stdio".

{
  "servers": {
    "midjourney": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
    }
  }
}

Codex CLI

~/.codex/config.toml:

[mcp_servers.midjourney]
command = "npx"
args = ["-y", "@thenavidm/midjourney-mcp-cli@latest"]

The shell

Both binaries come from the same install. midjourney-cli with no arguments lists every command.

midjourney-cli install claude-code (or codex, claude-desktop, cursor, vscode, gemini) adds the server to a client in its own format; add --dry-run to see the change first.

Check it worked

npx -y @thenavidm/midjourney-mcp-cli@latest doctor

It checks in dependency order and stops at the first real problem, because these failures all produce the same symptom from a tool call and need completely different fixes.

The two that actually happen:

Browser running fails. Chrome is not up on the DevTools port. It starts on demand on the first tool call, so this is only a problem if you have set MIDJOURNEY_CHROME_LAUNCH=0. Run login to start it by hand.

Signed in fails. The window is open but the profile is signed out. Run login again.

4. Output and exit codes

Results on stdout, errors on stderr as JSON, so one parse handles both.

| Flag | Result | |---|---| | none | pretty JSON | | --json | JSON, always | | --compact | the same JSON on one line | | --select a,b.c | keep only these fields. Dotted paths descend, arrays are traversed element-wise, and a field not at the top selects inside the one list a result holds, keeping the rest | | --agent | compact JSON. Never implies --confirm |

--select matters mo

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryAI
Updated7d ago
Forks0

Languages

TypeScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low