Summary
Add a downloadUrl (S3 presigned URL) to the generate_pptx MCP tool response in the Remote MCP Server (Layer 3).
Motivation
When integrating with external platforms like GenU (Generative AI Use Cases), the caller has no direct access to S3 or the SDPM Web UI. The current response only returns status and slide summary — there is no way for the caller to retrieve the generated PPTX file.
Adding a presigned URL enables external MCP clients to provide a download link directly to the end user.
Current behavior
generate_pptx returns:
{
"status": "completed",
"slideCount": 12,
"slides": ["page01 - Title", "..."]
}
Proposed behavior
{
"status": "completed",
"slideCount": 12,
"slides": ["page01 - Title", "..."],
"downloadUrl": "https://bucket.s3.region.amazonaws.com/pptx/deck-id/uuid.pptx?X-Amz-..."
}
Implementation
In mcp-server/tools/generate.py, after uploading the PPTX to S3:
result["downloadUrl"] = storage.presign_url(key=key, expires=3600)
Storage.presign_url() already exists in the ABC and is implemented in AwsStorage.
Scope
- Only affects Remote MCP Server (
mcp-server/tools/generate.py)
- Local MCP Server (
mcp-local/) is unaffected (separate codebase, returns local file path)
- No breaking change — additive field only
Summary
Add a
downloadUrl(S3 presigned URL) to thegenerate_pptxMCP tool response in the Remote MCP Server (Layer 3).Motivation
When integrating with external platforms like GenU (Generative AI Use Cases), the caller has no direct access to S3 or the SDPM Web UI. The current response only returns status and slide summary — there is no way for the caller to retrieve the generated PPTX file.
Adding a presigned URL enables external MCP clients to provide a download link directly to the end user.
Current behavior
generate_pptxreturns:{ "status": "completed", "slideCount": 12, "slides": ["page01 - Title", "..."] }Proposed behavior
{ "status": "completed", "slideCount": 12, "slides": ["page01 - Title", "..."], "downloadUrl": "https://bucket.s3.region.amazonaws.com/pptx/deck-id/uuid.pptx?X-Amz-..." }Implementation
In
mcp-server/tools/generate.py, after uploading the PPTX to S3:Storage.presign_url()already exists in the ABC and is implemented inAwsStorage.Scope
mcp-server/tools/generate.py)mcp-local/) is unaffected (separate codebase, returns local file path)