MCP server for translating Sinhala/Singlish commands into English technical prompts
Project description
๐ฑ๐ฐ sinhala-mcp
๐ Sri Lanka's First AI-Powered MCP Server for Sinhala Developers
Break the language barrier. Code in your mother tongue.
A production-ready Model Context Protocol server that translates Sinhala/Singlish instructions into precise English technical specifications using Google Gemini AI.
โ ๏ธ Compatibility Notice
VS Code MCP Extension: This tool may experience compatibility issues with some VS Code MCP extensions due to model validation restrictions. We are actively working on improvements to enhance compatibility. For the best experience, consider using Claude Desktop or Claude Code CLI.
๐ Why sinhala-mcp?
As the first of its kind in Sri Lanka, sinhala-mcp empowers Sinhala-speaking developers to:
- ๐ฌ Code naturally in your preferred language (Sinhala or Singlish)
- ๐ฏ Get precise technical translations optimized for AI coding agents
- ๐ Boost productivity by removing language friction from development workflows
- ๐ฅ Stay ahead with cutting-edge AI integration via Google's Gemini
โจ Features
- ๐ Sinhala/Singlish Translation: Convert colloquial commands into structured English technical specifications
- ๐ง Context-Aware: Automatically infers technical context (e.g., "Login" โ "Authentication flow")
- ๐ Environment Variable Auth: Secure API key management via environment variables
- ๐ Production-Ready: Comprehensive error handling, retry logic, timeout protection, input validation, and health checks
- ๐ฆ MCP Compliant: Works with Claude Desktop, VS Code, Claude Code CLI, and other MCP-compatible tools
- ๐ฏ Latest AI: Uses Google GenAI SDK with Gemini models (supports 1.5-flash, 2.5-flash, 2.5-flash-lite, 2.5-pro)
๐ฆ Installation
pip install sinhala-mcp
Or with uv:
uv pip install sinhala-mcp
Manual Installation from Source
If you encounter issues with PyPI installation:
git clone https://github.com/Thamindu-Dev/sinhala-mcp.git
cd sinhala-mcp
pip install -e .
๐ Configuration
Step 1: Get a Google Gemini API Key
- Visit Google AI Studio
- Create a new API key
- Keep it secure - never commit it to version control
Step 2: Configure Your MCP Client
IMPORTANT: The server reads the API key from the GEMINI_API_KEY environment variable.
Method 1: Claude Desktop / Claude Code
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Roaming\Claude\claude_desktop_config.json
{
"mcpServers": {
"sinhala-mcp": {
"type": "stdio",
"command": "sinhala-mcp",
"args": [],
"env": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}
Optional: Override the default model by adding "GEMINI_MODEL": "gemini-2.5-flash-lite" to env.
Available models: gemini-2.5-flash (default), gemini-2.5-flash-lite, gemini-2.5-pro, gemini-1.5-flash
Method 2: VS Code MCP Extension
Create or update .vscode/settings.json:
{
"mcp.servers": {
"sinhala-mcp": {
"command": "sinhala-mcp",
"env": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}
For advanced configuration with model sampling, create .vscode/mcp.json:
{
"servers": {
"sinhala-mcp": {
"command": "uvx",
"args": ["sinhala-mcp"],
"env": {
"GEMINI_API_KEY": "${input:gemini_api_key}",
"GEMINI_MODEL": "${input:gemini_model}"
},
"type": "stdio"
}
},
"inputs": [
{
"id": "gemini_api_key",
"type": "promptString",
"description": "Google Gemini API Key",
"default": ""
},
{
"id": "gemini_model",
"type": "promptString",
"description": "Gemini Model (optional)",
"default": "gemini-2.5-flash"
}
]
}
Then update .vscode/settings.json for model sampling:
{
"chat.mcp.serverSampling": {
"sinhala-mcp/.vscode/mcp.json: sinhala-mcp": {
"allowedModels": [
"copilot/auto",
"gemini-1.5-flash",
"gemini-2.5-flash",
"gemini-2.5-flash-lite",
"gemini-2.5-pro"
]
}
}
}
Method 3: Command-Line Installation
Quick setup via command line:
claude mcp add sinhala-mcp -e GEMINI_API_KEY=your-key -- sinhala-mcp
Or with model override:
claude mcp add sinhala-mcp -e GEMINI_API_KEY=your-key -e GEMINI_MODEL=gemini-2.5-flash-lite -- sinhala-mcp
Method 4: Project-Specific Configuration
For project-specific MCP server configuration, add to your Claude config:
{
"M:/Projects/your-project": {
"allowedTools": [],
"mcpContextUris": [],
"mcpServers": {
"sinhala-mcp": {
"type": "stdio",
"command": "sinhala-mcp",
"args": [],
"env": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}
}
Replace M:/Projects/your-project with your actual project path.
๐ ๏ธ Available Tools
translate_sinhala_instruction
Translates Sinhala or Singlish instructions into precise English technical prompts.
Usage:
Use translate_sinhala_instruction to translate "mata login form ekak hadanna one"
Parameters:
instruction(string, required): The Sinhala or Singlish instruction (max 5000 characters)
Example Output:
Original (Sinhala/Singlish):
mata login page ekak hadanna one
Translated (English Technical Prompt):
Implement a user authentication system with login functionality including:
- Username/email and password input fields
- Form validation for credentials
- Authentication endpoint integration
- Session management after successful login
- Error handling for failed authentication attempts
health_check
Check if the MCP server and Gemini API connection are working.
Usage:
Run health_check
๐ก Usage Examples
Web Development
Input: "Mata dashboard ekak denna user stats display karanna"
Output:
Create a user analytics dashboard with:
- Real-time user statistics display
- Data visualization charts
- Filtering and search capabilities
- Responsive layout for mobile/desktop
- Authentication-protected access
Backend Development
Input: "Database eka connect karanna API endpoint ekak hadala denna"
Output:
Implement database integration with REST API:
- Set up database connection pool
- Create CRUD endpoints for data access
- Implement proper error handling
- Add data validation and sanitization
- Include authentication/authorization middleware
Frontend Features
Input: "Profile page eke photo upload eka hadanna"
Output:
Implement profile photo upload feature:
- File upload input with image type validation
- Client-side image preview
- Size and format restrictions
- Upload progress indicator
- Server-side file storage integration
- Error handling for upload failures
๐๏ธ Development
# Clone the repository
git clone https://github.com/Thamindu-Dev/sinhala-mcp.git
cd sinhala-mcp
# Install in editable mode
pip install -e .
# Test server
python test_simple.py
Project Structure
sinhala-mcp/
โโโ src/
โ โโโ sinhala_mcp/
โ โโโ __init__.py
โ โโโ server.py # Main MCP server implementation
โโโ pyproject.toml # Package configuration
โโโ README.md
โโโ LICENSE
๐ Security
- โ API keys stored in environment variables only
- โ No local file storage of credentials
- โ Input validation and sanitization
- โ Protection against injection attacks
- โ Rate limit handling
- โ Open source - fully auditable
๐ Technical Specifications
- Build Backend: hatchling
- Python Version: 3.10+ (tested on 3.10-3.13)
- Dependencies:
mcp>=0.9.0,google-genai>=1.0.0,google-api-core>=1.0.0 - Default Model:
gemini-2.5-flash - Supported Models:
gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.5-pro,gemini-1.5-flash - Max Instruction Length: 5000 characters
- API Timeout: 30 seconds
- Retry Logic: 2 retries with exponential backoff
๐ง Troubleshooting
"GEMINI_API_KEY not found" Error
- Ensure the key is added to your MCP client configuration
- Restart your MCP client after updating configuration
VS Code Compatibility Issues
- See compatibility notice above - Some VS Code MCP extensions have model validation restrictions
- Workaround: Set
GEMINI_MODEL=gemini-1.5-flashin your configuration for better compatibility - Important: After changing
GEMINI_MODEL, restart your MCP client for changes to take effect - Alternative: Use Claude Desktop or Claude Code CLI for better compatibility
- Future updates will improve VS Code extension compatibility
Model Changes Not Taking Effect
- Issue: Setting
GEMINI_MODELdoesn't change the model being used - Solution: Restart your MCP client (Claude Desktop, VS Code) after modifying environment variables
- Verify: Check MCP server logs for "Using Gemini model: ..." message on startup
Translation Issues
- The model may block content due to safety settings
- Try rephrasing the instruction
๐ Support
- Report Issues: GitHub Issues
- MCP Protocol: modelcontextprotocol.io
๐ค Contributing
Contributions are welcome! Fork the repository, create a feature branch, and submit a Pull Request.
๐ License
MIT License - see LICENSE for details.
๐จโ๐ป About the Developer
sinhala-mcp was created by Thamindu Hatharasinghe โ a passionate Sri Lankan developer dedicated to breaking language barriers in technology.
As Sri Lanka's first Sinhala-to-English technical translation tool for developers, this project represents a milestone in making AI-assisted development accessible to Sinhala-speaking developers worldwide.
- ๐ Portfolio: www.thamidu.me
- ๐ GitHub: Thamindu-Dev
Made with โค๏ธ in Sri Lanka, for Sinhala developers worldwide
โญ If you find this project helpful, please consider giving it a star on GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sinhala_mcp-0.1.8.tar.gz.
File metadata
- Download URL: sinhala_mcp-0.1.8.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21d634713ed90eb6f05a31620d95d5ef01abd3d0251ebd69999c9c88cbb37ee9
|
|
| MD5 |
a694a84e48db5fa66d3a93727aad4ff2
|
|
| BLAKE2b-256 |
4625bea10a3c5396660802903657aefaf59d23caf1d7bf7841b1423029b4752d
|
File details
Details for the file sinhala_mcp-0.1.8-py3-none-any.whl.
File metadata
- Download URL: sinhala_mcp-0.1.8-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
608f50eeb80808a262a00019650fcaadc0a6019b8db54351c2a142c34901b435
|
|
| MD5 |
91f5a6a46737871cccf6c42f7087392b
|
|
| BLAKE2b-256 |
dfc629ea0b4ae37326101dd8eb5326e52f3439d6ba523bd0676db4a560695cd3
|