Skip to main content

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.

PyPI Version Python Version License MCP Made in Sri Lanka

A production-ready Model Context Protocol server that translates Sinhala/Singlish instructions into precise English technical specifications using Google Gemini AI.


๐ŸŒŸ 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 2.5 Flash Lite

โœจ 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 and logging
    • Retry logic for API failures
    • Timeout protection (30s default)
    • Input validation and sanitization
    • Health check endpoint for monitoring
    • Rate limit handling
  • ๐Ÿ“ฆ MCP Compliant: Works with Claude Desktop, VS Code MCP client, and other MCP-compatible tools
  • ๐ŸŽฏ Latest AI: Uses Google GenAI SDK with Gemini 2.5 Flash Lite (optimized for high throughput)

๐Ÿ“ฆ Installation

Quick Install with pip (Recommended)

pip install sinhala-mcp

Quick Install with uv

uv pip install sinhala-mcp

Using uvx (Run without installing)

# Just run it directly - no installation needed!
uvx sinhala-mcp

Prerequisites for uvx

If you want to use uvx to run without installing, you need uv installed:

Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Manual Installation from Source

If you encounter issues with PyPI installation (especially "model not found" errors in VS Code), install directly from source:

# Clone the repository
git clone https://github.com/Thamindu-Dev/sinhala-mcp.git
cd sinhala-mcp

# Install in editable mode
pip install -e .

# Or using uv
uv pip install -e .

Benefits of manual installation:

  • โœ… Bypasses PyPI validation issues
  • โœ… Always uses the latest code from the repository
  • โœ… No waiting for PyPI updates
  • โœ… Works with VS Code MCP extension

Command-Line Installation for CLI Tools

For Claude Code CLI:

# Option 1: Install from PyPI
pip install sinhala-mcp
claude mcp add sinhala-mcp -e GEMINI_API_KEY=your-key -- sinhala-mcp

# Option 2: Manual installation from source
cd sinhala-mcp
pip install -e .
claude mcp add sinhala-mcp -e GEMINI_API_KEY=your-key -- sinhala-mcp

# Option 3: Use uvx (no installation needed)
claude mcp add sinhala-mcp -e GEMINI_API_KEY=your-key -- uvx sinhala-mcp

For other MCP-compatible CLI tools: Replace claude mcp add with the appropriate command for your CLI tool.

๐Ÿ”‘ Configuration

Step 1: Get a Google Gemini API Key

  1. Visit Google AI Studio
  2. Create a new API key
  3. 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. Do not use the old set_gemini_key tool - it has been removed for security and store compatibility.

Claude Desktop Configuration

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Roaming\claude-code\mcp_settings.json or %APPDATA%\claude-code\claude_desktop_config.json

