Skip to content

Conversation

@goviha01
Copy link

@goviha01 goviha01 commented Nov 9, 2025

Summary

Added new Amazon Translate MCP Server to enable AI applications to interact with Amazon Translate services through the Model Context Protocol.

Changes

  • Complete MCP server implementation with 19 tools for Amazon Translate
  • Support for real-time translation, batch processing, and terminology management
  • Intelligent workflow orchestration for autonomous translation tasks
  • Comprehensive documentation and test coverage

User experience

Key capabilities available:

  • Text translation across 75 languages with custom terminology
  • Language detection with confidence scoring
  • End to End Managed Batch translation for large document collections via S3
  • Custom terminology management for domain-specific translations
  • Quality validation and translation assessment
  • Intelligent workflows that automate multi-step translation processes
  • Error analysis for failed translation jobs

Checklist

If your change doesn't seem to apply, please leave them unchecked.

  • [X ] I have reviewed the contributing guidelines
  • [ X] I have performed a self-review of this change
  • [X ] Changes have been tested
  • [ X] Changes are documented

Is this a breaking change? (Y/N)

RFC issue number: #1450

Checklist:

  • [ NA] Migration process documented
  • [ NA] Implement warnings (if it can live side by side)

Acknowledgment

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.

# Use server-specified retry_after with some jitter
delay = float(retry_after)
if self.jitter:
delay += random.uniform(0, min(delay * 0.1, 5.0))

Check notice

Code scanning / Bandit

Standard pseudo-random generators are not suitable for security/cryptographic purposes. Note

Standard pseudo-random generators are not suitable for security/cryptographic purposes.

# Add jitter to prevent thundering herd
if self.jitter:
delay += random.uniform(0, delay * 0.1)

Check notice

Code scanning / Bandit

Standard pseudo-random generators are not suitable for security/cryptographic purposes. Note

Standard pseudo-random generators are not suitable for security/cryptographic purposes.
# Add jitter to avoid thundering herd
if self._jitter:
jitter_amount = delay * 0.1 # 10% jitter
delay += random.uniform(-jitter_amount, jitter_amount)

Check notice

Code scanning / Bandit

Standard pseudo-random generators are not suitable for security/cryptographic purposes. Note

Standard pseudo-random generators are not suitable for security/cryptographic purposes.
@codecov
Copy link

codecov bot commented Nov 9, 2025

Codecov Report

❌ Patch coverage is 90.71219% with 253 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.37%. Comparing base (a697fd8) to head (4249ca9).

Files with missing lines Patch % Lines
...rver/awslabs/amazon_translate_mcp_server/server.py 87.11% 44 Missing and 18 partials ⚠️
...amazon_translate_mcp_server/terminology_manager.py 79.53% 44 Missing and 17 partials ⚠️
...slabs/amazon_translate_mcp_server/batch_manager.py 86.38% 17 Missing and 12 partials ⚠️
...azon_translate_mcp_server/workflow_orchestrator.py 91.97% 17 Missing and 9 partials ⚠️
.../awslabs/amazon_translate_mcp_server/exceptions.py 87.58% 9 Missing and 9 partials ⚠️
...amazon_translate_mcp_server/language_operations.py 88.81% 13 Missing and 5 partials ⚠️
.../awslabs/amazon_translate_mcp_server/aws_client.py 92.45% 6 Missing and 6 partials ⚠️
...rver/awslabs/amazon_translate_mcp_server/config.py 95.15% 6 Missing and 2 partials ⚠️
...slabs/amazon_translate_mcp_server/retry_handler.py 94.69% 4 Missing and 2 partials ⚠️
...amazon_translate_mcp_server/translation_service.py 97.12% 3 Missing and 3 partials ⚠️
... and 2 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1698      +/-   ##
==========================================
+ Coverage   90.36%   90.37%   +0.01%     
==========================================
  Files         810      824      +14     
  Lines       62140    64864    +2724     
  Branches    10042    10496     +454     
==========================================
+ Hits        56150    58618    +2468     
- Misses       3737     3903     +166     
- Partials     2253     2343      +90     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

except ImportError:
# Fallback to standard library with security warning
import warnings
import xml.etree.ElementTree as ET

Check notice

Code scanning / Bandit

Using xml.etree.ElementTree to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called. Note

Using xml.etree.ElementTree to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.
Comment on lines +348 to +352
logger.debug(
'Listed %d translation jobs, next_token: %s',
len(job_summaries),
'present' if result['next_token'] else 'none',
)

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: python.lang.security.audit.logging.logger-credential-leak.python-logger-credential-disclosure Warning

Detected a python logger call with a potential hardcoded secret 'Listed %d translation jobs, next_token: %s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
@scottschreckengaust scottschreckengaust moved this from To triage to In progress in awslabs/mcp Project Nov 12, 2025
@scottschreckengaust scottschreckengaust added hold-merging Signals to hold the PR from merging new mcp server A new MCP server ideally linked to an issue labels Nov 12, 2025
@scottschreckengaust scottschreckengaust self-assigned this Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hold-merging Signals to hold the PR from merging new mcp server A new MCP server ideally linked to an issue

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants