LibreLink MCP Server
Enables access to FreeStyle Libre glucose data through Claude Desktop, providing current readings, historical data, statistics, and trend analysis from LibreLinkUp accounts with secure credential storage.
README
LibreLink MCP Server - Fixed for API v4.16.0
๐ฌ๐ง English | ๐ฎ๐น Italiano
๐ฉธ Server MCP per accedere ai dati glicemici FreeStyle Libre tramite Claude Desktop.
Questa รจ una versione corretta che supporta le modifiche API introdotte l'8 ottobre 2025:
- โ Supporto per la versione API 4.16.0+
- โ
Header
Account-Idobbligatorio (SHA256 hash dell'userId) - โ Gestione automatica del redirect regionale
- โ Refresh automatico del token
- โ Storage sicuro delle credenziali con crittografia AES-256-GCM
- โ Chiavi di crittografia salvate nel keychain del sistema operativo (Keytar)
- โ
Fallback automatico a file
.encryption.keyse Keytar non disponibile - โ Persistenza sicura dei token JWT
- โ v1.3.0: Supporto completo per tutte le 13 regioni LibreLinkUp
๐ Prerequisiti
- Node.js: Versione 18.0.0 o superiore
- Account LibreLinkUp: Account attivo con dati condivisi
- Sensore: FreeStyle Libre 2 o 3 attivo
- Claude Desktop: Per l'integrazione MCP
๐ Installazione Rapida (Bundle Precompilato)
Passaggi:
1. Installa Keytar (Raccomandato per sicurezza massima)
Per utilizzare il vault nativo del sistema operativo (Windows Credential Manager, macOS Keychain, Linux Secret Service), installa keytar:
npm install keytar
Nota: Se
keytarnon puรฒ essere installato, il sistema userร automaticamente un file criptato come fallback.
2. Scarica il bundle
Usa il browser oppure:
wget https://github.com/sedoglia/librelink-mcp-server/releases/download/v1.3.0/librelink-mcp-server.mcpb
3. Verifica l'integritร
Verifica l'integritร (opzionale ma consigliato):
wget https://github.com/sedoglia/librelink-mcp-server/releases/download/v1.3.0/librelink-mcp-server.mcpb.sha256
sha256sum -c librelink-mcp-server.mcpb
4. Installa l'estensione in Claude Desktop (Metodo Consigliato)
Installazione tramite Custom Desktop Extensions:
- Apri Claude Desktop
- Vai su Impostazioni (Settings)
- Seleziona la scheda Estensioni (Extensions)
- Clicca su Impostazioni Avanzate (Advanced settings) e trova la sezione Extension Developer
- Clicca su "Installa Estensione..." (Install Extensionโฆ)
- Seleziona il file
.mcpb(librelink-mcp-server.mcpbscaricato al passaggio 1) - Segui le indicazioni a schermo per completare l'installazione
Nota: Questo รจ il metodo piรน semplice e consigliato. L'estensione sarร automaticamente integrata in Claude Desktop senza necessitร di configurazione manuale.
5. Configura le Credenziali LibreLink (Metodo Sicuro - Raccomandato)
Apri una nuova chat su Claude Desktop e scrivi il seguente prompt:
Configura le credenziali di accesso per LibreLink
Rispondi al messaggio fornendo:
- Utente: la tua email LibreLink
- Password: la tua password LibreLink
L'estensione provvederร automaticamente a criptare e salvare le credenziali in modo sicuro nel vault nativo del sistema operativo (Windows Credential Manager, macOS Keychain, Linux Secret Service).
Nota: Le credenziali NON verranno salvate in file di testo. Saranno sempre crittografate e gestite dal vault nativo del SO.
6. Riavvia Claude Desktop
- Chiudi completamente l'applicazione
- Riapri Claude Desktop
- Verifica in Impostazioni โ Sviluppatore lo stato della connessione โ
๐ Installazione (clonando il repository con GIT)
1. Clona il Repository
# Clona il repository
git clone https://github.com/sedoglia/librelink-mcp-server.git
cd librelink-mcp-server
2. Installa le Dipendenze
# Installa dipendenze
npm install
3. Installa Keytar
Keytar richiede alcune dipendenze di sistema per funzionare:
Windows: Nessuna dipendenza aggiuntiva richiesta (usa Windows Credential Manager)
macOS: Nessuna dipendenza aggiuntiva richiesta (usa Keychain)
Linux (Debian/Ubuntu):
sudo apt-get install libsecret-1-dev gnome-keyring
Linux (Fedora/RHEL):
sudo dnf install libsecret-devel gnome-keyring
# Installa Keytar
npm install keytar
4. Compila il Progetto
# Compila TypeScript
npm run build
5. Configura le credenziali
npm run configure
Ti verrร chiesto:
- Email: Email del tuo account LibreLinkUp
- Password: Password del tuo account
- Regione: Una delle 13 regioni supportate (vedi sotto)
- Range target: Valori glicemici target (default: 70-180 mg/dL)
Regioni Supportate
| Codice | Regione |
|---|---|
| AE | Emirati Arabi Uniti |
| AP | Asia Pacifico |
| AU | Australia |
| CA | Canada |
| CN | Cina |
| DE | Germania |
| EU | Europa (default) |
| EU2 | Europa 2 |
| FR | Francia |
| JP | Giappone |
| LA | America Latina |
| RU | Russia |
| US | Stati Uniti |
Le credenziali vengono salvate in modo sicuro:
- Crittografia: AES-256-GCM con salt e IV casuali
- Chiave di crittografia: Salvata nel keychain del sistema operativo
- Token JWT: Persistito in modo sicuro per evitare login ripetuti
6. Testa la connessione
npm run test:connection
7. Configura Claude Desktop
Aggiungi al file di configurazione di Claude Desktop:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"librelink": {
"command": "node",
"args": ["C:/percorso/librelink-mcp-server/dist/index.js"]
}
}
}
8. Riavvia Claude Desktop
Riavvia Claude Desktop per caricare il server MCP.
๐ Strumenti MCP Disponibili
| Strumento | Descrizione |
|---|---|
get_current_glucose |
Lettura glicemica attuale con trend |
get_glucose_history |
Storico glicemico (default: 24 ore) |
get_glucose_stats |
Statistiche: media, GMI, time-in-range |
get_glucose_trends |
Analisi pattern: dawn phenomenon, stabilitร |
get_sensor_info |
Info sensore attivo |
configure_credentials |
Configura credenziali LibreLinkUp |
configure_ranges |
Imposta range target personalizzati |
validate_connection |
Testa la connessione |
get_session_status |
Stato della sessione di autenticazione |
clear_session |
Pulisce la sessione e forza re-autenticazione |
๐ฌ Esempi di Utilizzo
Una volta integrato con Claude Desktop, puoi chiedere:
- "Qual รจ la mia glicemia attuale?"
- "Mostrami lo storico glicemico delle ultime 6 ore"
- "Calcola il mio time-in-range di questa settimana"
- "Analizza i miei pattern glicemici"
- "Ho il fenomeno dell'alba?"
๐ Output di Esempio
Lettura Attuale
{
"current_glucose": 105,
"timestamp": "2025-12-06T16:30:00.000Z",
"trend": "Flat",
"status": "Normal",
"color": "green"
}
Statistiche
{
"analysis_period_days": 7,
"average_glucose": 112.5,
"glucose_management_indicator": 5.94,
"time_in_range": {
"target_70_180": 85.2,
"below_70": 2.1,
"above_180": 12.7
},
"variability": {
"standard_deviation": 28.4,
"coefficient_of_variation": 25.2
}
}
๐ Sicurezza e Privacy
Posizioni di Storage
I file di configurazione sono salvati in posizioni specifiche per ogni sistema operativo:
| Sistema | Percorso |
|---|---|
| Windows | %LOCALAPPDATA%\librelink-mcp\ |
| macOS | ~/Library/Application Support/librelink-mcp/ |
| Linux | ~/.config/librelink-mcp/ |
Architettura di Sicurezza
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Storage Chiave di Crittografia โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ OPZIONE 1 (Preferita): OS Keychain via Keytar โโ
โ โ - Windows: Credential Manager โโ
โ โ - macOS: Keychain โโ
โ โ - Linux: Secret Service (libsecret) โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโ
โ โ OPZIONE 2 (Fallback): File .encryption.key โโ
โ โ - Permessi 0o600 (solo proprietario) โโ
โ โ - Usato se Keytar non disponibile โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [Percorso specifico per OS]/librelink-mcp/ โ
โ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ credentials.enc โ โ token.enc โ โ
โ โ (AES-256-GCM) โ โ (AES-256-GCM) โ โ
โ โ - email โ โ - JWT token โ โ
โ โ - password โ โ - expiration โ โ
โ โโโโโโโโโโโโโโโโโโโโโ โ - userId โ โ
โ โ - accountId โ โ
โ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ config.json โ โ
โ โ (non sensibile) โ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ - region โ โ .encryption.key โ โ
โ โ - targetLow/High โ โ (fallback, 0o600) โ โ
โ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Caratteristiche di Sicurezza
- Crittografia AES-256-GCM: Le credenziali sono crittografate con algoritmo AES-256 in modalitร GCM con authentication tag
- Salt e IV casuali: Ogni operazione di crittografia usa salt e IV unici
- Chiavi nel Keychain (preferito): La chiave master รจ salvata nel keychain del sistema operativo:
- Windows: Credential Manager
- macOS: Keychain
- Linux: Secret Service (libsecret)
- Fallback file-based: Se Keytar non รจ disponibile (es. LM Studio, ambienti senza moduli nativi), la chiave viene salvata in
.encryption.keycon permessi restrittivi (0o600) - Token persistenti: I JWT token sono salvati crittografati per evitare login ripetuti
- Migrazione automatica: Le credenziali dalla vecchia versione vengono migrate automaticamente e le password in chiaro eliminate
- Permessi file: Automaticamente impostati a 600 (solo utente)
- Nessun tracking: Zero telemetria
- Elaborazione locale: Nessun dato inviato a server esterni
โ ๏ธ Fix API v4.16.0 (Ottobre 2025)
Il Problema
L'8 ottobre 2025, Abbott ha reso obbligatori:
- Header
versioncon valore minimo4.16.0 - Header
Account-Idcontenente l'hash SHA256 dell'userId
La Soluzione
Questo fork genera automaticamente l'Account-Id dopo il login:
import { createHash } from 'crypto';
// L'userId viene dalla risposta del login
const userId = loginResponse.data.user.id;
const accountId = createHash('sha256').update(userId).digest('hex');
// L'header viene aggiunto a tutte le richieste autenticate
headers['Account-Id'] = accountId;
๐ Troubleshooting
Errore 403 con minimumVersion
{"data":{"minimumVersion":"4.16.0"},"status":920}
Soluzione: Stai usando una versione vecchia. Usa questo fork aggiornato.
Errore RequiredHeaderMissing
Soluzione: L'header Account-Id non viene inviato. Usa questo fork che lo include automaticamente.
Nessuna connessione trovata
Soluzioni:
- Apri l'app LibreLinkUp e accetta i nuovi Termini e Condizioni
- Verifica che qualcuno stia condividendo i dati con te
- Controlla di usare le credenziali LibreLinkUp (non LibreLink)
Errore di autenticazione
Soluzioni:
- Verifica email e password
- Prova ad accedere dall'app ufficiale LibreLinkUp
- Controlla la regione (EU vs US, ecc.)
Errore Keytar/Keychain
Se riscontri errori con il keychain:
- Assicurati che il servizio keychain del sistema sia attivo
- Su Linux, installa
libsecret-1-devegnome-keyring - Se Keytar non รจ disponibile, il sistema userร automaticamente il fallback file-based (
.encryption.keynella directory dati) - Il fallback รจ completamente trasparente e le credenziali rimangono crittografate con AES-256-GCM
๐ Struttura Progetto
librelink-mcp-server/
โโโ src/
โ โโโ index.ts # Server MCP principale
โ โโโ librelink-client.ts # Client API con fix v4.16.0
โ โโโ glucose-analytics.ts # Analisi e statistiche
โ โโโ config.ts # Gestione configurazione
โ โโโ configure.ts # Tool CLI configurazione
โ โโโ secure-storage.ts # Storage sicuro con Keytar
โ โโโ types.ts # Definizioni TypeScript
โโโ test-real-connection.js # Test connessione
โโโ test-secure-storage.js # Test modulo sicurezza
โโโ package.json
โโโ tsconfig.json
โโโ README.md
๐ Privacy Policy
Questo server MCP rispetta la tua privacy. Ecco un riepilogo:
- Elaborazione locale: Tutti i dati vengono elaborati esclusivamente sul tuo dispositivo
- Crittografia: Credenziali protette con AES-256-GCM, chiavi nel keychain OS
- Nessun tracking: Zero telemetria, analytics o condivisione con terze parti
- Comunicazione sicura: Solo con API LibreLinkUp ufficiali di Abbott
๐ Leggi la Privacy Policy completa
๐ Licenza
MIT License
๐ Crediti
- Fork originale: amansk/librelink-mcp-server
- Documentazione API: khskekec/libre-link-up-http-dump
- MCP Protocol: Anthropic
- Secure Storage: Keytar
โ Supporta il Progetto
Se questo progetto ti รจ utile, considera di fare una donazione per supportarne lo sviluppo:
Disclaimer: Questo รจ un progetto non ufficiale, non affiliato con Abbott o FreeStyle Libre. Usalo responsabilmente e consulta sempre i professionisti sanitari per decisioni mediche.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.