image-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@image-mcp生成一张赛博朋克风格的城市夜景图"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
image-mcp
lk888 (gpt-image-2) 图像生成 MCP server · 文生图 + 图生图 · 双 transport (stdio + HTTP) · MySQL 使用量统计 · OSS 持久化 用于 Claude Code / 任何 MCP 客户端做 UI 形态对照、参考稿、概念草图。
1. 它是什么
协议:Model Context Protocol (MCP),工具被任何 MCP 客户端(Claude Code / Claude Desktop / Cursor 等)调用
能力:一个工具
generate_image— 调 lk888/v1/media/generate异步任务,出图后下载 → 上传 OSS → 落 MySQL → 把图直接 base64 返给客户端存储:OSS 永久持久化(预签名 URL,1h),本地是 fallback;MySQL 一张
mcp_usage表统计每次调用的 size/quality/cost/durationtransport:
stdio本地直连(Claude Code 拉起本地进程)http远程(ECS + Nginx + Bearer 鉴权,任何 MCP 客户端都能连)
2. 一次性准备(只跑一次)
2.1 RDS 建库
mysql -h rm-bp1126b6e6ibav2uxzo.mysql.rds.aliyuncs.com -P 3306 -u error_boot -p \
-e "CREATE DATABASE IF NOT EXISTS \`image2-mcp\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"库名带连字符,SQL 里必须反引号转义。表
mcp_usageserver 启动会自动CREATE TABLE IF NOT EXISTS,不需要手建。
2.2 白名单
把"本机公网 IP"和"ECS 公网 IP 47.98.87.96"加进 RDS 白名单(阿里云控制台 → 数据安全性 → 白名单)。
2.3 凭据 — 与 errorbook 共享 .env,只追加独有 key
复用思路:RDS_* / ALIYUN_AK/SK 这些"轮换困难"的凭据已经在 errorbook 的 .env.prod / .env.local 里了,image-mcp 不重新定义,通过 docker compose 多 --env-file 叠加引用。
文件 | 位置 | 内容 |
共享基础 .env | 本地 | RDS_HOST / RDS_USERNAME / RDS_PASSWORD / ALIYUN_ACCESS_KEY_ID/SECRET 等(errorbook 已有,不动) |
image-mcp 增量 | 本地 | LK888_KEY / MCP_AUTH_TOKEN / RDS_DB=image2-mcp / IMAGE_MCP_ACR_IMAGE / NGINX_PORT 等(参考 |
键名对齐说明:
✅
RDS_USERNAME(不是RDS_USER)— 对齐 errorbook .env✅
RDS_DB独立 key,值 =image2-mcp— 错开 errorbook 的RDS_DATABASE=ai_errorbook_v2✅
IMAGE_MCP_ACR_IMAGE独立 key — 错开 errorbook 的ACR_IMAGE✅
NGINX_PORT默认8080,避开 errorbook nginx 占的 80
3. 工具签名
generate_image(
prompt: str, # 必填,中英文皆可
images: list[str] | None = None, # 参考图 URL(最多 10);空=文生图,非空=图生图
size: "1024x1024" | "1024x1536" | "1536x1024" |
"2048x2048" | "2048x1152" | "3840x2160" | "2160x3840" | "auto" = "1024x1536",
quality: "low" | "medium" | "high" | "auto" = "medium",
background: "opaque" | "transparent" = "opaque",
n: int = 1, # 1~4
) -> [ImageContent (base64 PNG), TextContent (元信息 + OSS URL)]每次调用会落一条 mcp_usage 记录:ts / task_id / mode (t2i|i2i) / size / quality / duration_s / cost_usd / status / result_url / oss_key / oss_url / local_path。
4. 本地跑
4.1 stdio 模式(Claude Code 直连)
claude_desktop_config.json(Windows 在 %APPDATA%\Claude\):
{
"mcpServers": {
"image-mcp": {
"command": "D:/workplace/superpower-dev/image-mcp/.venv/Scripts/python.exe",
"args": ["-m", "image_mcp.server"],
"env": {
"PYTHONPATH": "D:/workplace/superpower-dev/image-mcp/src",
"LK888_KEY": "sk-...",
"RDS_HOST": "rm-bp1126b6e6ibav2uxzo.mysql.rds.aliyuncs.com",
"RDS_USERNAME": "error_boot",
"RDS_PASSWORD": "...",
"RDS_DB": "image2-mcp",
"ALIYUN_ACCESS_KEY_ID": "...",
"ALIYUN_ACCESS_KEY_SECRET": "..."
}
}
}
}stdio 模式 env 直接写
claude_desktop_config.json是 Claude Code 唯一的注入方式 — 这份配置在用户 AppData 下,不入项目 git。如果嫌重复,也可以把 env 留空,改用 dotenv 自动加载(让 server 启动时读D:\workplace\superpower-dev\.env.local)。
4.2 HTTP 模式(本机调试)
# PowerShell,凭据走 session env
$env:LK888_KEY = "..."; $env:RDS_HOST = "..."; ...; $env:MCP_AUTH_TOKEN = "<32+ chars>"
$env:PYTHONPATH = "src"
.venv\Scripts\python.exe -m image_mcp.server --transport http --port 8765Claude Code 连远程:
claude mcp add image-mcp --transport http http://127.0.0.1:8765/mcp \
--header "Authorization: Bearer <token>"5. 云上部署(参考 superpower/部署空间/部署运维手册.md 风格)
复用 errorbook 后端的 ACR + ECS 链路,新仓库
errorboot/image-mcp。
5.1 本地 build + push 镜像
cd D:\workplace\superpower-dev\image-mcp
docker build -t crpi-4e3qyeiaxmbfzar4.cn-hangzhou.personal.cr.aliyuncs.com/errorboot/image-mcp:latest .
docker push crpi-4e3qyeiaxmbfzar4.cn-hangzhou.personal.cr.aliyuncs.com/errorboot/image-mcp:latest首次 push 需要 docker login crpi-4e3qyeiaxmbfzar4.cn-hangzhou.personal.cr.aliyuncs.com(凭据在 ACR 控制台 "访问凭证")。
5.2 ECS 一次性准备
ssh root@47.98.87.96
mkdir -p /opt/image-mcp/deploy
cd /opt/image-mcp
# scp 上去:docker-compose.prod.yml + deploy/nginx.conf
# .env.prod 自己建(只放 image-mcp 独有 key,参考 .env.example;不入 git)
docker login crpi-4e3qyeiaxmbfzar4-vpc.cn-hangzhou.personal.cr.aliyuncs.com5.3 ECS 拉镜像 + 起服务 — 共享 errorbook .env.prod
cd /opt/image-mcp
docker compose -f docker-compose.prod.yml \
--env-file /opt/errorbook/.env.prod \ # 复用 errorbook 的 RDS_* / ALIYUN_*
--env-file ./.env.prod \ # image-mcp 独有:LK888_KEY / MCP_AUTH_TOKEN / RDS_DB / IMAGE_MCP_ACR_IMAGE
pull
docker compose -f docker-compose.prod.yml \
--env-file /opt/errorbook/.env.prod \
--env-file ./.env.prod \
up -d
docker compose -f docker-compose.prod.yml \
--env-file /opt/errorbook/.env.prod \
--env-file ./.env.prod \
ps🔴 铁则升级版:这里和 errorbook 部署手册 §1 的"单 --env-file"铁则有意分歧:image-mcp 走双 --env-file 叠加(后面的覆盖前面的)。共享凭据基础 + 服务独立配置,避免凭据重复定义。
建议沉淀一个 alias 在 ECS
~/.bashrc:alias img-mcp='docker compose -f /opt/image-mcp/docker-compose.prod.yml --env-file /opt/errorbook/.env.prod --env-file /opt/image-mcp/.env.prod' # 之后:img-mcp pull / img-mcp up -d / img-mcp ps / img-mcp logs -f image-mcp
5.4 smoke 验证
# Bearer 校验 — 无 token 应 401
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/mcp
# 带正确 token + MCP initialize 应 200 + SSE 流
curl -s -i -X POST http://localhost/mcp \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
| head -205.5 改代码后重发
docker build -t crpi-4e3qyeiaxmbfzar4.cn-hangzhou.personal.cr.aliyuncs.com/errorboot/image-mcp:latest .
docker push crpi-4e3qyeiaxmbfzar4.cn-hangzhou.personal.cr.aliyuncs.com/errorboot/image-mcp:latestssh root@47.98.87.96 'img-mcp pull && img-mcp up -d' # 用 §5.3 沉淀的 alias6. 凭据安全
全部走 env(
.env.local/.env.prod),源码、git 历史、Docker 镜像里都见不到凭据.gitignore屏蔽.env*push 前 grep:
grep -rn "lizhao@\|aliyun.*KEY\|sk-" --include="*.py" --include="*.yml" --include="*.toml" .MCP_AUTH_TOKEN用 32+ 位强随机串(openssl rand -hex 32)密码在对话/截图前永远先脱敏
7. 已知坑
库名
image2-mcp带连字符,所有 SQL 引用必须反引号`image2-mcp`POST 端点是
/mcp(不带尾 slash);带/mcp/会 307 重定向dev:h5/ playwright 等浏览器自动化不适用(MCP 协议层,不是 web 页面)OSS 是私有 bucket,返回的是预签名 URL,1h 后失效,需要查时重签
8. 待办
ICP 备案 + 域名 + HTTPS → 解锁微信小程序审核场景调用
多 caller 区分(目前
caller字段恒为 NULL,后期按 token / IP 落)接监控告警(失败率、cost 周报)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/RuntimeAll/image-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server