Skip to main content
Glama
jeremyclee

Dexcom Share MCP Server

by jeremyclee

Dexcom Share MCP Server (Node.js)

A Model Context Protocol (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 theunofficial 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

Related MCP server: Dexcom G7 MCP Server

🚀 Getting Started

Prerequisites

  • Node.js: Download and install the "LTS" version from 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

cd /path/to/dexcom-share-mcp-node
npm install && npm run build

🪟 Windows

cd C:\path\to\dexcom-share-mcp-node
npm install && npm run build

Verify Connection

Test your credentials before configuring a client:

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:

{
  "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 \\):

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

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

Available Tools

2 tools
get_glucose_readingsA

Get recent glucose values within the last 24 hours. IMPORTANT: This uses the unofficial Share API which only provides real-time monitoring data. Both startDate and endDate MUST be within the last 24 hours from the current time. Cannot retrieve historical data beyond 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateYesEnd date in ISO 8601 format (e.g. 2023-10-27T11:00:00Z). Must be within the last 24 hours from now.
startDateYesStart date in ISO 8601 format (e.g. 2023-10-27T10:00:00Z). Must be within the last 24 hours from now.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly states the tool uses an 'unofficial Share API' and only provides 'real-time monitoring data', which is valuable context about limitations. However, it does not mention potential errors or rate limits, but the critical constraint is well covered.

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 and front-loaded with the purpose, followed by the key constraint and limitation. Every sentence adds value without waste.

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 the tool's simplicity (2 parameters, no output schema, no nested objects), the description is sufficient to guide correct usage and set expectations. It could mention return format but that is not critical for a simple data retrieval. The limitation is well articulated.

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 already provides descriptions for both parameters with ISO format examples and the 24-hour constraint. The description reinforces this but adds minimal new meaning beyond that. With 100% schema coverage, a baseline 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?

The description states the tool retrieves 'recent glucose values within the last 24 hours', which is a specific verb+resource+time scope. It clearly distinguishes from the sibling 'get_latest_reading' by emphasizing the time range and use of the Share API.

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

Usage Guidelines5/5

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

The description explicitly warns that both startDate and endDate must be within the last 24 hours, and that the tool cannot retrieve historical data beyond that window. This provides clear when-to-use guidance and implicitly differentiates from the sibling for the latest reading.

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

get_latest_readingA

Get the most recent glucose reading (typically from the last 5-15 minutes). This is the fastest way to check current glucose levels.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavioral traits. It explains the typical recency (5-15 minutes) and speed (fastest way), setting clear expectations for staleness and performance. It does not mention any destructive side effects or authentication needs, but given it is a zero-parameter, read-only tool, this is 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?

The description is extremely short at two sentences, each serving a distinct purpose: stating the core function and adding a usage tip. No words are wasted, and the key information is front-loaded in the first sentence. This is ideal for efficient agent parsing.

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 the tool has zero parameters, no output schema, and no annotations, the description is sufficiently complete for its complexity. It tells the user what to expect (most recent reading, speed) and implies the output is a single value. The only minor gap is not describing the return format (e.g., whether it includes timestamp or units), but for a tool with no output schema, the description cannot be expected to cover that.

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?

The input schema has no parameters and schema description coverage is 100%, so there are no parameters to describe. The baseline expectation is 4, and the description adds no unnecessary parameter explanations. It correctly focuses on the tool's behavior rather than elaborating on a non-existent schema.

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 uses a specific verb ('Get') and a specific resource ('most recent glucose reading'), and further clarifies it is the 'fastest way to check current glucose levels'. It clearly distinguishes the tool from its sibling 'get_glucose_readings' by implying it returns a single, latest reading rather than a list.

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?

The description states this is the 'fastest way to check current glucose levels', which implies it should be used when a quick, current snapshot is needed. It does not explicitly say when not to use it, but the distinction from the sibling tool (which likely returns multiple readings) is clear enough to guide selection.

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. 2 tool updatesv1.0.0
    • First observedget_glucose_readings
    • First observedget_latest_reading

TDQS

A4.3/5.0
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

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/jeremyclee/dexcom-share-mcp-node'

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