Skip to main content
Glama

Bluetooth MCP Server

bluetooth.py6.3 kB
""" Points d'entrée API pour les opérations Bluetooth. """ from fastapi import APIRouter, HTTPException, Query from app.models.bluetooth import BluetoothScanParams, ScanResponse from app.services.bluetooth_service import bluetooth_service, BluetoothScanError # Création du router FastAPI router = APIRouter() @router.post("/mcp/v1/tools/bluetooth-scan", response_model=ScanResponse, description="Scanne les appareils Bluetooth à proximité. " "Utilisez filter_name=null ou omettez le champ pour voir tous les appareils.") async def execute_bluetooth_scan(params: BluetoothScanParams): """ Endpoint pour exécuter l'outil de scan Bluetooth. Détecte les appareils BLE et Bluetooth classiques à proximité. Args: params: Paramètres pour le scan - duration: Durée du scan en secondes (défaut: 5.0) - filter_name: Filtre optionnel sur le nom des appareils (null pour voir tous les appareils) - connect_for_details: Si True, tente de se connecter à chaque appareil (défaut: False) - include_classic: Si True, inclut les appareils Bluetooth classiques (défaut: True) - extended_freebox_detection: Si True, utilise des méthodes supplémentaires pour détecter les Freebox (défaut: True) - deduplicate_devices: Si True, fusionne les appareils en double (défaut: True) - parallel_scans: Si True, exécute les scans en parallèle (défaut: True) Returns: Liste des appareils détectés Raises: HTTPException: En cas d'erreur pendant le scan """ try: # Utilisation du service Bluetooth pour effectuer le scan devices = await bluetooth_service.scan_for_devices( duration=params.duration, filter_name=params.filter_name, connect_for_details=params.connect_for_details, include_classic=params.include_classic, extended_freebox_detection=params.extended_freebox_detection, deduplicate_devices=params.deduplicate_devices, parallel_scans=params.parallel_scans ) # Retourne les résultats return ScanResponse(devices=devices) except BluetoothScanError as e: # Conversion en HTTPException pour FastAPI raise HTTPException(status_code=500, detail=str(e)) @router.post("/mcp/v1/tools/bluetooth-scan-fast", response_model=ScanResponse, description="Scanne les appareils Bluetooth à proximité avec des paramètres optimisés pour la rapidité.") async def execute_fast_bluetooth_scan(params: BluetoothScanParams = None): """ Endpoint pour un scan Bluetooth rapide. Utilise des paramètres optimisés pour une détection rapide des appareils. Args: params: Paramètres pour le scan (optionnel) Returns: Liste des appareils détectés Raises: HTTPException: En cas d'erreur pendant le scan """ try: # Utiliser des paramètres par défaut optimisés pour la rapidité if params is None: params = BluetoothScanParams() # Forcer l'utilisation des scans parallèles pour une meilleure performance params.parallel_scans = True params.duration = params.duration or 3.0 # Scan plus court params.connect_for_details = False # Pas de connexion pour plus de rapidité # Utilisation du service Bluetooth pour effectuer le scan devices = await bluetooth_service.scan_for_devices( duration=params.duration, filter_name=params.filter_name, connect_for_details=params.connect_for_details, include_classic=params.include_classic, extended_freebox_detection=params.extended_freebox_detection, deduplicate_devices=params.deduplicate_devices, parallel_scans=params.parallel_scans ) # Retourne les résultats return ScanResponse(devices=devices) except BluetoothScanError as e: # Conversion en HTTPException pour FastAPI raise HTTPException(status_code=500, detail=str(e)) @router.post("/mcp/v1/tools/bluetooth-scan-thorough", response_model=ScanResponse, description="Scanne les appareils Bluetooth à proximité avec des paramètres optimisés pour une détection complète.") async def execute_thorough_bluetooth_scan(params: BluetoothScanParams = None): """ Endpoint pour un scan Bluetooth approfondi. Utilise des paramètres optimisés pour détecter un maximum d'appareils, y compris les plus difficiles à détecter. Args: params: Paramètres pour le scan (optionnel) Returns: Liste des appareils détectés Raises: HTTPException: En cas d'erreur pendant le scan """ try: # Utiliser des paramètres par défaut optimisés pour une détection complète if params is None: params = BluetoothScanParams() # Forcer l'utilisation des paramètres optimaux pour une détection approfondie params.duration = params.duration or 10.0 # Scan plus long params.include_classic = True # Activer le scan classique params.extended_freebox_detection = True # Activer la détection étendue params.deduplicate_devices = True # Activer la déduplication params.connect_for_details = True # Activer la connexion pour plus de détails # Utilisation du service Bluetooth pour effectuer le scan devices = await bluetooth_service.scan_for_devices( duration=params.duration, filter_name=params.filter_name, connect_for_details=params.connect_for_details, include_classic=params.include_classic, extended_freebox_detection=params.extended_freebox_detection, deduplicate_devices=params.deduplicate_devices, parallel_scans=params.parallel_scans ) # Retourne les résultats return ScanResponse(devices=devices) except BluetoothScanError as e: # Conversion en HTTPException pour FastAPI raise HTTPException(status_code=500, detail=str(e))

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/Hypijump31/bluetooth-mcp-server'

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