Midjourney MCP Server & CLI
A free, open source Midjourney MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents generate images, follow jobs and download the real files.
0.0(0 ratings)- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
In Claude Code, type /mcp. Midjourney should show as connected.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add midjourney -- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
In Claude Code, type /mcp. Midjourney should show as connected.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
In Claude Code, type /mcp. Midjourney should show as connected.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2Download the extension
Download the Claude Desktop extension.
- 3
Double-click it, and Claude Desktop installs it.
It uses the session your sign-in saved, so there's nothing to fill in.
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add midjourney -- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 3
Add the server.
{
"mcpServers": {
"midjourney": {
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
} - 4
Open the MCP tab again. It should show 32 tools.
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open the Command Palette and run MCP: Open User Configuration.
- 3
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers.
{
"servers": {
"midjourney": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
}
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get midjourney
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add midjourney -- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get midjourney
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add midjourney \
-- npx -y @thenavidm/midjourney-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get midjourney
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Gemini CLI settings.
~/.gemini/settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"midjourney": {
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"midjourney": {
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Gemini CLI settings.
~/.gemini/settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"midjourney": {
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your OpenCode config.
~/.config/opencode/opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"midjourney": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/midjourney-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"midjourney": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/midjourney-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your OpenCode config.
~/.config/opencode/opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"midjourney": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/midjourney-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add midjourney \
--command npx \
--arg -y \
--arg @thenavidm/midjourney-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor midjourney --probe
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add midjourney --command npx --arg -y --arg @thenavidm/midjourney-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor midjourney --probe
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add midjourney \
--command npx \
--arg -y \
--arg @thenavidm/midjourney-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor midjourney --probe
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 3
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"midjourney": {
"command": "npx",
"args": ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
}
}
}
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Hermes config.
~/.hermes/config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
midjourney:
command: "npx"
args: ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
midjourney:
command: "npx"
args: ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
- 1
Sign in once. A Chrome window opens on midjourney.com.
The session stays in a Chrome profile of its own, so your app's config needs no password.
npx -y @thenavidm/midjourney-mcp-cli@latest login - 2
Open your Hermes config.
~/.hermes/config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
midjourney:
command: "npx"
args: ["-y", "@thenavidm/midjourney-mcp-cli@latest"]
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.claude/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Claude Code to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\midjourney" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\midjourney-mcp-cli\SKILL.md" "$HOME\.claude\skills\midjourney\" - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Claude Code to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.claude/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Claude Code to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.agents/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Codex to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\midjourney" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\midjourney-mcp-cli\SKILL.md" "$HOME\.agents\skills\midjourney\" - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Codex to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.agents/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Codex to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
Ask Cursor to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
Ask VS Code to use midjourney-cli.
Running midjourney-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.copilot/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Copilot CLI to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\midjourney" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\midjourney-mcp-cli\SKILL.md" "$HOME\.copilot\skills\midjourney\" - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Copilot CLI to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.copilot/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask Copilot CLI to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
Ask Gemini CLI to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.config/opencode/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenCode to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\midjourney" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\midjourney-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\midjourney\" - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenCode to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.config/opencode/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenCode to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.openclaw/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenClaw to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\midjourney" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\midjourney-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\midjourney\" - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenClaw to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/midjourney
cp "$(npm root -g)/@thenavidm/midjourney-mcp-cli/SKILL.md" ~/.openclaw/skills/midjourney/ - 3
Sign in once in the Chrome window it opens.
midjourney-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 5
Ask OpenClaw to use midjourney-cli.
Running midjourney-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
Ask Antigravity to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
Ask Hermes to use midjourney-cli.
Running midjourney-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/midjourney-mcp-cli@latest - 2
Sign in once in the Chrome window it opens.
midjourney-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
midjourney-cli doctor - 4
List every command, then try one.
midjourney-cli
midjourney-cli get-queue
Needs Node 22 or newer, Chrome and a paid Midjourney plan. It's unofficial, so read the risks first.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Midjourney MCP server and CLI gives your AI real access to your Midjourney account. It generates images, follows jobs until they finish, downloads the real files and builds moodboards that make a style reusable.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 32 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Midjourney MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Midjourney MCP server & CLI?
The Midjourney MCP server & CLI is a free, open source program that lets AI agents make and manage images in your Midjourney account for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Midjourney, through a real browser session.
The CLI is the same program as commands. midjourney-cli get-queue runs the same code your AI runs when you ask what's rendering, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Midjourney. I explain how the parts fit together in how to build an AI operating system, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingMake 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.
Generate 4 logo concepts at low stylize so they stay literal, and save them.
Upscale that one and turn it into a video.
What is in my Midjourney queue right now?
Download everything I generated today into ./renders.
The last one shows why this is useful. Your AI waits for the render and writes the real image files to disk, so the next step in your work has something to open.
It works well next to my Adobe Firefly MCP server and fal.ai MCP server, so your AI can expand images in Adobe Firefly and run other image and video models on fal.ai in the same chat. Every server I've made is on my MCP servers page.
For your prompts, my free AI image prompt generator and image to prompt generator help too. Midjourney is one of the image tools I suggest in ways to make money with AI.
How to install the Midjourney MCP server
Pick your app in the box at the top of this page. You sign in once in a browser window, then add the server to your app with a single command or a pasted block.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: This is unofficial, and Midjourney's terms don't permit automated access. Any unofficial tool puts the account at some risk, so read the risks section below before you connect yours.
Sign in to Midjourney
There's no API key. Midjourney doesn't issue one, and this server never handles a password or a token.
It runs Chrome with a profile of its own, at ~/.midjourney-mcp/chrome-profile. You sign in there once, and the session stays, like any browser you use by hand.
npx -y @thenavidm/midjourney-mcp-cli loginA Chrome window opens on midjourney.com. Sign in, and the command notices and finishes.
That profile is separate from your everyday Chrome, so nothing here sees your browsing, your other logins or your history. To disconnect, sign out in that window or delete the profile folder.
Check that it works
Run the doctor. It checks Chrome, the profile, the sign-in and your plan in order, so the first failure is the one to fix.
npx -y @thenavidm/midjourney-mcp-cli doctorWhen it passes, restart your app and ask what's in your queue.
In Claude Code, /mcp also shows whether the Midjourney server is connected. It's one of the Claude Code commands worth knowing.
Use the Midjourney CLI
The CLI is the same 32 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so get_queue runs as midjourney-cli get-queue.
npm install -g @thenavidm/midjourney-mcp-cli
midjourney-cli
midjourney-cli get-queue
midjourney-cli list-jobsThe bare midjourney-cli lists every command, midjourney-cli which <words> finds the command for a task, and midjourney-cli <command> --help shows what a command takes. Anything that spends GPU time needs --confirm, the terminal's version of your approval.
midjourney-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Prints compact JSON, and never counts as a confirm |
--confirm | Lets a tool that spends go ahead |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 2 | The command was typed wrong, or a tool that spends needed --confirm |
| 3 | The job, folder or image wasn't found |
| 4 | You're signed out, or a Cloudflare check is waiting in the browser window |
| 5 | Midjourney or the browser failed |
| 7 | You hit a rate limit or ran out of fast hours, so wait and try again |
MCP server or CLI: which one?
Both are the same program with the same 32 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 13,900 tokens
- CLI
- Nothing
- MCP server
- 1,000 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 3,800 tokens, once
- MCP server
- 277,000 tokens
- CLI
- 3,800 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Midjourney or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Midjourney comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 90 tokens.
When the whole conversation is about Midjourney, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't making images, with your AI app's own switch. MIDJOURNEY_READ_ONLY=1 cuts it to the 17 reading tools.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
Risks to know first
It's unofficial, and Midjourney's terms don't permit automated access. The server moves at a person's pace and works through a real browser session, which is the honest limit of what any tool can do about that risk.
It spends money. A loop over 20 prompt ideas is 20 charges, and there are no refunds, so use MIDJOURNEY_READ_ONLY=1 for an agent working on its own.
The endpoints it uses are undocumented and can change without notice. The server reads what comes back carefully, but a big enough change on Midjourney's side will still break something.
Every Midjourney tool
The tables below list all 32 tools, grouped the way the repo groups them. Of these, 17 only read, and 15 change something or spend GPU time.
Making images
imagine- What it does
- Generate images from a prompt, wait for the job to finish, and return the results with direct image URLs.
- Kind
- Asks first
submit_imagine- What it does
- Submit a generation and return immediately with the job id, without waiting for the images.
- Kind
- Asks first
rerun_job- What it does
- Run an existing job again, which is what the reroll button in the web app does.
- Kind
- Asks first
vary_image- What it does
- Take one image from a finished grid and generate four variations of it.
- Kind
- Asks first
upscale_image- What it does
- Upscale one image from a finished grid to full resolution.
- Kind
- Asks first
animate_image- What it does
- Animate one image from a finished grid into a short video.
- Kind
- Asks first
pan_image- What it does
- Extend one image in a direction, inventing what lies beyond the current frame.
- Kind
- Asks first
zoom_out- What it does
- Pull the camera back, filling the new space around the existing image.
- Kind
- Asks first
remix_image- What it does
- Keep an image's composition and re-render it against different wording.
- Kind
- Asks first
submit_raw_job- What it does
- Send an arbitrary job type to Midjourney's submit endpoint.
- Kind
- Asks first
Jobs
list_jobs- What it does
- List the account's recent Midjourney jobs, newest first, with their status and the URLs of any finished images.
- Kind
- Reads
get_job- What it does
- Look up a single job by id and return its status and image URLs.
- Kind
- Reads
wait_for_job- What it does
- Block until a job reaches a finished, failed or moderated state, then return it with its image URLs.
- Kind
- Reads
get_queue- What it does
- Show the account's current Midjourney queue: what is running, what is waiting, and how much concurrency the plan allows.
- Kind
- Reads
job_updates- What it does
- Poll the feed the web app itself watches while work is in flight.
- Kind
- Reads
Downloads
download_job- What it does
- Download the finished images from a job and write them to disk, returning the local paths and byte counts.
- Kind
- Writes
download_url- What it does
- Download a single Midjourney asset by its direct URL.
- Kind
- Writes
Moodboards and folders
list_folders- What it does
- List the folders in the account's Organise view, the ones used to sort generations in the web app.
- Kind
- Reads
list_moodboards- What it does
- List the account's moodboards with how many reference images each holds.
- Kind
- Reads
get_moodboard- What it does
- Look up a moodboard by name or id and return its reference images.
- Kind
- Reads
create_moodboard- What it does
- Create a new, empty moodboard on the account.
- Kind
- Writes
add_to_moodboard- What it does
- Add images to a moodboard, either from a job you generated or by direct URL.
- Kind
- Writes
remove_from_moodboard- What it does
- Remove images from a moodboard by URL.
- Kind
- Asks first
get_storage- What it does
- Show the storage metadata the web app exposes: how much space the account's generations occupy against what the plan allows.
- Kind
- Reads
api_get- What it does
- Issue a GET against an arbitrary path on midjourney.com and return the JSON.
- Kind
- Reads
Explore
explore_feed- What it does
- Browse Midjourney's public explore feed: what other people are making, with prompts and image URLs where the feed exposes them.
- Kind
- Reads
explore_style_likes- What it does
- Fetch the style-like metadata the explore grid uses, which marks which styles the account has liked.
- Kind
- Reads
Profile
whoami- What it does
- Report which Midjourney account the controlled browser is signed in as, and whether the browser is reachable at all.
- Kind
- Reads
list_personalized_profiles- What it does
- List the account's personalisation profiles, with how many images each was trained on.
- Kind
- Reads
list_following- What it does
- List the Midjourney creators this account follows.
- Kind
- Reads
list_model_ratings- What it does
- List the image-rating tasks Midjourney is offering this account.
- Kind
- Reads
get_contest_ranking_count- What it does
- Show how many contest ranking rounds this account has completed.
- Kind
- Reads
Is the Midjourney MCP server safe?
Every generation burns GPU time from your plan, and none are refunded. So 11 tools ask first: everything that spends, plus removing from a moodboard. They're the ones marked "Asks first" in the tool tables above.
Adding to a moodboard, making one and downloading don't ask, because none of them spends or loses anything.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
MIDJOURNEY_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Midjourney.
Make it read-only
Set MIDJOURNEY_READ_ONLY=1 and everything that isn't a read disappears from the tool list, leaving 17 tools. MIDJOURNEY_ALLOW_DESTRUCTIVE=0 is the middle setting: reads and downloads still work, and anything that spends doesn't.
Keep a log of every write
Set MIDJOURNEY_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: Prompts and job details from the explore feed are text other people wrote, and one can try to give your AI orders. Treat them as data, and use MIDJOURNEY_READ_ONLY=1 for an agent working on its own.
Your data
Nothing leaves your computer except the requests to Midjourney you asked for. There's no tracking, no analytics and no server of ours in between.
The session lives in a Chrome profile on your own disk, and the server never reads a cookie, stores a token or sees a password. Downloads go to ~/Downloads/midjourney unless you choose another folder.
Midjourney MCP server settings
Every setting is optional, as an environment variable in your app's config or your shell. The defaults are what most people want.
MIDJOURNEY_CHROME_PROFILE- Default
~/.midjourney-mcp/chrome-profile- What it does
- Sets the browser profile that holds the session
MIDJOURNEY_CHROME_PATH- Default
- found for you
- What it does
- Points at the Chrome app
MIDJOURNEY_DEFAULT_SPEED- Default
fast- What it does
- Picks
fast,relaxorturbo
MIDJOURNEY_DEFAULT_VERSION- Default
7- What it does
- Picks the model version
MIDJOURNEY_DOWNLOAD_DIR- Default
~/Downloads/midjourney- What it does
- Sets where downloads land
MIDJOURNEY_JOB_TIMEOUT_MS- Default
600000- What it does
- Sets how long to wait for a job
MIDJOURNEY_READ_ONLY- Default
0- What it does
1hides everything that isn't a read
MIDJOURNEY_ALLOW_DESTRUCTIVE- Default
1- What it does
0blocks anything that spends
MIDJOURNEY_AUDIT_LOG- Default
- none
- What it does
- Logs every attempted change to a file
MIDJOURNEY_CDP_URL- Default
http://127.0.0.1:9222- What it does
- The DevTools endpoint
MIDJOURNEY_CHROME_LAUNCH- Default
- none
- What it does
- 0 never starts Chrome, only attaches to a running one
MIDJOURNEY_HEADLESS- Default
- none
- What it does
- 1 runs without a window. Signing in needs one, so do that first
MIDJOURNEY_USER_ID- Default
- none
- What it does
- Skips finding the user id
MIDJOURNEY_ORIGIN- Default
https://www.midjourney.com- What it does
- The web app
MIDJOURNEY_REQUEST_TIMEOUT_MS- Default
30000- What it does
- Per-request deadline
MIDJOURNEY_MIN_REQUEST_INTERVAL_MS- Default
700- What it does
- Spacing between requests
MIDJOURNEY_MAX_RETRIES- Default
3- What it does
- Retries on 429 and 5xx
MIDJOURNEY_JOB_POLL_INTERVAL_MS- Default
3000- What it does
- The first poll interval, widening after
MIDJOURNEY_REFRESH_VIEW- Default
- none
- What it does
- 0 leaves the open window alone after a generation
MIDJOURNEY_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
MIDJOURNEY_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
MIDJOURNEY_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
MIDJOURNEY_HTTP_PORT- Default
8787- What it does
- Sets the port for
--http
MIDJOURNEY_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
MIDJOURNEY_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
MIDJOURNEY_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
MIDJOURNEY_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| "Cloudflare served a challenge" | Open the window and let the check finish once in that profile |
| "The browser profile is not signed in" | You're signed out, or the session ran out. Run the login again |
| "No Chrome or Chromium found" | Set MIDJOURNEY_CHROME_PATH to your Chrome |
| "DevTools never answered" | Another Chrome is using that profile. Quit it, or set another profile folder |
| Refused for billing reasons | You're out of fast hours, or the plan lapsed. Switch to relax speed |
| "had not finished after 600s" | That's normal on relax speed. The job is still running, so raise the timeout |
| Downloads come back empty | The file link ran out. Read the job again with get_job for fresh links |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for images
Turn a post into an image to share, or build a slide deck from your ideas.
FAQs about the Midjourney MCP server & CLI
Here are the questions people ask most about the Midjourney MCP server and CLI.
The Midjourney MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor make and manage images in your Midjourney account.
It has 32 tools for generating images, variations, upscales, videos, jobs, downloads and moodboards, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Midjourney CLI is the same program as the Midjourney MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Midjourney MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Midjourney MCP server is free and open source under the MIT license.
You still need a paid Midjourney plan, and every generation spends its GPU time.
No, Midjourney doesn't issue an API key.
The Midjourney MCP server works through a real Chrome session you sign in to once, and it never handles your password.
No, Midjourney's terms don't permit automated access, and the Midjourney MCP server is unofficial.
It moves at a person's pace through a real browser, but any unofficial tool puts the account at some risk.
The Midjourney MCP server only spends GPU time once you approve it, and --agent never approves anything.
Read-only mode removes everything that spends.
The Midjourney MCP server saves downloads to ~/Downloads/midjourney unless you set MIDJOURNEY_DOWNLOAD_DIR.
It writes the real image files, not screenshots.
The Midjourney MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Midjourney MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the MIT license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
