gpt-image-mcp
MCP server that exposes OpenAI image generation and editing as tools, focused on creating consistent character expressions by compositing edited regions onto a stable base image.
README
gpt-image-mcp
OpenAI の画像生成/編集を MCP ツールとして出すサーバ。 同じキャラクターの差分絵(口の形・目の開閉)を作る用途を主目的にしている。
なぜ単なるAPIラッパーではないか
/v1/images/edits は、マスクを渡しても画像全体を再生成する。
実測(2026-08-12・gpt-image-2・1024x1024):
| マスク内で変化 | マスク外で変化 | マスク外の最大差分 | |
|---|---|---|---|
| 口を「あ」に編集 | 7,184px (35.8%) | 9,425px (0.92%) | 220 |
| 口を「い」に編集 | 1,498px (7.5%) | 7,431px (0.72%) | 216 |
最大差分220は「ほぼ別の色」。編集結果をそのまま動画のコマに使うと、口が変わるたびに髪や輪郭も動く—— 30fps で切り替えると顔が揺れる。
このサーバは対処を同梱している。編集結果は「口の形の参考」として扱い、土台は1枚に固定して、
マスク領域だけをローカルで貼り直す(compose_region)。土台はビット単位で保たれる。
| マスク外の最大差分 | |
|---|---|
| 編集結果をそのまま使う | 220 |
| 単純にぼかして合成 | 55(ぼけがマスク外へ滲む) |
compose_region(内側だけぼかす) |
10(知覚不能) |
ツール
| ツール | 課金 | 何をするか |
|---|---|---|
list_image_models |
なし | このキーで使える画像モデルを列挙。キーが生きているかの確認にも使う |
generate_image |
あり | プロンプトから生成し、ファイルに保存してパスを返す |
edit_image |
あり | マスク指定で編集。そのままコマに使わないこと(上記) |
compose_region |
なし | 編集結果のマスク領域だけを土台へ貼る。土台の汚れを自動検証する |
make_mask |
なし | 楕円マスクを作る(比率指定) |
画像は base64 で返さずファイルに書いてパスを返す。会話の文脈を食い潰さないため。
APIキーの扱い
このサーバはキーを保持しない。 呼ぶたびに、次の順で解決する。
- 環境変数
OPENAI_API_KEY - macOS Keychain(
OPENAI_KEYCHAIN_SERVICEにサービス名を設定した場合)
エラー本文にキーが混ざった場合は [REDACTED] に置換してから返す。
Keychain へ入れる場合(コマンド履歴にキーを残さない形):
printf 'key: '; stty -echo; read -r K; stty echo; echo
security add-generic-password -a "$USER" -s openai-image -U -w "$K"; unset K
⚠
securityの対話入力(-wを引数なしで最後に置く形)は128文字で切り捨てる。sk-proj-形式のキーは164文字あるため、上の「値として渡す」形を使うこと。
設定
.mcp.json / Claude Code の MCP 設定に追加する。
{
"mcpServers": {
"gpt-image": {
"command": "node",
"args": ["/path/to/gpt-image-mcp/src/index.mjs"],
"env": { "OPENAI_KEYCHAIN_SERVICE": "openai-image" }
}
}
}
必要なもの
- Node.js 18+(
fetch/FormDataを使う) - Python 3 + Pillow(
compose_region/make_mask)。numpyがあれば土台の汚れを自動検証する
npm install
pip install Pillow numpy
アバターの作り方(この構成での標準手順)
generate_imageで土台を1枚作る。背景は単色、影とグラデーションを禁止、正面向き、口は閉じ目は開くmake_maskで口の領域(目安0.40 / 0.455 / 0.60 / 0.575)と目の領域(0.34 / 0.32 / 0.66 / 0.42)のマスクを作るedit_imageで口の形(あいうえお)と閉じた目を作るcompose_regionで全部を土台へ貼り直す ← ここを飛ばすと顔が揺れる- 口の形は母音ごとに1枚。日本語の口パクは
a i u e o+ 閉じ口の6枚で足りる
⚠ 「い」のように変化が小さい口の形は生成が弱い(実測でマスク内の変化が7.5%しか出ず、 マスク外のほうが動いた)。プロンプトを形で具体的に指示するか、その口だけ手で描くほうが早い。
生成物の権利
生成画像を販売物に使う場合、「動画に使ってよい」と「販売する教材に使ってよい」が 別条項のことがある。使う前に、使うキーのアカウントの利用規約を確認すること。 借りたキーで作った素材を自社商品に使わない。
ライセンス
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。