Skip to main content
Glama
jeremyclee

Dexcom Share MCP Server

by jeremyclee
README.md
# Dexcom Share MCP Server (Node.js)

A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that provides access to your Dexcom Continuous Glucose Monitor (CGM) data via the **unofficial Dexcom Share API**. This server exposes your real-time glucose readings to any MCP-compatible AI assistant or application.

> [!IMPORTANT]
> This uses the **unofficial Share API** designed for real-time monitoring, **not** the official Dexcom API. Data is limited to the **last 24 hours** only.

## Features

- **Get Latest Reading**: Retrieve the most recent glucose value and trend
- **Get Recent Readings**: Fetch glucose values from the last few hours (up to 24 hours maximum)
- **Direct Authentication**: Uses Dexcom Share credentials (no OAuth setup required)
- **Universal MCP Compatibility**: Works with any MCP client (Claude Desktop, IDEs, custom applications)
- **Real-Time Focused**: Perfect for "What's my glucose now?" queries, not historical analysis

## 🚀 Getting Started

### Prerequisites
- **Node.js**: Download and install the "LTS" version from **[nodejs.org](https://nodejs.org/)**
- **Dexcom Account**: Valid username and password (same as Dexcom mobile app)
- **Data Sharing Enabled**: "Share" feature must be ON in your Dexcom mobile app (Settings > Share)

### Installation

1.  **Download this project** as a ZIP file or clone it with Git
2.  **Extract** to a folder (e.g., `Documents/dexcom-share-mcp-node`)
3.  **Install dependencies and build:**

#### 🍎 macOS
```bash
cd /path/to/dexcom-share-mcp-node
npm install && npm run build
```

#### 🪟 Windows
```bash
cd C:\path\to\dexcom-share-mcp-node
npm install && npm run build
```

### Verify Connection
Test your credentials before configuring a client:
```bash
npm run test-connection
```

---

## 🔌 MCP Client Configuration

This server communicates over **stdio** and can be used with any MCP-compatible client. Below is an example for Claude Desktop, but the same pattern applies to other clients.

### Example: Claude Desktop

#### 🍎 macOS Configuration

1.  Open **Claude Desktop** > `Claude` menu > `Settings...` > `Developer` > `Edit Config`
2.  Add this to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "dexcom": {
      "command": "node",
      "args": ["/Users/YOUR_NAME/Documents/dexcom-share-mcp-node/build/index.js"],
      "env": {
        "DEXCOM_USERNAME": "your_username",
        "DEXCOM_PASSWORD": "your_password",
        "DEXCOM_REGION": "us"
      }
    }
  }
}
```

*Tip: Drag the `build/index.js` file into Terminal to get its full path.*

#### 🪟 Windows Configuration

1.  Open **Claude Desktop** > `File` > `Settings` > `Developer` > `Edit Config`  
    *(Config file: `%APPDATA%\Claude\claude_desktop_config.json`)*
2.  Add this configuration (**use double backslashes `\\`**):

```json
{
  "mcpServers": {
    "dexcom": {
      "command": "node",
      "args": ["C:\\Users\\YOUR_NAME\\Documents\\dexcom-share-mcp-node\\build\\index.js"],
      "env": {
        "DEXCOM_USERNAME": "your_username",
        "DEXCOM_PASSWORD": "your_password",
        "DEXCOM_REGION": "us"
      }
    }
  }
}
```

**Region Note:** Change `DEXCOM_REGION` to `"ous"` if you're outside the US.

3.  **Restart Claude Desktop**. You should see a 🔌 icon indicating the server is connected.

---

## 🛠️ Available Tools

The server exposes the following MCP tools:

### `get_glucose_readings`
Fetch recent glucose values within the last 24 hours. The Share API calculates lookback time from the **current moment**, not arbitrary historical ranges.

**Parameters:**
- `startDate` (string): ISO 8601 format (e.g., `"2024-01-15T10:00:00Z"`). **Must be within the last 24 hours.**
- `endDate` (string): ISO 8601 format. **Must be within the last 24 hours.**

**Example:** To get readings from 3 hours ago to now, you'd calculate `startDate` as 3 hours before the current time.

### `get_latest_reading`
Get the most recent glucose reading (typically within the last 5-15 minutes).

**Parameters:** None

---

## 📝 Usage Examples (Claude Desktop)

Once connected, you can ask:
- ✅ "What is my current glucose level?"
- ✅ "Show me my glucose readings from the last 3 hours"
- ✅ "Was my blood sugar high this morning?" *(if within 24 hours)*
- ❌ "Show me my readings from last week" *(not supported - exceeds 24-hour limit)*

---

## ⚠️ Important Limitations

- **Unofficial API**: This uses the Share API, which is designed for real-time monitoring, not the official Dexcom Web API
- **24-Hour Maximum**: Can **only** retrieve data from the last 24 hours. Historical data beyond this is not accessible.
- **No Long-Term Trends**: For multi-day analysis or reports, you'll need the official Dexcom API (requires OAuth setup)
- **Dexcom Share Required**: Must be enabled in the Dexcom mobile app (even with 0 followers)
- **Recent Data Only**: Readings are typically available within 5-15 minutes of device transmission
- **Credentials**: Use the same username/password as your Dexcom app or Clarity account

## 🔒 Data Privacy
Your credentials are stored locally on your computer (in the MCP client config file or `.env`). This server communicates directly with Dexcom's API and does not send data to any third party.

## 📄 License
MIT

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one returns a set of recent readings over a time window, while the other returns only the single most recent reading. There is no ambiguity about which to use for a given scenario.

Naming Consistency5/5

Both tool names use a consistent 'get_adjective_noun' pattern (get_glucose_readings and get_latest_reading), making the naming predictable and easy to understand.

Tool Count3/5

With only two tools, the surface feels thin for a glucose monitoring server, but it covers the essential use cases of retrieving current and recent data. The count is reasonable for a focused utility, though it leaves little room for additional functionality.

Completeness3/5

The server covers the primary use case of retrieving real-time glucose data. However, it lacks tools for historical retrieval (beyond 24 hours), setting alerts, managing device status, or user authentication, which are common interactions for a Dexcom integration.

Maintenance

ActivityInactive
ResponsivenessNo issues