内容
# Reverse Prompt MCP
图片反推提示词 MCP Server。输入图片,输出结构化分析 + 生图提示词。
给 AI 智能体用的"看图说话"工具,通过 MCP 协议调用。
## 特性
- 🎯 **结构化分区输出** — description 按【风格】【构图】【主体】【光色】【细节】等分区,智能体按区取用
- 📐 **自动识别宽高比和标题** — 模型自动判断 ratio 和概括标题
- 🎨 **多模板系统** — 内置 3 套模板(绘画反推/海报逆向/产品摄影),支持用户自建
- 🔧 **模型无关** — 支持 OpenAI 兼容接口(千问/GPT-4V/DeepSeek/MiMo 等)和 Ollama 本地模型
- 🌐 **中英双语** — 同时输出中文和英文分析结果
- ⚡ **双模式** — fast(~24秒)/ quality(~140秒)
## 快速开始
### 1. 安装
```bash
git clone https://github.com/erduo1998-cell/reverse-prompt-mcp.git
cd reverse-prompt-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
```
### 2. 配置视觉模型
编辑 `config.yaml`,填入你的 API Key:
```yaml
vision:
provider: openai_compat
openai_compat:
api_key: "你的API Key"
base_url: "https://api.openai.com/v1" # 或其他兼容接口
model: "gpt-4o" # 或 qwen-vl-plus, deepseek-vl 等
```
**支持的模型提供商**:
| 提供商 | base_url | model 示例 |
|:---|:---|:---|
| OpenAI | `https://api.openai.com/v1` | `gpt-4o` |
| 通义千问 | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `qwen-vl-plus` |
| DeepSeek | `https://api.deepseek.com/v1` | `deepseek-vl` |
| MiMo | `https://token-plan-sgp.xiaomimimo.com/v1` | `mimo-v2-omni` |
| Ollama 本地 | 见下方 Ollama 配置 | `llava`, `minicpm-v` 等 |
**Ollama 本地模型配置**:
```yaml
vision:
provider: ollama
ollama:
base_url: "http://localhost:11434"
model: "llava"
```
### 3. 配置 MCP 客户端
#### OpenClaw
在 `openclaw.json` 中添加:
```json
{
"mcp": {
"servers": {
"reverse-prompt": {
"command": "/path/to/reverse-prompt-mcp/.venv/bin/python3",
"args": ["-m", "src.server"],
"cwd": "/path/to/reverse-prompt-mcp",
"env": {
"REVERSE_PROMPT_CONFIG": "/path/to/reverse-prompt-mcp/config.yaml"
}
}
}
}
}
```
#### Claude Code
在 Claude Code 的 MCP 配置中添加:
```json
{
"mcpServers": {
"reverse-prompt": {
"command": "/path/to/reverse-prompt-mcp/.venv/bin/python3",
"args": ["-m", "src.server"],
"cwd": "/path/to/reverse-prompt-mcp",
"env": {
"REVERSE_PROMPT_CONFIG": "/path/to/reverse-prompt-mcp/config.yaml"
}
}
}
}
```
#### Codex / 其他 MCP 客户端
参照上述格式,将 `command` 指向你的 Python 路径,`args` 为 `["-m", "src.server"]`,`cwd` 为项目目录。
## 工具说明
### reverse_prompt
分析图片并反推生成提示词。
**参数**:
| 参数 | 必填 | 说明 |
|:---|:---:|:---|
| `image` | ✅ | 图片 URL(http/https)或本地文件路径 |
| `mode` | ❌ | `fast`(快速~24秒)或 `quality`(高质量~140秒),默认 `quality` |
| `language` | ❌ | `zh` / `en` / `both`,默认 `both` |
| `template` | ❌ | 模板名称,使用自定义输出格式 |
**输出结构**:
```json
{
"title": "6字中文标题",
"ratio": "16:9",
"description": {
"zh": "【风格】...【构图】...【主体】...【光色】...【细节】...",
"en": "[Style] ... [Composition] ... [Subject] ... [Lighting & Color] ... [Details] ..."
},
"analysis": {
"subject": "主体描述",
"scene": "场景描述",
"composition": "构图方式",
"camera": "镜头语言",
"lighting": "光线描述",
"color_palette": "色彩描述",
"material_texture": "材质描述",
"style": "风格标签",
"mood": "氛围",
"key_details": ["视觉锚点"],
"negative": ["不需要的元素"]
},
"prompts": {
"zh": "中文生图提示词",
"en": "English prompt for image generation"
}
}
```
### list_templates
列出所有可用的提示词反推模板。
### create_template
创建自定义模板。
**参数**:
| 参数 | 必填 | 说明 |
|:---|:---:|:---|
| `name` | ✅ | 模板名称(英文,如 `painting`) |
| `display_name` | ✅ | 显示名称(如 `绘画反推`) |
| `description` | ✅ | 用途描述 |
| `output_format` | ✅ | 自定义输出 JSON 格式说明 |
| `extra_instructions` | ❌ | 额外分析指令 |
### delete_template
删除自定义模板。
## 内置模板
| 模板 | 名称 | 侧重 |
|:---|:---|:---|
| `painting` | 绘画反推 | 画风、构图、光影、色彩 |
| `poster` | 海报/信息图逆向 | 版式、配色、字体、核心元素 |
| `product` | 产品摄影反推 | 材质工艺、商业布光、展示方式 |
使用模板:调用 `reverse_prompt` 时传入 `template="painting"`。
## 自定义模板示例
通过 `create_template` 工具创建,或手动在 `templates/` 目录下新建 JSON 文件:
```json
{
"name": "anime",
"display_name": "二次元反推",
"description": "侧重线稿、赛璐璐上色、画风特征",
"builtin": false,
"output_format": "Return JSON: { \"title\": \"...\", \"ratio\": \"...\", \"description\": { \"zh\": \"【画风】...【线稿】...【上色】...【角色】...【背景】...\", \"en\": \"...\" }, ... }",
"extra_instructions": "Focus on line art quality, cel shading technique, and anime-specific style features."
}
```
## 协议
MIT License
## 致谢
灵感来源:[Promptify](https://chromewebstore.google.com/detail/promptify-ai-prompt-genera/hjlmkhkbljjkhjlgloaofjcbnhfioodb) Chrome 插件、[CLIP Interrogator](https://github.com/pharmapsychotic/clip-interrogator)、[ComfyUI-Prompt-Assistant](https://github.com/yawiii/ComfyUI-Prompt-Assistant)