MCP Hub Router
by afzalbek-dev
README.md
# ๐ MCP Hub Router
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
[]()
Anthropic tomonidan ishlab chiqilgan **Model Context Protocol (MCP)** spetsifikatsiyasiga to'liq mos keluvchi, AI agentlar (Claude Desktop, Cursor, Antigravity, LLM agentlar) uchun yengil vaznli vositalar shlyuzi (Tool Gateway), marshrutizator va telemetriya tizimi.
---
## ๐ Imkoniyatlari
- **MCP Spetsifikatsiyasi:** `initialize`, `ping`, `tools/list`, `tools/call` kabi barcha standart JSON-RPC 2.0 protokollarini qo'llab-quvvatlaydi.
- **Qulay Dekorator:** Python funksiyalarini `@router.tool(...)` orqali bir zumda AI vositasiga aylantirish.
- **Asinxron va Sinxron:** Asinxron `async def` va sinxron `def` vositalarni bir xil marshrutlash.
- **Jonli Telemetriya (Router Telemetry):** Har bir vosita qancha millisekundda ishlagani, muvaffaqiyat foizi va xatoliklarni kuzatib boradi.
- **Zero-Dependency:** Tashqi og'ir paketlarsiz, Python standart kutubxonasida tez ishlaydi.
---
## ๐ O'rnatish
```bash
git clone https://github.com/afzalbek-dev/mcp-hub-router.git
cd mcp-hub-router
pip install .
```
---
## ๐ ๏ธ Foydalanish
```python
import asyncio
from mcp_router import MCPRouter
router = MCPRouter(server_name="developer-toolkit", server_version="1.0.0")
# 1. AI agent uchun yangi instrument (tool) ro'yxatdan o'tkazish
@router.tool(
name="get_weather_forecast",
description="Berilgan shahar bo'yicha ob-havo ma'lumotini qaytaradi",
input_schema={
"type": "object",
"properties": {
"city": {"type": "string", "description": "Shahar nomi (masalan: Tashkent)"}
},
"required": ["city"]
}
)
async def weather_tool(city: str):
return f"{city} shahrida havo ochiq, harorat +24ยฐC"
# 2. JSON-RPC so'rovini qabul qilish va javob qaytarish
async def main():
test_request = '''
{
"jsonrpc": "2.0",
"id": "req-1",
"method": "tools/call",
"params": {
"name": "get_weather_forecast",
"arguments": {"city": "Tashkent"}
}
}
'''
response = await router.handle_request(test_request)
print("MCP Javobi:", response)
print("Telemetriya:", router.telemetry.summary())
asyncio.run(main())
```
---
## ๐งช Testlash
```bash
python3 -m unittest discover tests -v
```
---
## ๐ Litsenziya
MIT License. Muallif: [Afzalbek](https://github.com/afzalbek-dev).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues