Skip to main content
Glama

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-Id obbligatorio (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.key se Keytar non disponibile

  • ✅ Persistenza sicura dei token JWT

  • v1.3.0: Supporto completo per tutte le 13 regioni LibreLinkUp

  • v1.4.0: Aggiornamento dipendenze di sicurezza (13 vulnerabilità risolte), MCP SDK 1.29.0, richiede Node.js 20+

  • v1.5.0: 8 vulnerabilità risolte, MCP SDK 1.30.0, richiede Node.js 22+

📋 Prerequisiti

  • Node.js: Versione 22.0.0 o superiore

  • Account LibreLinkUp: Account attivo con dati condivisi

  • Sensore: FreeStyle Libre 2 o 3 attivo

  • Claude Desktop: Per l'integrazione MCP

Related MCP server: HidrateSpark MCP Server

🚀 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 keytar non 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.5.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.5.0/librelink-mcp-server.mcpb.sha256
sha256sum -c librelink-mcp-server.mcpb.sha256

4. Installa l'estensione in Claude Desktop (Metodo Consigliato)

Installazione tramite Custom Desktop Extensions:

  1. Apri Claude Desktop

  2. Vai su Impostazioni (Settings)

  3. Seleziona la scheda Estensioni (Extensions)

  4. Clicca su Impostazioni Avanzate (Advanced settings) e trova la sezione Extension Developer

  5. Clicca su "Installa Estensione..." (Install Extension…)

  6. Seleziona il file .mcpb (librelink-mcp-server.mcpb scaricato al passaggio 1)

  7. 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.


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.key con 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:

  1. Header version con valore minimo 4.16.0

  2. Header Account-Id contenente 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:

  1. Apri l'app LibreLinkUp e accetta i nuovi Termini e Condizioni

  2. Verifica che qualcuno stia condividendo i dati con te

  3. Controlla di usare le credenziali LibreLinkUp (non LibreLink)

Errore di autenticazione

Soluzioni:

  1. Verifica email e password

  2. Prova ad accedere dall'app ufficiale LibreLinkUp

  3. Controlla la regione (EU vs US, ecc.)

Errore Keytar/Keychain

Se riscontri errori con il keychain:

  1. Assicurati che il servizio keychain del sistema sia attivo

  2. Su Linux, installa libsecret-1-dev e gnome-keyring

  3. Se Keytar non è disponibile, il sistema userà automaticamente il fallback file-based (.encryption.key nella directory dati)

  4. 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

☕ Supporta il Progetto

Se questo progetto ti è utile, considera di fare una donazione per supportarne lo sviluppo:

PayPal


Disclaimer: Questo è un progetto non ufficiale, non affiliato con Abbott o FreeStyle Libre. Usalo responsabilmente e consulta sempre i professionisti sanitari per decisioni mediche.

Available Tools

6 tools
clear_sessionA
Destructive

Clear the current authentication session and stored tokens. Use this if you need to force a re-authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the destructiveHint annotation by mentioning clearing the session and tokens, but does not go beyond annotations to disclose additional behavioral traits (e.g., irreversibility).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the action and usage, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and low complexity, the description sufficiently covers purpose and usage without leaving critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, with 100% schema coverage. The description adds no parameter details but none are needed, earning a baseline of 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly specifies the verb 'clear' and resource 'authentication session and stored tokens', distinguishing it from sibling tools like get_session_status or configure_credentials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when to use the tool ('force a re-authentication'), providing clear context, though it does not explicitly mention when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_credentialsA
Destructive

Set up or update your LibreLinkUp account credentials for data access. Required before using any glucose reading tools. Credentials are stored securely using AES-256-GCM encryption with keys in your OS keychain.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesYour LibreLinkUp account email address
regionNoYour LibreLinkUp account region. Available: AE, AP, AU, CA, CN, DE, EU, EU2, FR, JP, LA, RU, US. Default: EU
passwordYesYour LibreLinkUp account password

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses security details (AES-256-GCM encryption, OS keychain) beyond destructiveHint annotation. Does not contradict annotations. Lacks info on error behavior or validation, but still informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundant information. Every sentence adds value: purpose, prerequisite, security detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers the tool's role, prerequisite, and security. No output schema needed. Could mention validation or error handling, but not required for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameter descriptions (100% coverage). Description adds no additional semantics beyond the overall purpose. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Set up or update your LibreLinkUp account credentials for data access' and distinguishes from sibling tools by noting it is a prerequisite for glucose reading tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Required before using any glucose reading tools', providing clear when-to-use context. Does not specify when not to use, but the context implies one-time setup or credential update.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_rangesA
Destructive

Customize your target glucose range for personalized time-in-range calculations. Standard range is 70-180 mg/dL, but your healthcare provider may recommend different targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_lowYesLower bound of target range in mg/dL (40-100). Default: 70
target_highYesUpper bound of target range in mg/dL (100-300). Default: 180

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates mutation (customize) but adds limited behavioral context beyond the destructiveHint annotation; it could disclose impacts on previous settings or persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and front-loads the primary action, with no superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple parameters and existing annotations, the description adequately explains the tool's purpose and context, though it could clarify the effect on calculations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides full parameter descriptions; the description adds context about standard ranges and healthcare provider recommendations but no new parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool customizes the target glucose range for time-in-range calculations, distinguishing it from sibling tools like 'configure_credentials'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to set a custom range) but does not explicitly state exclusions or alternatives, relying on the sibling context for differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_glucoseA
Read-only

Get the most recent glucose reading from your FreeStyle Libre sensor. Returns current glucose value in mg/dL, trend direction (rising/falling/stable), and whether the value is in target range. Use this for real-time glucose monitoring.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds value by detailing the return data (value in mg/dL, trend direction, in-range status). No contradictions, good disclosure beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words. Information is front-loaded and each sentence adds value. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and simple read nature, the description covers all necessary context: what it returns and when to use it. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in input schema, schema description coverage is 100% (empty). Description correctly omits parameter info. Baseline score of 4 applies per guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get', resource 'most recent glucose reading', and source 'FreeStyle Libre sensor'. It distinguishes from siblings like get_glucose_history (historical data) and get_glucose_stats (statistics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use this for real-time glucose monitoring', providing clear usage context. Does not include explicit when-not-to-use or alternatives, but the sibling list and context make it obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_glucose_historyA
Read-only

Retrieve historical glucose readings for analysis. Returns an array of timestamped glucose values. Useful for reviewing past glucose levels, identifying patterns, or checking overnight values. Default retrieves 24 hours of data.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoNumber of hours of history to retrieve (1-168). Default: 24. Examples: 1 for last hour, 8 for overnight, 168 for one week. Note: LibreLinkUp only stores approximately 12 hours of detailed data.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds default behavior (24 hours) and return format, but no additional behavioral traits beyond the schema and annotations. Adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each serving a purpose: purpose, return format, use cases, default. No wasted words, front-loaded with key information. Excellent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional parameter, readOnlyHint, and no output schema, the description covers the essential aspects (purpose, return, default, use cases). Missing mention of pagination or limits, but schema covers hours constraints. Good.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with detailed parameter description. The description only mentions 'default retrieves 24 hours', which adds minimal value beyond the schema. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves historical glucose readings and returns timestamped values, distinguishing it from sibling tools like get_current_glucose. However, it does not explicitly name alternatives, so it's clear but not top tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides use cases (reviewing past levels, identifying patterns, overnight values), implying when to use it, but lacks explicit exclusions or alternatives. Adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_glucose_statsA
Read-only

Calculate comprehensive glucose statistics including average glucose, GMI (estimated A1C), time-in-range percentages, and variability metrics. Essential for diabetes management insights and identifying areas for improvement.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (1-14). Default: 7. Note: LibreLinkUp data availability may be limited.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to emphasize safety. It adds that the tool computes statistical metrics, which is useful but not a deep behavioral disclosure. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences precisely conveying purpose and usage. No wasted words or redundancy. Information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has one optional parameter, no output schema. Description explains what metrics are computed (avg glucose, GMI, time-in-range, variability), which compensates for missing output schema. Adequately complete for a statistical aggregation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (days) with 100% schema description coverage. The tool description does not repeat parameter details, but the schema already explains days, default, and data availability. Baseline score applies as schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it calculates comprehensive glucose statistics (average glucose, GMI, time-in-range, variability). This distinguishes it from siblings like get_current_glucose (single reading), get_glucose_history (raw data), and get_glucose_trends (trends).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description says 'Essential for diabetes management insights and identifying areas for improvement,' which provides clear context for when to use this tool. No explicit when-not or alternatives, but the purpose is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.4.0
    • Removedget_glucose_trends
    • Removedget_sensor_info
    • Removedget_session_status
    • Removedvalidate_connection
  2. 10 tool updatesv1.3.0
    • First observedclear_session
    • First observedconfigure_credentials
    • First observedconfigure_ranges
    • First observedget_current_glucose
    • First observedget_glucose_history
    • First observedget_glucose_stats
    • First observedget_glucose_trends
    • First observedget_sensor_info
    • First observedget_session_status
    • First observedvalidate_connection

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a distinct purpose: current reading, history, stats, credentials, session, and range configuration. No overlap in functionality, and descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_current_glucose, configure_credentials). This uniformity aids agent prediction and selection.

Tool Count5/5

Six tools is an appropriate number for a glucose monitoring server, covering essential data retrieval and configuration without being excessive or insufficient.

Completeness4/5

The set covers core functionalities: current/historical data, statistics, credential setup, and range configuration. Minor gaps exist (e.g., sensor status), but overall it handles typical use cases well.

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

Latest Blog Posts

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/sedoglia/librelink-mcp-server'

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