๐Ÿ”ฅ Fireboard MCP v1.0.0


An MCP server that exposes the Fireboard BBQ temperature monitoring API to AI assistants โ€” ask questions about live probe readings, in-progress cooks, historical session data, drive fan status, stall detection, and more. Includes Drive control tools to set target temperature, fan speed, and control channel.

Endpoint

MCP https://fireboard-mcp.up.railway.app/mcp

API Limits

The Fireboard API is rate-limited to 17 calls per 5-minute window across all tools. Exceeding this blocks all requests for ~5 minutes. Each tool's call cost is shown below when expanded. To reduce API usage, the device list is cached server-side per token for 2 minutes โ€” tools sourced from it cost 0 calls when the cache is warm.

Tools

list_devices

All Fireboard devices on the account. Device list is cached server-side for 2 minutes โ€” repeated calls within that window are free.

0โ€“1 calls ยท cached
{ }

Example response

{
  "devices": [
    {
      "uuid": "abc-123",
      "id": 246277,
      "title": "Big Green Egg",
      "model_name": "FireBoard 2 Pro",
      "channel_count": 3,
      "battery": 0.47,
      "channels": [
        { "id": 53744333, "channel": 1, "label": "Ambient Temp", "alerts": [
          { "id": 11280417, "temp_min": 95.0, "temp_max": 130.0, "notify_app": true,
            "notify_email": false, "notify_sms": false, "time_start": "00:00:00",
            "time_stop": "23:59:00", "minutes_buffer": 0, "minutes_repeat": 30, "enabled": true }
        ]},
        { "id": 53744334, "channel": 2, "label": "Pork Internal", "alerts": [] }
      ]
    }
  ],
  "from_cache": true,
  "cache_age_seconds": 45
}
get_realtime_temps

Current probe readings for all devices, or filtered by device name. Sourced from the same cached device list โ€” no extra API calls when warm.

0โ€“1 calls ยท cached
{ device_title?: string }

Example response

{
  "devices": [
    {
      "uuid": "abc-123",
      "title": "Big Green Egg",
      "channels": [
        { "label": "Probe 1", "temp": 74.4, "unit": "C", "as_of": "2026-06-13T13:00:00Z" },
        { "label": "Grill",   "temp": 109.2, "unit": "C", "as_of": "2026-06-13T13:00:00Z" }
      ],
      "last_drive": { "setpoint": 110, "drive_percent": 23, "mode": "1",
                      "tied_to_channel": 2, "tied_to_channel_label": "Grill", "unit": "C", "as_of": "2026-06-13T13:00:00Z" }
    }
  ],
  "from_cache": false,
  "cache_age_seconds": 0
}
get_drive_status

Real-time FireBoard Drive fan %, setpoint, and control mode for a specific device. Uncached โ€” use last_drive from get_realtime_temps if freshness isn't critical.

1 call
{ device_uuid: string }

Example response

{
  "device_uuid": "abc-123",
  "drive": {
    "setpoint": 110,
    "drive_percent": 23,
    "mode": "1",
    "tied_to_channel": 2,
    "tied_to_channel_label": "Grill",
    "unit": "C",
    "as_of": "2026-06-13T13:00:00Z"
  }
}
set_drive_setpoint

Set the Drive target temperature and/or control channel, switching to auto mode.

1โ€“2 calls
{ device_uuid: string, setpoint?: number, channel?: number }

Example response

{ "success": true }
set_drive_speed

Set the Drive fan to a fixed speed (manual mode), overriding any active setpoint. Setting speed to 0 turns the drive off.

1 call
{ device_uuid: string, percent: number }

Example response

{ "success": true }
set_drive_off

Turn the Drive fan off by setting the setpoint to 0. Clears any active setpoint and stops the fan.

1 call
{ device_uuid: string }

Example response

{ "success": true }
list_sessions

Recent cook sessions. Use in_progress_only to find an active cook without scanning the full list.

1 call
{ limit?: number, in_progress_only?: boolean }

Example response

{
  "sessions": [
    {
      "id": 42,
      "title": "Pork Shoulder",
      "description": "1.25kg, Big Green Egg",
      "start": "2026-06-13T08:00:00Z",
      "end": null,
      "in_progress": true,
      "device_uuids": ["abc-123"]
    }
  ],
  "limit_applied": 20
}
get_session_detail

