README
🚀 🎨 Midjourney MCP Server
Midjourney MCP (Model Context Protocol) 服务器功能完备,借助 GPTNB API 实现 Midjourney 图像生成功能,能够满足多样化的图像创作需求。
🚀 快速开始
环境要求
- Python 3.10+
- pip
- Node.js(用于 MCP Inspector,可选)
安装
# 克隆项目
git clone <repository-url>
cd mj-mcp
# 安装依赖
pip install -r requirements.txt
# 或安装为可编辑包
pip install -e .
配置
设置环境变量:
# Windows
set GPTNB_API_KEY=your_api_key_here
set GPTNB_BASE_URL=https://aiclound.vip
# Linux/Mac
export GPTNB_API_KEY=your_api_key_here
export GPTNB_BASE_URL=https://aiclound.vip
或创建 .env 文件:
GPTNB_API_KEY=your_api_key_here
GPTNB_BASE_URL=https://aiclound.vip
运行
启动服务器
# 直接运行
python src/server.py
# 或使用MCP开发工具
npx @modelcontextprotocol/inspector python src/server.py
✨ 主要特性
- 🖼️ 图像生成:依据文本提示生成高质量图像。
- 🔄 图像变换:支持放大、变体、重新生成等操作。
- 🎭 高级编辑:具备缩放、平移、修复等编辑功能。
- 👥 人脸替换:拥有智能人脸交换功能。
- 📝 图像描述:可进行 AI 图像内容分析。
- 🔧 提示优化:提供智能提示词优化建议。
- 📊 任务管理:实现简洁高效的任务状态跟踪。
🛠️ 可用工具 (7个)
核心图像生成工具 (6个)
| 工具名称 | 描述 | 主要参数 |
|---------|------|---------|
| imagine_image | 生成图像 | prompt, aspect_ratio, base64_images |
| blend_images | 混合图像 | base64_images, dimensions |
| describe_image | 描述图像 | base64_image |
| change_image | 图像变换 | task_id, action, index |
| modal_edit | 高级编辑 | task_id, action, prompt |
| swap_face | 人脸替换 | source_image, target_image |
任务管理工具 (1个)
| 工具名称 | 描述 | 主要参数 |
|---------|------|---------|
| get_task_status | 任务状态查询 | task_id |
📁 项目结构
mj-mcp/
├── src/ # 源代码目录
│ ├── server.py # MCP 服务器主入口
│ ├── client.py # GPTNB API 客户端
│ ├── service.py # 业务逻辑服务
│ ├── config.py # 配置管理
│ ├── models.py # 数据模型
│ ├── task_handler.py # 任务处理器
│ ├── exceptions.py # 异常定义
│ └── utils.py # 工具函数
├── requirements.txt # 项目依赖
├── setup.py # 安装配置
└── README.md # 项目文档
🔧 技术细节
代码结构
项目采用简化的扁平化结构,符合 MCP 协议最佳实践:
- 无包结构:移除了不必要的
__init__.py和__main__.py。 - 直接入口:通过
python src/server.py直接启动。 - 现代依赖:使用最新版本的 MCP SDK (1.9.1)。
- 简洁配置:使用传统的
requirements.txt管理依赖。 - 精简工具集:7 个核心工具,专注于实用功能,避免冗余。
💻 使用示例
基础用法
# 通过 MCP 客户端调用
result = await session.call_tool("imagine_image", {
"prompt": "a beautiful sunset over mountains, digital art",
"aspect_ratio": "16:9"
})
高级用法
# 生成变体
result = await session.call_tool("change_image", {
"task_id": "previous_task_id",
"action": "VARIATION",
"index": 1
})
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
GPT-3.0 License
扫码联系在线客服