shaxzodbek-uzb/uzbek-mcp 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

shaxzodbek-uzb/uzbek-mcp

Composer 安装命令:

composer create-project shaxzodbek-uzb/uzbek-mcp

包简介

The Uzbek language MCP server: transliteration (Latin ↔ Cyrillic), number-to-words, text normalization, slugify, plus live Uzbekistan data (CBU currency rates, public holidays, weather). Built on Laravel MCP.

README 文档

README

The first Model Context Protocol server for the Uzbek language — give Claude (and any MCP client) native Uzbek text abilities, plus a few handy live Uzbekistan data feeds.

CI License: MIT PHP 8.3+ Built with Laravel MCP

LLMs are notoriously shaky at Uzbek — they mangle Latin ↔ Cyrillic transliteration, get the / apostrophes wrong, and can't spell out a number in Uzbek for an invoice. Uzbek MCP gives them deterministic, offline tools that get it right, following the official 1995 national alphabet. It also ships a small set of no-API-key Uzbekistan data tools (currency, holidays, weather).

There is already a healthy ecosystem of Uzbek fintech / data MCP servers (payments, e-invoicing, statistics). Uzbek MCP fills the empty language niche, and is the only one built on PHP / Laravel MCP.

Tools

Tool What it does Example
transliterate Convert Uzbek between Latin and Cyrillic (auto-detects direction) OʻzbekistonЎзбекистон
normalize-text Fix apostrophes (/ → U+02BB, tutuq belgisi → U+02BC), Unicode → NFC, collapse whitespace o'zbekoʻzbek
number-to-words Spell an integer in written Uzbek (great for sum-in-words on invoices) 1250bir ming ikki yuz ellik
slugify ASCII URL slug from Uzbek text in either script Oʻzbekiston Respublikasiozbekiston-respublikasi
currency-rate Official CBU exchange rate vs the soʻm, with optional date + amount conversion USD ×1001 208 556 soʻm
public-holidays Official Uzbek public holidays for a year (uz + en, ISO dates) 2026 → 10 holidays
weather Current weather + today's forecast for an Uzbek city (Open-Meteo) Samarqand28.8°C

The language tools are offline and deterministic (no network, no keys). The data tools call public APIs (cbu.uz, open-meteo.com) and need no API key.

Quick start

Requirements

  • PHP 8.3+ (with the mbstring extension; intl recommended)
  • Composer

Install

git clone https://github.com/shaxzodbek-uzb/uzbek-mcp.git
cd uzbek-mcp
composer install
cp .env.example .env
php artisan key:generate

That's it — the server runs over stdio with php artisan mcp:start uzbek.

Connect to Claude Desktop

Add this to your claude_desktop_config.json (use the absolute path to artisan):

{
  "mcpServers": {
    "uzbek": {
      "command": "php",
      "args": ["/absolute/path/to/uzbek-mcp/artisan", "mcp:start", "uzbek"]
    }
  }
}

Restart Claude Desktop and ask it, for example: "Transliterate 'Oʻzbekiston Respublikasi' to Cyrillic" or "Spell out 1 250 000 soʻm in Uzbek".

Connect to Claude Code

claude mcp add uzbek -- php /absolute/path/to/uzbek-mcp/artisan mcp:start uzbek

Use it over HTTP

The same server is also exposed at POST /mcp/uzbek (rate-limited). Serve it with php artisan serve and point a remote MCP client at http://127.0.0.1:8000/mcp/uzbek. Add authentication middleware before exposing this publicly — see routes/ai.php.

Inspect it interactively

php artisan mcp:inspector uzbek

Examples

// transliterate
{ "text": "Salom dunyo" }                         → "Салом дунё"
{ "text": "Ўзбекистон", "direction": "to_latin" } → "Oʻzbekiston"

// number-to-words
{ "number": 1250 }                                → "bir ming ikki yuz ellik"
{ "number": 1250, "currency": "soʻm" }            → "bir ming ikki yuz ellik soʻm"
{ "number": 1250, "script": "cyrillic" }          → "бир минг икки юз эллик"

// normalize-text
{ "text": "o'zbek  tili" }                        → "oʻzbek tili"

// slugify
{ "text": "Toshkent shahri" }                     → "toshkent-shahri"

// currency-rate
{ "currency": "USD", "amount": 100 }              → { rate, converted_sum, date, ... }

// public-holidays
{ "year": 2026 }                                  → { holidays: [  ] }

// weather
{ "city": "Buxoro" }                              → { current, today, condition, ... }

About the transliteration

Uzbek MCP implements the official 1995 Latin alphabet (the 2018/2021 Ó/Ǵ diacritic reforms were never adopted into law). It is careful about the details most tools get wrong:

  • and use U+02BB (modifier letter turned comma) — straight quotes, backticks and curly quotes on input are accepted and normalized.
  • The tutuq belgisi (glottal stop, Cyrillic ъ) uses U+02BC (modifier letter apostrophe) — a different character from the / mark.
  • Cyrillic еye word-initially / after a vowel / after ъ,ь, otherwise e.
  • Cyrillic цts after a vowel, otherwise s.

A few mappings are inherently lossy (Latin eе/э, цts/s, ь is dropped), so a Cyrillic → Latin → Cyrillic round-trip is not guaranteed for every input, but well-formed text round-trips cleanly.

Development

composer test              # run the PHPUnit suite (40 tests)
composer lint              # format with Laravel Pint
./vendor/bin/pint --test   # check formatting without changing files

The Uzbek logic lives in framework-agnostic classes under app/Support/Uzbek (Transliterator, NumberConverter, TextHelper, Holidays, Cities, WeatherCodes); the thin MCP wrappers are in app/Mcp.

Contributing

Contributions are very welcome — extra city coordinates, lunar-holiday years, transliteration edge cases, or new tools. See CONTRIBUTING.md.

License

MIT © Shaxzodbek Qambaraliyev

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固