Skip to main content
Glama
FEDOR-help

keyboard-layout-mcp

by FEDOR-help

keyboard-layout-mcp

MCP-сервер распознавания и перевода раскладок клавиатуры. Понимает любую из раскладок en (QWERTY), ru (ЙЦУКЕН), de (QWERTZ), fr (AZERTY), исправляет текст, набранный «не в той» раскладке, и вдобавок умеет предиктивный ввод T9 — цифры → слова, как на старом смартфоне.

Возможности

  • convert — перевод текста между раскладками: convert("руддщ", "ru", "en")hello.

  • fix — автоисправление «съехавшей» раскладки: fix("ghbdtn")привет.

  • detect — определение раскладки текста с ранжированным списком кандидатов.

  • t9 — предиктивный ввод: t9("43556")hello, t9("564236")привет.

  • t9_a2z — буквы на цифровой клавише (2-9, 0 = пробел).

Related MCP server: Document Reader MCP Server

Установка

Требуется Python 3.14+ и пакет mcp (pip install "mcp>=2.2").

git clone https://github.com/FEDOR-help/keyboard-layout-mcp.git
cd keyboard-layout-mcp
pip install -r requirements.txt
python server/main.py

Подключение к opencode (opencode.jsonc)

"mcp": {
  "keyboard-layout-mcp": {
    "type": "local",
    "command": ["python", "server/main.py"],
    "environment": { "PYTHONUTF8": "1", "PYTHONIOENCODING": "utf-8" }
  }
}

После перезапуска инструменты доступны как keyboard-layout-mcp_*.

Инструменты

Инструмент

Назначение

server_info

Информация о сервере и раскладках.

list_layouts

Список раскладок: en, ru, de, fr.

convert_layout

Перевод text из from_layout в to_layout.

detect

Определение раскладки текста.

fix

Автоисправление «съехавшей» раскладки.

t9

Подбор слов по цифрам (lang = en | ru | auto).

t9_a2z

Буквы на цифровой клавише.

Все инструменты — read-only, с аннотациями MCP (readOnlyHint, idempotentHint, openWorldHint).

Модель данных

  • server/main.py — раскладки (LAYOUTS), частоты букв (FREQ), оценка «естественности» текста (частоты + доля гласных + бонус за длину).

  • server/t9_data.py — цифровые раскладки T9 (T9_EN, T9_RU) и частотные словари (WORDS_EN, WORDS_RU). При импорте строится индекс T9_INDEX[lang][код] -> [слова].

Словарь легко расширяется: добавьте слово в конец WORDS_EN / WORDS_RU.

Проверка

import asyncio, sys
sys.path.insert(0, ".")
from server import main

async def run():
    res = await main.mcp.call_tool("t9", {"sequence": "43556", "lang": "auto"})
    print("".join(c.text or "" for c in res.content if hasattr(c, "text")))

asyncio.run(run())

Лицензия

MIT — см. LICENSE.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers