
PowerPoint Translator
Translates PowerPoint presentations while preserving formatting using Amazon Bedrock models, available as both a standalone tool and a FastMCP service for AI assistants like Amazon Q Developer.
README
PowerPoint Translator using Amazon Bedrock
A powerful PowerPoint translation tool that leverages Amazon Bedrock models for high-quality translation. This service can be used both as a standalone command-line tool and as a FastMCP (Fast Model Context Protocol) service for integration with AI assistants like Amazon Q Developer. It translates PowerPoint presentations while preserving formatting and structure.
Features
- PowerPoint Translation: Translate text content in PowerPoint presentations
- Amazon Bedrock Integration: Uses Amazon Bedrock models for high-quality translation
- Format Preservation: Maintains original formatting, layouts, and styles
- Standalone & MCP Support: Use as a command-line tool or integrate with AI assistants via FastMCP
- Multiple Languages: Supports translation between various languages
- Batch Processing: Can handle multiple slides and text elements efficiently
- Selective Translation: Translate entire presentations or specific slides
Examples
Translation
The PowerPoint Translator maintains the original formatting while accurately translating content:
<table> <tr> <td><img src="imgs/original-en-complex.png" alt="English" width="450"/></td> <td><img src="imgs/translated-ko-complex.png" alt="Korean Example" width="450"/></td> </tr> <tr> <td align="center"><em>Original presentation slide in English <br> with complex layout</em></td> <td align="center"><em>Same presentation translated to Korean <br> with preserved formatting and layout</em></td> </tr> </table>
Kiro MCP Examples
Usage Examples
Translate entire presentation:
uv run python server.py --translate --input-file presentation.pptx --target-language ko
Translate specific slides:
uv run python server.py --translate-slides "1,3,5" --input-file presentation.pptx --target-language ja
Get slide information:
uv run python server.py --slide-info --input-file presentation.pptx
Prerequisites
- Python 3.11 or higher
- AWS Account with Bedrock access
- AWS CLI configured with appropriate credentials
- Access to Amazon Bedrock models (e.g., Claude, Nova, etc.)
AWS Credentials Setup
Before using this service, ensure your AWS credentials are properly configured. You have several options:
-
AWS CLI Configuration (Recommended):
aws configure
This will prompt you for:
- AWS Access Key ID
- AWS Secret Access Key
- Default region name
- Default output format
-
AWS Profile Configuration:
aws configure --profile your-profile-name
-
Environment Variables (if needed):
export AWS_ACCESS_KEY_ID=your_access_key export AWS_SECRET_ACCESS_KEY=your_secret_key export AWS_DEFAULT_REGION=us-east-1
-
IAM Roles (when running on EC2 instances)
The service will automatically use your configured AWS credentials. You can specify which profile to use in the .env
file.
Installation
-
Clone the repository:
git clone <repository-url> cd ppt-translator
-
Install dependencies using uv (recommended):
uv sync
Or using pip:
pip install -r requirements.txt
-
Set up environment variables:
cp .env.example .env
Edit
.env
file with your configuration:# AWS Configuration AWS_REGION=us-east-1 AWS_PROFILE=default # Translation Configuration DEFAULT_TARGET_LANGUAGE=ko BEDROCK_MODEL_ID=us.anthropic.claude-3-7-sonnet-20250219-v1:0 # Translation Settings MAX_TOKENS=4000 TEMPERATURE=0.1 ENABLE_POLISHING=true BATCH_SIZE=20 CONTEXT_THRESHOLD=5 # Debug Settings DEBUG=false
Note: AWS credentials (Access Key ID and Secret Access Key) are not needed in the
.env
file if you have already configured them usingaws configure
. The service will automatically use your AWS CLI credentials.
Usage
Standalone Command-Line Usage
The PowerPoint Translator can be used directly from the command line:
# Translate entire presentation to Korean
uv run python server.py --translate --input-file orig.pptx --target-language ko
# Translate specific slides (individual slides)
uv run python server.py --translate-slides "1,3,5" --input-file orig.pptx --target-language ko
# Translate slide range
uv run python server.py --translate-slides "2-4" --input-file orig.pptx --target-language ko
# Translate mixed (individual + range)
uv run python server.py --translate-slides "1,3-5,8" --input-file orig.pptx --target-language ko
# Get slide information and previews
uv run python server.py --slide-info --input-file orig.pptx
# Using python directly
python server.py --translate --input-file orig.pptx --target-language ko
python server.py --translate-slides "1,3" --input-file orig.pptx --target-language ko
FastMCP Server Mode (for AI Assistant Integration)
Start the FastMCP server for integration with AI assistants like Amazon Q Developer:
# Using uv (recommended)
uv run python server.py --mcp
# Using python directly
python server.py --mcp
FastMCP Setup (Amazon Q Developer and Kiro)
If you haven't already installed Amazon Q Developer or Kiro, please refer to this:
- Amazon Q Developer CLI: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html
- Kiro: https://kiro.dev
2. Configure FastMCP Server
Create or update your Q Developer FastMCP configuration file:
Kiro
User Level ~/.kiro/settings/mcp.json
Amazon Q Developer
On macOS/Linux: ~/.aws/amazonq/mcp.json
On Windows: %APPDATA%\amazonq\mcp.json
Add the PowerPoint Translator FastMCP server configuration:
Using uv:
{
"mcpServers": {
"ppt-translator": {
"command": "uv",
"args": ["run", "/path/to/ppt-translator/fastmcp_server.py"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "default",
"BEDROCK_MODEL_ID": "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
},
"disabled": false,
"autoApprove": [
"translate_powerpoint",
"get_slide_info",
"get_slide_preview",
"translate_specific_slides"
]
}
}
}
Alternative configuration using python directly:
{
"mcpServers": {
"ppt-translator": {
"command": "python",
"args": ["/path/to/ppt-translator/fastmcp_server.py"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "default",
"BEDROCK_MODEL_ID": "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
},
"disabled": false,
"autoApprove": [
"translate_powerpoint",
"get_slide_info",
"get_slide_preview",
"translate_specific_slides"
]
}
}
}
Important: Replace /path/to/ppt-translator/
with the actual path to your cloned repository.
3. Verify FastMCP Server
Test that the FastMCP server is working:
# Navigate to your project directory
cd /path/to/ppt-translator
# Test the FastMCP server using uv
uv run python server.py --mcp --test
# Or test using python directly
python server.py --mcp --test
4. Use PowerPoint Translation
Once connected, you can use commands like (User input does not have to be in English):
Translate original.pptx to Korean
Please translate slides 10 to 13 of original.pptx into Japanese.
Available FastMCP Tools
The FastMCP server provides the following tools:
-
translate_powerpoint
: Translate an entire PowerPoint presentation- Parameters:
input_file
: Path to the input PowerPoint file (.pptx)target_language
: Target language code (default: 'ko')output_file
: Path for the translated output file (optional, auto-generated)model_id
: Amazon Bedrock model ID (default: Claude 3.7 Sonnet)enable_polishing
: Enable natural language polishing (default: true)
- Parameters:
-
translate_specific_slides
: Translate only specific slides in a PowerPoint presentation- Parameters:
input_file
: Path to the input PowerPoint file (.pptx)slide_numbers
: Comma-separated slide numbers to translate (e.g., "1,3,5" or "2-4,7")target_language
: Target language code (default: 'ko')output_file
: Path for the translated output file (optional, auto-generated)model_id
: Amazon Bedrock model ID (default: Claude 3.7 Sonnet)enable_polishing
: Enable natural language polishing (default: true)
- Parameters:
-
get_slide_info
: Get information about slides in a PowerPoint presentation- Parameters:
input_file
: Path to the PowerPoint file (.pptx)
- Returns: Overview with slide count and preview of each slide's content
- Parameters:
-
get_slide_preview
: Get detailed preview of a specific slide's content- Parameters:
input_file
: Path to the PowerPoint file (.pptx)slide_number
: Slide number to preview (1-based indexing)
- Parameters:
-
list_supported_languages
: List all supported target languages for translation -
list_supported_models
: List all supported Amazon Bedrock models -
get_translation_help
: Get help information about using the translator
Configuration
Environment Variables
AWS_REGION
: AWS region for Bedrock service (default: us-east-1)AWS_PROFILE
: AWS profile to use (default: default)DEFAULT_TARGET_LANGUAGE
: Default target language for translation (default: ko)BEDROCK_MODEL_ID
: Bedrock model ID for translation (default: us.anthropic.claude-3-7-sonnet-20250219-v1:0)MAX_TOKENS
: Maximum tokens for translation requests (default: 4000)TEMPERATURE
: Temperature setting for AI model (default: 0.1)ENABLE_POLISHING
: Enable translation polishing (default: true)BATCH_SIZE
: Number of texts to process in a batch (default: 20)CONTEXT_THRESHOLD
: Number of texts to trigger context-aware translation (default: 5)DEBUG
: Enable debug logging (default: false)
Supported Languages
The service supports translation between major languages including:
- English (en)
- Korean (ko)
- Japanese (ja)
- Chinese Simplified (zh)
- Chinese Traditional (zh-tw)
- Spanish (es)
- French (fr)
- German (de)
- Italian (it)
- Portuguese (pt)
- Russian (ru)
- Arabic (ar)
- Hindi (hi)
- And many more...
Troubleshooting
Common Issues
-
AWS Credentials Not Found:
- Ensure AWS credentials are properly configured
- Check AWS CLI configuration:
aws configure list
-
Bedrock Access Denied:
- Verify your AWS account has access to Bedrock
- Check if the specified model is available in your region
-
FastMCP Connection Issues:
- Verify the path in mcp.json is correct
- Check that Python and dependencies are properly installed
- Review logs in Q Developer for error messages
- Test the server:
uv run python server.py --mcp --test
-
PowerPoint File Issues:
- Ensure the input file is a valid PowerPoint (.pptx) file
- Check file permissions for both input and output paths
-
Module Import Errors:
- Use
uv run
to ensure proper virtual environment activation - Install dependencies:
uv sync
- Use
Debug Mode
Enable debug logging:
uv run python server.py --mcp --debug
Development
Project Structure
ppt-translator/
├── server.py # Main server entry point (standalone & MCP)
├── fastmcp_server.py # FastMCP server implementation
├── ppt_handler.py # PowerPoint processing logic
├── translation_engine.py # Translation service
├── bedrock_client.py # Amazon Bedrock client
├── config.py # Configuration management
├── dependencies.py # Dependency management
├── text_utils.py # Text processing utilities
├── prompts.py # Translation prompts
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration (uv)
└── imgs/ # Example images and screenshots
Using uv for Development
This project uses uv
for dependency management:
# Install dependencies
uv sync
# Run the server
uv run python server.py --mcp
# Run tests
uv run python server.py --mcp --test
# Add new dependencies
uv add package-name
# Update dependencies
uv sync --upgrade
License
This project is licensed under the MIT License - see the LICENSE file for details.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.