hy-mt
MCP server for the HY-MT translation model, allowing AI assistants to perform high-quality translations across 38 languages via the Model Context Protocol.
README
<p align="center"> <img src="imgs/hunyuanlogo.png" width="400"/> </p>
<p align="center"> <b>English</b> | <a href="README_CN.md">简体中文</a> | <a href="README_TW.md">繁體中文</a> | <a href="README_JP.md">日本語</a> </p>
<p align="center"> <a href="https://hub.docker.com/r/neosun/hy-mt"><img src="https://img.shields.io/docker/pulls/neosun/hy-mt?style=flat-square&logo=docker" alt="Docker Pulls"></a> <a href="https://github.com/neosun100/hy-mt/stargazers"><img src="https://img.shields.io/github/stars/neosun100/hy-mt?style=flat-square&logo=github" alt="Stars"></a> <a href="https://github.com/neosun100/hy-mt/blob/main/License.txt"><img src="https://img.shields.io/badge/license-Tencent_Hunyuan-blue?style=flat-square" alt="License"></a> <a href="https://huggingface.co/tencent/HY-MT1.5-1.8B"><img src="https://img.shields.io/badge/🤗-HuggingFace-yellow?style=flat-square" alt="HuggingFace"></a> </p>
HY-MT Translation Service
🚀 All-in-One Docker deployment for Tencent HunyuanMT 1.5 translation model with Web UI, REST API, and MCP Server support.
✨ Features
- 🌐 38 Languages Support - Chinese, English, Japanese, Korean, French, German, Spanish, and 31 more
- 🎨 Modern Web UI - Dark/Light theme toggle, drag & drop file upload, real-time progress display
- ⚡ Streaming Translation - Server-Sent Events (SSE) for real-time output, perfect for long texts
- 🔧 Full Parameter Control - Temperature, Top-P, Top-K, repetition penalty adjustable
- 📚 Terminology Intervention - Custom term mapping for domain-specific translations
- 🤖 MCP Server - Model Context Protocol support for AI assistants (Claude, etc.)
- 🐳 One-Click Deployment - All-in-One Docker image with all models pre-downloaded
- 🔄 Smart GPU Management - Auto GPU selection, idle timeout, memory release
- 🔀 Multi-Model Support - Switch between 4 models (1.8B/7B, base/FP8) via UI or API
🎯 Model Selection Guide
| Model | VRAM | Speed | Quality | Recommendation |
|---|---|---|---|---|
| HY-MT 7B | 16GB | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 🏆 Best Choice - Highest quality, fast speed |
| HY-MT 1.8B | 6GB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Good for limited VRAM |
| HY-MT 1.8B FP8 | 4GB | ⭐⭐⭐ | ⭐⭐⭐⭐ | For VRAM < 6GB |
| HY-MT 7B FP8 | 10GB | ⭐⭐ | ⭐⭐⭐⭐⭐ | 7B quality with less VRAM |
💡 Tip: If you have 16GB+ VRAM, use HY-MT 7B for best results. FP8 models save memory but are slower due to runtime decompression.
📸 Screenshot
<p align="center"> <img src="docs/images/ui-screenshot-v2.0.1.png" width="800"/> </p>
🚀 Quick Start
Docker Run (Recommended)
# One command to start (uses 7B model by default)
docker run -d --gpus all \
-p 8021:8021 \
-v ./models:/app/models \
--name hy-mt \
neosun/hy-mt:latest
# Access Web UI
open http://localhost:8021
The Docker image (~43GB) includes all 4 models pre-downloaded. No external downloads needed!
Docker Compose
Create docker-compose.yml:
services:
hy-mt:
image: neosun/hy-mt:latest
container_name: hy-mt
ports:
- "8021:8021"
environment:
- MODEL_NAME=tencent/HY-MT1.5-7B # Recommended for 16GB+ VRAM
- GPU_IDLE_TIMEOUT=300
- HF_ENDPOINT=https://huggingface.co # Use https://hf-mirror.com for China
volumes:
- ./models:/app/models
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
restart: unless-stopped
docker compose up -d
📋 Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| GPU | NVIDIA GPU with 6GB+ VRAM | 16GB+ VRAM (for 7B model) |
| CUDA | 11.8+ | 12.4+ |
| Docker | 20.10+ | 24.0+ |
| nvidia-docker | Required | - |
Verify GPU Support
# Check NVIDIA driver
nvidia-smi
# Check Docker GPU support
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
📊 Performance Benchmark
Tested on NVIDIA L40S GPU, translating English to Chinese:
| Model | Short (61 chars) | Medium (530 chars) | Long (1.8K chars) | Extra Long (4.2K chars) |
|---|---|---|---|---|
| HY-MT 7B | 0.4s | 4.4s | 17.7s | 43.0s |
| HY-MT 1.8B | 0.4s | 3.6s | 14.0s | 32.3s |
| HY-MT 1.8B FP8 | 1.1s | 10.8s | 38.1s | 92.9s |
| HY-MT 7B FP8 | 2.9s | 28.5s | 115.6s | 274.1s |
⚠️ Why are FP8 models slower?
This is counter-intuitive but technically correct:
| Comparison | Speed Change | Reason |
|---|---|---|
| 1.8B FP8 vs 1.8B | 2.7x slower | Runtime decompression overhead |
| 7B FP8 vs 7B | 6.4x slower | More parameters = more decompression |
FP8 quantization is designed to save VRAM, not to speed up inference. The model is stored in 8-bit format but needs to be decompressed to 16-bit for GPU computation at runtime. This decompression happens for every token generation.
When to use FP8:
- ✅ When VRAM is limited (< 16GB for 7B, < 6GB for 1.8B)
- ❌ Not for speed optimization
- ❌ Not for batch processing (speed loss accumulates)
See Benchmark Report for detailed analysis.
🔑 Key Optimization: Chunk Size
Critical finding: Smaller chunk size = Better translation quality
| Chunk Size | Quality | Notes |
|---|---|---|
| 500 chars | ❌ Poor | Mixed languages in output |
| 300 chars | ⚠️ Fair | Some untranslated residue |
| 150 chars | ✅ Excellent | Complete, accurate translation |
The service uses MAX_CHUNK_LENGTH=150 by default for optimal quality.
Why? HY-MT model tends to "slack off" on long inputs, only translating part of the content. Shorter chunks force the model to fully translate each segment.
See Optimization Guide for details.
⚙️ Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
PORT |
8021 | Service port |
MODEL_NAME |
tencent/HY-MT1.5-7B | HuggingFace model name |
MODEL_PATH |
./models | Local model cache path |
GPU_IDLE_TIMEOUT |
300 | Auto-release GPU after idle (seconds) |
NVIDIA_VISIBLE_DEVICES |
auto | GPU ID (empty = auto select) |
HF_ENDPOINT |
https://huggingface.co | HuggingFace mirror URL |
Using .env File
# Copy example config
cp .env.example .env
# Edit as needed
vim .env
📖 API Usage
Basic Translation
curl -X POST "http://localhost:8021/api/translate" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, how are you?",
"target_lang": "zh"
}'
Response:
{
"status": "success",
"result": "你好,你好吗?",
"elapsed_ms": 358,
"model": "tencent/HY-MT1.5-7B",
"chunks": 1
}
Streaming Translation (SSE)
curl -N "http://localhost:8021/api/translate" \
-H "Content-Type: application/json" \
-d '{
"text": "Long article to translate...",
"target_lang": "en",
"stream": true
}'
With Terminology Intervention
curl -X POST "http://localhost:8021/api/translate" \
-H "Content-Type: application/json" \
-d '{
"text": "Apple released iPhone 16",
"target_lang": "zh",
"terms": {"Apple": "苹果公司", "iPhone": "苹果手机"}
}'
Output: 苹果公司发布了苹果手机16
File Upload Translation
curl "http://localhost:8021/api/translate/file" \
-F "file=@document.txt" \
-F "target_lang=zh" \
-F "stream=true"
Switch Model
curl -X POST "http://localhost:8021/api/models/switch" \
-H "Content-Type: application/json" \
-d '{"model": "tencent/HY-MT1.5-1.8B"}'
📚 API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Web UI |
/api/translate |
POST | Translate text (supports streaming) |
/api/translate/file |
POST | Upload and translate file |
/api/translate/batch |
POST | Batch translation |
/api/translate/stream |
POST | Streaming translation (SSE) |
/api/languages |
GET | List supported languages |
/api/models |
GET | List available models |
/api/models/switch |
POST | Switch translation model |
/api/gpu/status |
GET | GPU status and memory info |
/api/gpu/offload |
POST | Release GPU memory |
/api/config |
GET | Service configuration |
/health |
GET | Health check |
/docs |
GET | Swagger API documentation |
🌍 Supported Languages
| Language | Code | Language | Code | Language | Code |
|---|---|---|---|---|---|
| Chinese | zh | English | en | Japanese | ja |
| Korean | ko | French | fr | German | de |
| Spanish | es | Portuguese | pt | Russian | ru |
| Arabic | ar | Thai | th | Vietnamese | vi |
| Italian | it | Dutch | nl | Polish | pl |
| Turkish | tr | Indonesian | id | Malay | ms |
| Hindi | hi | Traditional Chinese | zh-Hant | Cantonese | yue |
And 17 more languages. See /api/languages for full list.
🛠️ Tech Stack
- Model: Tencent HY-MT1.5 (1.8B & 7B)
- Backend: FastAPI + Uvicorn
- Frontend: Vanilla JS with Dark/Light Mode
- Container: NVIDIA CUDA 12.4 base image
- Streaming: Server-Sent Events (SSE)
- MCP: Model Context Protocol for AI integration
📁 Project Structure
hy-mt/
├── app_fastapi.py # Main FastAPI application
├── mcp_server.py # MCP Server for AI assistants
├── benchmark.py # Performance benchmark script
├── templates/
│ └── index.html # Web UI (Dark/Light theme)
├── docs/
│ ├── BENCHMARK_REPORT.md # Performance test report
│ ├── OPTIMIZATION_GUIDE.md # Long text optimization guide
│ └── QUICK_REFERENCE.md # API quick reference
├── Dockerfile # All-in-One Docker build
├── docker-compose.yml # Docker Compose config
├── start.sh # Quick start script
├── test_api.sh # API test script
└── .env.example # Environment config template
🔧 Advanced Usage
Manual Start (Development)
# Clone repository
git clone https://github.com/neosun100/hy-mt.git
cd hy-mt
# Install dependencies
pip install torch transformers accelerate fastapi uvicorn
# Run
python -m uvicorn app_fastapi:app --host 0.0.0.0 --port 8021
MCP Server Integration
For AI assistants like Claude Desktop, add to MCP config:
{
"mcpServers": {
"hy-mt": {
"command": "python",
"args": ["/path/to/hy-mt/mcp_server.py"],
"env": {
"HY_MT_API": "http://localhost:8021"
}
}
}
}
Available MCP tools:
translate- Translate textlist_languages- Get supported languageslist_models- Get available modelsswitch_model- Switch translation model
See MCP_GUIDE.md for details.
🐛 Troubleshooting
| Issue | Solution |
|---|---|
| Model download slow | Set HF_ENDPOINT=https://hf-mirror.com (China mirror) |
| GPU out of memory | Use quantized model: tencent/HY-MT1.5-1.8B-FP8 |
| Container won't start | Check nvidia-smi and nvidia-docker installation |
| Translation incomplete | Already optimized with chunk size 150 |
| Container shows unhealthy | Wait 1-2 minutes for model loading |
📝 Changelog
v2.0.1 (2026-01-03)
- 🏆 Default model changed to HY-MT 7B (best quality & speed)
- 🩺 Added Docker HEALTHCHECK for container health monitoring
- 📦 Container status now shows
(healthy)when ready
v2.0.0 (2026-01-03) - True All-in-One
- 🎯 All 4 models pre-downloaded in Docker image - No external downloads needed!
- 📦 Image size: ~43GB (includes all models)
- 🏆 Recommended: HY-MT 7B for best quality and speed
- 📊 Added performance benchmark report
- 🔧 Added
benchmark.pyfor reproducible testing
v1.2.0 (2026-01-03)
- 🔀 Multi-model support (4 models: 1.8B, 1.8B-FP8, 7B, 7B-FP8)
- 🔄 Model switching via UI and API
- 📝 MCP Server: added
list_modelsandswitch_modeltools - 🐛 Fixed model name display in translation response
v1.0.0 (2026-01-03)
- 🎉 Initial release
- ✨ All-in-One Docker image
- ⚡ Streaming translation with SSE
- 🎨 Dark/Light theme Web UI
- 🔧 Long text optimization (chunk size 150)
- 🤖 MCP Server support
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is based on Tencent HunyuanMT. See License.txt for details.
🙏 Acknowledgments
- Tencent Hunyuan - Original HY-MT model
- HuggingFace - Model hosting
⭐ Star History
📱 Follow Us
<p align="center"> <img src="https://img.aws.xin/uPic/扫码_搜索联合传播样式-标准色版.png" width="300"/> </p>
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.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
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.