Skip to main content
Glama
languages.pyโ€ข5.34 kB
"""Language management tools for POEditor MCP server.""" from typing import Any, Dict, List from mcp.types import Tool, TextContent, INVALID_PARAMS from mcp import McpError from ..poeditor_client import POEditorClient, POEditorError def get_language_tools() -> List[Tool]: """Get all language-related tools.""" return [ Tool( name="list_languages", description="List languages in a project", inputSchema={ "type": "object", "properties": { "project_id": { "type": "string", "description": "Project ID" } }, "required": ["project_id"] } ), Tool( name="add_language", description="Add a language to a project", inputSchema={ "type": "object", "properties": { "project_id": { "type": "string", "description": "Project ID" }, "language_code": { "type": "string", "description": "Language code (e.g., 'en', 'es', 'fr')" } }, "required": ["project_id", "language_code"] } ), Tool( name="delete_language", description="Delete a language from a project", inputSchema={ "type": "object", "properties": { "project_id": { "type": "string", "description": "Project ID" }, "language_code": { "type": "string", "description": "Language code" } }, "required": ["project_id", "language_code"] } ) ] async def handle_list_languages( client: POEditorClient, arguments: Dict[str, Any] ) -> List[TextContent]: """Handle list_languages tool call.""" project_id = arguments.get("project_id") if not project_id: raise McpError(INVALID_PARAMS, "project_id is required") try: languages = await client.list_languages(project_id) if not languages: return [TextContent( type="text", text=f"No languages found in project {project_id}." )] output = f"**Languages in Project {project_id}:**\n\n" for lang in languages: name = lang.get('name', 'Unknown') code = lang.get('code', 'unknown') percentage = lang.get('percentage', 0) output += f"- **{name}** ({code}): {percentage}% translated\n" return [TextContent(type="text", text=output)] except POEditorError as e: raise McpError(INVALID_PARAMS, f"POEditor API error: {e}") except Exception as e: raise McpError(INVALID_PARAMS, f"Unexpected error: {e}") async def handle_add_language( client: POEditorClient, arguments: Dict[str, Any] ) -> List[TextContent]: """Handle add_language tool call.""" project_id = arguments.get("project_id") language_code = arguments.get("language_code") if not project_id: raise McpError(INVALID_PARAMS, "project_id is required") if not language_code: raise McpError(INVALID_PARAMS, "language_code is required") try: result = await client.add_language(project_id, language_code) output = f"**Language Added Successfully!**\n\n" output += f"- **Project ID:** {project_id}\n" output += f"- **Language Code:** {language_code}\n" return [TextContent(type="text", text=output)] except POEditorError as e: raise McpError(INVALID_PARAMS, f"POEditor API error: {e}") except Exception as e: raise McpError(INVALID_PARAMS, f"Unexpected error: {e}") async def handle_delete_language( client: POEditorClient, arguments: Dict[str, Any] ) -> List[TextContent]: """Handle delete_language tool call.""" project_id = arguments.get("project_id") language_code = arguments.get("language_code") if not project_id: raise McpError(INVALID_PARAMS, "project_id is required") if not language_code: raise McpError(INVALID_PARAMS, "language_code is required") try: success = await client.delete_language(project_id, language_code) if success: output = f"**Language {language_code} deleted successfully from project {project_id}!**" else: output = f"**Failed to delete language {language_code} from project {project_id}**" return [TextContent(type="text", text=output)] except POEditorError as e: raise McpError(INVALID_PARAMS, f"POEditor API error: {e}") except Exception as e: raise McpError(INVALID_PARAMS, f"Unexpected error: {e}") # Tool handler mapping LANGUAGE_HANDLERS = { "list_languages": handle_list_languages, "add_language": handle_add_language, "delete_language": handle_delete_language, }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/r-pedraza/poeditor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server