[Feature Request] 外部MCPクライアント(Claude.ai等)から画像をデッキに取り込む手段がない
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start by tracing the existing save_web_image, read_uploaded_file, and run_python tools in the Layer 3 MCP server, including how S3 storage and _check_deck_access() are used. Compare the proposed external-client upload paths and check their filename, extension, size, and authorization requirements. Done means an external MCP client can place an image in the deck workspace and use it in a slide without weakening existing access checks.
Written by the indexing model from the issue text.
Description
素晴らしいプロジェクトを公開いただきありがとうございます。Layer 2 を Kiro から、Layer 3 を Claude.ai のカスタムコネクタから利用しています。
やりたいこと
Claude.ai のチャットに添付した写真やスクリーンショットを、スライドに埋め込みたい。
現状の制約
外部 MCP クライアント(Claude.ai、Claude Desktop、Kiro 等)から Layer 3 のリモート MCP サーバーを利用する場合、ユーザーがクライアント側で添付した画像をデッキのワークスペースに取り込む導線がありません。
既存ツール | 制約 -- | -- save_web_image | 公開 URL が必要。ローカル画像は不可 read_uploaded_file | Layer 4 Web UI 経由の upload_id が必要。外部クライアントが発行できない run_python(files=...) | テキストファイルのみ。バイナリ非対応Layer 4 の Web UI は REST API 経由で S3 に直接アップロードし、MCP サーバーと同じバケットを共有しているため問題が起きません。しかし、Layer 3 を Layer 4 の Web UI なしで使う場合(MCP クライアントから直接接続)、この導線が存在しません。
提案
以下のいずれか(または両方)の対応を検討いただけないでしょうか。
案 A: base64 画像受け取りツールの追加(最小改修)
python@mcp.tool()
async def upload_image(deck_id: str, filename: str, data_base64: str) -> str:
"""Base64エンコードされた画像をデコードしてデッキのimages/に保存する"""
image_bytes = base64.b64decode(data_base64)
await storage.put_file(f"decks/{deck_id}/images/{filename}", image_bytes)
return json.dumps({"status": "ok", "key": f"decks/{deck_id}/images/{filename}"})
Claude.ai はコンテキスト内の画像を base64 として認識できるため、このツールがあれば save_web_image と同様にスライドへの画像埋め込みが可能になります。
案 B: run_python(files=...) のバイナリ対応
既存の files パラメータが base64 エンコードされたバイナリも受け取れるように拡張する。
補足
- スキーマは dict リテラルで定義すれば Gateway の $ref 制約に抵触しません
- ファイル名のサニタイズ、拡張子ホワイトリスト、サイズ上限は必要です
- 既存の
_check_deck_access()による認可チェックはそのまま適用できます
環境
- Layer 3 + AgentCore Gateway 経由
- クライアント: Claude.ai カスタムコネクタ(モバイル含む)、Kiro
- Dominant language
- Python
- Stars
- 128
- Forks
- 10
- Avg merge
- 6h 15m
- Merged PRs (30d)
- 19
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aws-samples/sample-spec-driven-presentation-maker
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 48/100
-
Difficulty 5/5 Over a week Newbie friendliness 45/100
-
Difficulty 3/5 1-2 days Newbie friendliness 72/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 38/100
All issues in aws-samples/sample-spec-driven-presentation-maker
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
stephrobert/dsoxlab#238 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
sublimehq/package_control#1780 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
nwg-piotr/nwg-displays#145 ·