Skip to main content
Glama

Midjourney MCP Web

Unofficial Model Context Protocol (MCP) server for generating images through the Midjourney web app using your own signed-in browser authentication cookies.

This project is a cleaned-up and modernized fork of Lala-0x3f/mj-mcp. It keeps the same simple MCP surface, but updates the web flow for the current Midjourney site:

  • submits jobs to /api/submit-jobs

  • reads the Midjourney user id from the signed-in web page

  • polls /api/imagine instead of relying on the now-blocked websocket path

  • defaults to --v 8.1

This project is not affiliated with, endorsed by, or supported by Midjourney.

Tool

The server exposes one MCP tool:

generating_image(prompt: str, aspect_ratio: str) -> str

The response is Markdown with four Midjourney CDN image URLs.

Related MCP server: Midjourney Best Experience MCP Server

Requirements

  • Python 3.10+

  • uv or another Python package runner

  • A Midjourney account with access to the web app

  • Your own __Host-Midjourney.AuthUserTokenV3_r and __Host-Midjourney.AuthUserTokenV3_i cookie values

Install From GitHub

uvx --from git+https://github.com/WilliamJizh/midjourney-mcp-web midjourney-mcp-web

For local development:

git clone https://github.com/WilliamJizh/midjourney-mcp-web.git
cd midjourney-mcp-web
uv run --with-editable . python -m midjourney_mcp_web

Configuration

The server reads configuration from environment variables.

Variable

Required

Default

Description

TOKEN_R

Yes

Value of __Host-Midjourney.AuthUserTokenV3_r

TOKEN_I

Yes

Value of __Host-Midjourney.AuthUserTokenV3_i

API_BASE

No

www.midjourney.com

Midjourney web host

SUFFIX

No

--v 8.1

Parameters appended to every prompt

MJ_JOB_TIMEOUT_SEC

No

300

Polling timeout for completed job visibility

CHANNEL_ID

No

singleplayer_<user_id>

Override channel id

Never commit real token values. Treat both tokens as secrets.

Codex Config Example

[mcp_servers.midjourney]
command = "uvx"
args = ["--from", "git+https://github.com/WilliamJizh/midjourney-mcp-web", "midjourney-mcp-web"]

[mcp_servers.midjourney.env]
TOKEN_R = "replace_with_midjourney_cookie_r"
TOKEN_I = "replace_with_midjourney_cookie_i"
SUFFIX = "--v 8.1"

For better local security on macOS, store the tokens in Keychain and use a small wrapper script that exports TOKEN_R and TOKEN_I before launching this server. Do not publish that wrapper with real values.

Claude Desktop Config Example

{
  "mcpServers": {
    "midjourney": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/WilliamJizh/midjourney-mcp-web",
        "midjourney-mcp-web"
      ],
      "env": {
        "TOKEN_R": "replace_with_midjourney_cookie_r",
        "TOKEN_I": "replace_with_midjourney_cookie_i",
        "SUFFIX": "--v 8.1"
      }
    }
  }
}
  1. Open https://www.midjourney.com/explore?tab=top while signed in.

  2. Open browser developer tools.

  3. Go to Application or Storage.

  4. Open Cookies for https://www.midjourney.com.

  5. Copy the values for:

    • __Host-Midjourney.AuthUserTokenV3_r

    • __Host-Midjourney.AuthUserTokenV3_i

Do not paste these values into public chats, issues, logs, or commits.

Example Prompt

A peaceful impressionist garden with water lilies and soft morning light --stylize 200

Call the MCP tool with:

{
  "prompt": "A peaceful impressionist garden with water lilies and soft morning light --stylize 200",
  "aspect_ratio": "3:4"
}

The server appends:

--ar 3:4 --v 8.1

unless you override SUFFIX.

Development

uv run --extra dev pytest
uv run --extra dev python -m build

Run a no-secret source scan before publishing:

git grep -n -I -E 'TOKEN_R=|TOKEN_I=|AuthUserTokenV3_[ri]=[^\"[:space:]]+|gho_|sk-[A-Za-z0-9]|BEGIN (RSA|OPENSSH|PRIVATE) KEY'

Limitations

  • Midjourney web APIs are not public APIs and may change without notice.

  • The server uses your own Midjourney account and may consume GPU time.

  • The returned URLs point to Midjourney CDN assets.

  • This does not upload reference images; it is text-prompt only.

License

GPL-3.0-or-later. See LICENSE.

Available Tools

1 tool
generating_imageB

Generate an image with Midjourney.

Args: prompt: English image prompt. Additional Midjourney parameters can be included. aspect_ratio: Aspect ratio such as "16:9", "4:3", or "3:4".

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
aspect_ratioYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits, but it only states the basic action. No information about side effects, costs, rate limits, or resulting image characteristics is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two sentences covering purpose and parameters. No extraneous content; front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 required string parameters) and presence of an output schema, the description is partially adequate. However, it lacks usage guidance and behavioral details, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description adds meaning: 'English image prompt' and 'Additional Midjourney parameters can be included' for prompt; and example values for aspect_ratio. This goes beyond raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Generate an image with Midjourney', specifying the verb (Generate), resource (image), and tool (Midjourney). It is specific and not a tautology, though a bit more detail could enhance clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention when to use this tool, when not to, or any alternatives. Lacks context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The tool's purpose is clear and distinct.

Naming Consistency5/5

The single tool uses a descriptive verb_noun pattern ('generating_image'), and there is no inconsistency since there's only one tool.

Tool Count3/5

One tool is on the borderline of being too few for a domain like image generation, which typically benefits from additional capabilities (e.g., describing, varying). However, it may suffice for basic generation.

Completeness2/5

The tool surface is severely limited to only generation, lacking common lifecycle operations like retrieving results, upscaling, or modifying images. This will likely lead to agent failures in practical workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WilliamJizh/midjourney-mcp-web'

If you have feedback or need assistance with the MCP directory API, please join our Discord server