Session metadata โ€” title, timing, devices, channels, and cook notes. Use when you don't need temperature data.

1 call
{ session_id: number }

Example response

{
  "id": 42,
  "title": "Pork Shoulder",
  "description": "1.25kg, Big Green Egg",
  "start": "2026-06-13T08:00:00Z",
  "end": null,
  "in_progress": true,
  "duration_minutes": 300,
  "devices": [{ "uuid": "abc-123", "title": "Big Green Egg" }],
  "channels": [{ "label": "Probe 1", "device_uuid": "abc-123" }],
  "notes": [
    { "time": "2026-06-13T10:00:00Z", "text": "Stall started", "channel": null, "device_uuid": "abc-123" }
  ]
}
get_session_chart

Probe time-series only โ€” no metadata or notes. Use when you already have session context and just need the temperature readings.

1 call
{ session_id: number, include_drive?: boolean }

Example response

{
  "channels": [
    {
      "device_uuid": "abc-123",
      "label": "Probe 1",
      "unit": "C",
      "readings": [
        { "t": "2026-06-13T08:00:00Z", "temp": 20.1 },
        { "t": "2026-06-13T13:00:00Z", "temp": 74.4 }
      ]
    }
  ]
}
get_all_session_data

Full session data in one call โ€” metadata, cook notes, and complete probe time-series. Use for cross-session comparison or stall analysis where you need both context and temperature data.

2 calls
{ session_id: number, include_drive?: boolean }

Example response

{
  "session": {
    "id": 42,
    "title": "Pork Shoulder",
    "description": "1.25kg, Big Green Egg",
    "start": "2026-06-13T08:00:00Z",
    "end": null,
    "in_progress": true
  },
  "channels": [
    {
      "device_uuid": "abc-123",
      "label": "Probe 1",
      "unit": "C",
      "readings": [
        { "t": "2026-06-13T08:00:00Z", "temp": 20.1 },
        { "t": "2026-06-13T13:00:00Z", "temp": 74.4 }
      ]
    }
  ],
  "notes": [
    { "time": "2026-06-13T10:00:00Z", "text": "Stall started", "channel": null, "device_uuid": "abc-123" }
  ]
}

Examples

Ask questions about live cooks in plain language โ€” stall analysis, probe comparisons, session history, and more.

Claude Code analysing a current Fireboard cook โ€” showing pit temperature, pork internal temp, stall analysis, rate of rise, and estimated finish time

Claude Code giving a full cook analysis โ€” stall history, rate of rise, and ETA.

ChatGPT answering 'How long has the stall been going for?' with a detailed breakdown of probe temperatures and stall duration from live Fireboard data

ChatGPT analysing a pork shoulder stall using live Fireboard probe data.

Connect to an AI assistant

Add this server to your AI assistant using the MCP endpoint above. Each assistant has its own setup flow:

All clients use OAuth 2.0 โ€” after adding the endpoint, you'll be prompted to sign in with your Fireboard credentials. Your credentials are sent directly to the Fireboard API and are not stored. Only the resulting access token is held in memory to authenticate tool calls on your behalf.

ChatGPT

Go to Settings โ†’ Apps โ†’ Advanced Settings and enable Developer Mode. Then click Create app, set the connection type to Server URL, paste the MCP endpoint, and set authentication to OAuth. ChatGPT will auto-discover the OAuth settings. Acknowledge the custom server warning and click Create.

ChatGPT Apps SDK docs โ†’

Claude (claude.ai)

Go to Settings โ†’ Integrations, click Add integration, and paste the MCP endpoint URL. Claude will prompt you to authenticate with your Fireboard credentials before the tools become available.

Claude MCP integrations docs โ†’

Claude Code (CLI)

Run this command in your terminal:

claude mcp add --transport http fireboard-mcp https://fireboard-mcp.up.railway.app/mcp

Claude Code will open a browser window to complete the OAuth login with your Fireboard credentials on first use.

Claude Code MCP docs โ†’

Gemini (Google)

MCP support is available in Gemini via the Google AI Studio and the Gemini API using the Agent Development Kit (ADK). Add the MCP endpoint as a remote tool โ€” the OAuth flow will be triggered on first use.

Gemini ADK MCP tools docs โ†’