{
  "mcpServers": {
    "sinhala-mcp": {
      "command": "sinhala-mcp",
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Optional - Override the default Gemini model:

{
  "mcpServers": {
    "sinhala-mcp": {
      "command": "sinhala-mcp",
      "env": {
        "GEMINI_API_KEY": "your-api-key-here",
        "GEMINI_MODEL": "gemini-2.5-flash-lite"
      }
    }
  }
}

Note: If you installed with pip, use "command": "sinhala-mcp". If using uvx without installing, use "command": "uvx", "args": ["sinhala-mcp"].

Available models: gemini-2.5-flash (default), gemini-2.5-flash-lite, gemini-2.5-pro, gemini-1.5-flash

VS Code MCP Extension

{
  "mcp.servers": {
    "sinhala-mcp": {
      "command": "sinhala-mcp",
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Optional - Override the default Gemini model:

{
  "mcp.servers": {
    "sinhala-mcp": {
      "command": "sinhala-mcp",
      "env": {
        "GEMINI_API_KEY": "your-api-key-here",
        "GEMINI_MODEL": "gemini-2.5-flash-lite"
      }
    }
  }
}

Note: If you installed with pip, use "command": "sinhala-mcp". If using uvx without installing, use "command": "uvx", "args": ["sinhala-mcp"].

Available models: gemini-2.5-flash (default), gemini-2.5-flash-lite, gemini-2.5-pro, gemini-1.5-flash

โš ๏ธ Important - VS Code Model Sampling Configuration:

VS Code requires you to configure allowed models before installing the MCP server. Follow these steps in order:

Step 1 - Setup VS Code Configuration (Choose one option):

Option 1 - Automatic Setup (Recommended):

# Run this in your project root BEFORE installing MCP:
cd your-project-folder
python setup_vscode.py

This script automatically creates .vscode/settings.json with the required model sampling configuration.

Option 2 - Manual Setup: Create .vscode/settings.json in your project root with:

{
    "chat.mcp.serverSampling": {
        "sinhala-mcp/.vscode/mcp.json: sinhala-mcp": {
            "allowedModels": [
                "copilot/auto",
                "gemini-2.5-flash",
                "gemini-2.5-flash-lite",
                "gemini-2.5-pro",
                "gemini-1.5-flash"
            ]
        }
    }
}

Claude Code CLI

The Claude Code CLI reads the configuration from mcp_settings.json:

Windows: %APPDATA%\Roaming\claude-code\mcp_settings.json macOS / Linux: ~/.config/claude-code/mcp_settings.json

{
  "mcpServers": {
    "sinhala-mcp": {
      "command": "python",
      "args": ["-m", "sinhala_mcp.server"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Or if you installed the package:

{
  "mcpServers": {
    "sinhala-mcp": {
      "command": "sinhala-mcp",
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Optional - Override the default Gemini model:

{
  "mcpServers": {
    "sinhala-mcp": {
      "command": "python",
      "args": ["-m", "sinhala_mcp.server"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here",
        "GEMINI_MODEL": "gemini-2.5-flash-lite"
      }
    }
  }
}

After updating the configuration, restart the Claude Code CLI to load the MCP server.

Command Line / Development

# Linux/macOS
export GEMINI_API_KEY="your-api-key-here"

# Windows CMD
set GEMINI_API_KEY=your-api-key-here

# Windows PowerShell
$env:GEMINI_API_KEY="your-api-key-here"

Optional - Override the default Gemini model:

# Linux/macOS
export GEMINI_MODEL="gemini-2.5-flash-lite"

# Windows CMD
set GEMINI_MODEL=gemini-2.5-flash-lite

# Windows PowerShell
$env:GEMINI_MODEL="gemini-2.5-flash-lite"

Available models:

  • gemini-1.5-flash (default) - Best VS Code compatibility
  • gemini-2.5-flash-lite - Highest rate limits, most cost-efficient (override with GEMINI_MODEL)
  • gemini-2.5-flash - Best price-performance (override with GEMINI_MODEL)
  • gemini-2.5-pro - Advanced thinking model (override with GEMINI_MODEL)

Note: VS Code users can override to newer models by setting GEMINI_MODEL environment variable.

๐Ÿ› ๏ธ Available Tools

How to Use

This MCP server translates your Sinhala/Singlish instructions into English technical prompts. You need to explicitly request the translation tool.

To translate:

  • Say: "Use translate_sinhala_instruction to translate: [your Sinhala text]"
  • Or: "Translate using sinhala-mcp: [your instruction]"
  • Or: "MCP: translate_sinhala_instruction [your text]"

Example:

You: Use translate_sinhala_instruction to translate "mata login form ekak hadanna one"

Claude: [Original: mama login ekak hadanna one
         Translated: Implement a user authentication system with login functionality...]

1. translate_sinhala_instruction

Translates Sinhala or Singlish instructions into precise English technical prompts.

Parameters:

  • instruction (string, required): The Sinhala or Singlish instruction to translate (max 5000 characters)

Example:

Translate "mata login page ekak hadanna one" using translate_sinhala_instruction

Output:

Original (Sinhala/Singlish):
mama login 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

2. health_check

Check if the MCP server and Gemini API connection are working properly.

Parameters: None

Example:

Run health_check

Output:

Health Check: PASSED
Server: sinhala-mcp v0.1.0
API Connection: Active
Timestamp: 2025-01-26T12:00:00.000000

๐Ÿ’ก Usage Examples

Example 1: Web Development

Input (Sinhala):

"Mata dashboard ekak denna user stats display karanna example ekka"

Translated 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

Example 2: Backend Development

Input (Sinhala):

"Database eka connect karanna API endpoint ekak hadala denna"

Translated 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

Example 3: Frontend Features

Input (Sinhala):

"Profile page eke photo upload eka hadanna"

Translated 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

๐ŸŽฏ Real-World Example (Actual Output)

Here's an actual translation from the tool in action:

Input (Sinhala):

"mata dn ona me tool eka pypi ekata dala uvx wage commands walin quick install karanna puluwn wenna hadanna. wade karala dennako. readme.md ekath update karanna."

Translated Output:

1.  **Package for PyPI:**
    *   Structure the project as a Python package with a `setup.py` or `pyproject.toml` file.
    *   Define package metadata including name, version, author, description, and dependencies.
    *   Ensure the package is installable via `pip install <package-name>`.
2.  **Command-Line Interface (CLI) Integration:**
    *   Implement a CLI entry point using a library like `click` or `argparse`.
    *   Register the CLI command (e.g., `uvx`) in the package setup to be available after installation.
    *   Define subcommands and arguments for the CLI based on the tool's functionality.
3.  **README.md Update:**
    *   Add a comprehensive "Installation" section detailing how to install the package using pip.
    *   Include instructions on how to run the CLI commands (e.g., `uvx <command> [options]`).
    *   Update other relevant sections (e.g., Usage, Features) to reflect the CLI integration.
4.  **Testing:**
    *   Develop unit and integration tests for the CLI functionality.
    *   Ensure tests cover installation, command execution, and argument parsing.
5.  **Deployment to PyPI:**
    *   Build the package distribution files (sdist and wheel).
    *   Upload the package to the Python Package Index (PyPI) using `twine`.

This real example demonstrates how sinhala-mcp transformed a complex Sinhala instruction into a structured, actionable technical specification that was directly used to package this project for PyPI distribution!

๐Ÿ—๏ธ Development

Setup Development Environment

# Clone the repository
git clone https://github.com/Thamindu-Dev/sinhala-mcp.git
cd sinhala-mcp

# Install dependencies
pip install -e .

# Or using uv
uv pip install -e .

Running Tests

# Test server import
python test_simple.py

# Run with verbose logging
LOGLEVEL=DEBUG python -m sinhala_mcp.server

Project Structure

sinhala-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ sinhala_mcp/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ””โ”€โ”€ server.py          # Main MCP server implementation
โ”œโ”€โ”€ pyproject.toml              # Package configuration
โ”œโ”€โ”€ smithery.yaml              # Store publishing configuration
โ”œโ”€โ”€ README.md                  # This file
โ””โ”€โ”€ LICENSE                    # MIT 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
  • Package Layout: Modern src/ layout
  • Python Version: 3.10+ (tested on 3.10-3.13)
  • Dependencies:
    • mcp>=0.9.0 - Model Context Protocol SDK
    • google-genai>=1.0.0 - Official Google GenAI SDK (GA)
  • AI Model: Gemini 1.5 Flash (default, VS Code compatible) - Supports all 2.x models via GEMINI_MODEL override
  • Max Instruction Length: 5000 characters
  • API Timeout: 30 seconds
  • Retry Logic: 2 retries with exponential backoff

๐Ÿš€ Production Deployment

The server is production-ready with:

  • Structured Logging: Timestamped logs for debugging
  • Error Handling: Graceful failure with user-friendly messages
  • Health Checks: Monitor API connectivity
  • Timeout Protection: Prevents hanging requests
  • Retry Logic: Handles transient API failures
  • Input Validation: Prevents abuse and injection attacks

๐Ÿ“š Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ User (Sinhala)  โ”‚โ”€โ”€โ”€โ”€โ”€>โ”‚  MCP Server      โ”‚โ”€โ”€โ”€โ”€โ”€>โ”‚ Google Gemini   โ”‚
โ”‚ "mama login eka โ”‚      โ”‚  (translate_     โ”‚      โ”‚ AI API          โ”‚
โ”‚  karanna one"   โ”‚      โ”‚   sinhala_       โ”‚      โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                  โ”‚
                                  โ–ผ
                         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                         โ”‚ English Output   โ”‚
                         โ”‚ "Implement user  โ”‚
                         โ”‚  authentication โ”‚
                         โ”‚  with login form"โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿค Contributing

Contributions are welcome! Please feel free to:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a Pull Request

๐Ÿ“ License

MIT License - see LICENSE for details.

๐Ÿ”ง Troubleshooting

Common Issues

  1. "GEMINI_API_KEY not found" Error

    • Ensure you have added the key to your configuration file (Claude Desktop or VS Code).
    • If using the terminal, ensure you ran export GEMINI_API_KEY=... (Mac/Linux) or $env:GEMINI_API_KEY=... (Windows).
    • Restart your MCP client after changing the configuration.
  2. Connection Refused / Server Error

    • Check if you have the latest version installed: uv tool upgrade sinhala-mcp
    • Verify your internet connection (Google Gemini API requires internet access).
  3. Translation is empty or incorrect

    • The model might have blocked the content due to safety settings. Try rephrasing the instruction.
  4. "Model not supported" or "Model not found" Error in VS Code

    • Cause: VS Code's MCP extension validates model names and may reject newer models.
    • Solution 1 - Manual Installation: Install from source instead of PyPI:
      git clone https://github.com/Thamindu-Dev/sinhala-mcp.git
      cd sinhala-mcp
      pip install -e .
      
    • Solution 2 - Use Compatible Configuration: Ensure your VS Code settings.json uses the installed command:
      {
        "mcp.servers": {
          "sinhala-mcp": {
            "command": "sinhala-mcp",
            "env": {
              "GEMINI_API_KEY": "your-api-key-here",
              "GEMINI_MODEL": "gemini-1.5-flash"
            }
          }
        }
      }
      
    • Solution 3 - Override to Newer Model: After successful installation, add GEMINI_MODEL environment variable to use newer models like gemini-2.5-flash-lite for better rate limits.

๐Ÿ†˜ Support

๐Ÿ™ Acknowledgments

Built with:

๐Ÿ‘จโ€๐Ÿ’ป 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.


Made with โค๏ธ in Sri Lanka, for Sinhala developers worldwide

โญ If you find this project helpful, please consider giving it a star on GitHub!

For more information about MCP, visit modelcontextprotocol.io.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sinhala_mcp-0.1.6.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sinhala_mcp-0.1.6-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file sinhala_mcp-0.1.6.tar.gz.

File metadata

  • Download URL: sinhala_mcp-0.1.6.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for sinhala_mcp-0.1.6.tar.gz
Algorithm Hash digest
SHA256 82da4a50900b05523d2a8469170866179b4339697bf2644ea130a5462f37b376
MD5 cb629c94283f017ed69f1eee84094e59
BLAKE2b-256 b1d5a78e0c65da03cfd02cc8637cfff948b0f16c1ac3ef3ef6046fe9e4bc1993

See more details on using hashes here.

File details

Details for the file sinhala_mcp-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: sinhala_mcp-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for sinhala_mcp-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 09447112ab30ef2dbd605549497c74eed508483b8faaef36ad73408b95a63fce
MD5 8d089dafdf037fff256f841b1382a279
BLAKE2b-256 e870df0170a9f90e5e33d7644cb621759ea5f5996b045801322e30e9ae125a0c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page