About Dive Kit
Experimental. Plan scuba decompression dives, gas blends, and gas use with Dive Kit. Reference only
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.divekit.app/mcpclaude mcp add --transport http app-divekit https://mcp.divekit.app/mcp{"mcpServers":{"app-divekit":{"type":"http","url":"https://mcp.divekit.app/mcp"}}}Open in Cursor{"servers":{"app-divekit":{"type":"http","url":"https://mcp.divekit.app/mcp"}}}Open in VS Code{"mcpServers":{"app-divekit":{"type":"http","url":"https://mcp.divekit.app/mcp"}}}{"mcpServers":{"app-divekit":{"serverUrl":"https://mcp.divekit.app/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
18| Parameter | Type | Required | Description |
|---|---|---|---|
| ccr | object | No | The rebreather (mode ccr only). |
| ccr.o2_size | number | No | Oxygen cylinder: litres (metric) or ft³ rated at 3000 psi (imperial). Default 3 L. |
| ccr.setpoints | object | No | Loop setpoints in bar. |
| ccr.setpoints.deco | number | No | Deco setpoint in bar, used where ccr_deco_schedule has no step. Default 1.4. |
| ccr.setpoints.bottom | number | No | Bottom setpoint in bar, the level default. Default 1.0. |
| ccr.setpoints.descent | number | No | Descent setpoint in bar. Default 0.7. |
| ccr.loop_volume | number | No | Loop volume, litres in both unit systems, 2 to 15. Default 6. |
| ccr.diluent_size | number | No | Diluent cylinder: litres (metric) or ft³ rated at 3000 psi (imperial). Default 3 L. |
| ccr.o2_start_pressure | number | No | Oxygen cylinder fill (bar or psi). Default 232 bar (3365 psi). |
| ccr.diluent_helium_pct | number | No | Onboard diluent helium percent. Default 0. |
| ccr.diluent_oxygen_pct | number | No | Onboard diluent oxygen percent. Default 21. |
| ccr.descent_switch_depth | number | No | Depth (m or ft) where the descent setpoint hands over to bottom, first descent only. Default 18 m (60 ft). |
| ccr.diluent_breathable_oc | boolean | No | true if the BOV or a regulator can breathe the onboard diluent open circuit. It then joins the bailout pool last. Default false. |
| ccr.diluent_start_pressure | number | No | Diluent cylinder fill (bar or psi). Default 232 bar (3365 psi). |
| mode | enum | No | oc (open circuit, default) or ccr (closed-circuit rebreather). Set ccr for every rebreather plan: the ccr, ccr_deco_schedule, ccr_dilout_switches and bailout fields need it. On ccr, `cylinders` are the open-circuit bailout gases; the rig itself is in `ccr`.oc | ccr |
| ppo2 | object | No | PPO₂ limits in bar. |
| ppo2.min | number | No | Lowest PPO₂ in bar before a hypoxia warning, 0.16 to 0.21. Warnings only. Default 0.18. |
| ppo2.max_all | number | No | One PPO₂ cap in bar for every gas, 1.0 to 1.6 (e.g. 1.4 for recreational nitrox). Sets all three bands; a band field given too wins for its band. |
| ppo2.max_28_to_44pct_o2 | number | No | PPO₂ cap in bar for gases from 28% to under 45% O₂, 1.0 to 1.6. Default 1.5. |
| ppo2.max_under_28pct_o2 | number | No | PPO₂ cap in bar for gases under 28% O₂, 1.0 to 1.6. Sets their MOD and switch depth. Default 1.4. |
| ppo2.max_45pct_o2_and_up | number | No | PPO₂ cap in bar for gases of 45% O₂ and over, 1.0 to 1.6. Default 1.6. |
| rates | object | No | Ascent and descent rates, per units. |
| rates.descent | number | No | Descent rate (m/min or ft/min), 1 to 100 m/min. Default 20 m/min (66 ft/min). |
| rates.ascent_deep | number | No | Ascent rate below rate_change_depth (m/min or ft/min), 1 to 100 m/min. Default 9 m/min (30 ft/min). |
| rates.ascent_shallow | number | No | Ascent rate from rate_change_depth to the surface (m/min or ft/min), 1 to 100 m/min. Default 3 m/min (10 ft/min). |
| rates.rate_change_depth | number | No | Depth where the ascent rate changes (m or ft), 3 to 200 m. Default 6 m (20 ft). |
| stops | object | No | Stop grid and stop-time rounding. |
| stops.stop_spacing | number | No | Distance between stops: 3, 6 or 9 m; 10, 20 or 30 ft. Default 3 m (10 ft). |
| stops.time_rounding | enum | No | 1s, 30s or 1min. Applied inside the engine; a stop is never shorter than the obligation. Default 1min.1s | 30s | 1min |
| stops.last_stop_depth | number | No | Final stop depth: 3, 4.5 or 6 m; 10, 15 or 20 ft. Default 6 m (20 ft). |
| units | enum | No | metric (m, bar, L, L/min, °C) or imperial (ft, psi, ft³, ft³/min, °F). Applies to every input and output value except PPO₂/setpoints (bar), mixes (%), density (g/L). Default metric.metric | imperial |
| levels | array | Yes | Dive levels in the order dived, 1 to 20. The first is level_number 1. |
| bailout | object | No | ccr only: the bailout view. |
| bailout.view | enum | No | ccr: which ascent the table shows. loop (default), end_of_profile, after_level, at_run_time, on_ascent. The worst-case bailout check runs on every view.loop | end_of_profile | after_level | at_run_time | on_ascent |
| bailout.depth | number | No | For on_ascent: depth (m or ft) the diver leaves the loop on the final ascent. |
| bailout.level_number | integer | No | For after_level: the level (1-based) the diver bails at the end of. |
| bailout.run_time_min | number | No | For at_run_time: minutes on the Run clock. |
| reserve | object | No | Gas reserve rule. Moves the gas status and warnings, never the stops. |
| reserve.rule | enum | No | thirds, fourths, fifths, sixths or fixed. Default thirds. Below 50 bar (725 psi) is always critical.thirds | fourths | fifths | sixths | fixed |
| reserve.fixed_pressure | number | No | Reserve for rule fixed (bar or psi, per units). Default 50 bar (725 psi). |
| audience | enum | No | Optional: who the answer is for, from the conversation. beginner: new to deco, plain words. recreational (default): some training. technical: trained deco or CCR diver, terms and tables. Shapes the wording only, never a number.beginner | recreational | technical |
| behavior | object | No | Profile and model switches. |
| behavior.o2_narcotic | boolean | No | Count oxygen in END. END and warnings only. Default false. |
| behavior.stay_on_loop | boolean | No | ccr: true (default) keeps the whole ascent on the loop; false lets an OC deco gas take over where its PPO₂ is higher. Not carried in share links. |
| behavior.include_travel_in_level_time | boolean | No | true: level time includes the descent to it (dive-computer runtime style). Default false. |
| cylinders | array | Yes | Every open-circuit cylinder carried: back gas, stages, deco gases; on ccr, bailout gases. 1 to 10. Give preset or cylinder_size and start_pressure when known; omitted ones default (an AL80, 11.1 L at 3000 psi) and the result marks them. |
| modifiers | object | No | Plan modifiers: a stress breathing burst (gas only) and a delay before the ascent (moves the schedule). |
| modifiers.deco_sac | number | No | Deco SAC override for the whole plan (L/min or ft³/min). Default gas_consumption.deco_sac. |
| modifiers.delay_min | number | No | A hold at depth before the ascent starts, 0 to 60 minutes. Moves the schedule. Default 0. |
| modifiers.stress_sac | number | No | Hard-breathing surface rate, SAC (L/min or ft³/min, per units), from the end of the bottom (on bailout: from leaving the loop), gas only. Needs stress_minutes or stress_whole_ascent. |
| modifiers.working_sac | number | No | Working SAC override for the whole plan (L/min or ft³/min). Default gas_consumption.working_sac. |
| modifiers.stress_minutes | number | No | Minutes the stress_sac burst lasts, 1 to 60. |
| modifiers.stress_whole_ascent | boolean | No | true: the stress_sac burst lasts to the surface. Default false. |
| plan_name | string | No | Short human label shown in the approval card; fill it first, e.g. 40m 20min air+EANx50. Also titles the plan table and share link, which keep its first 24 characters (a longer name is cut, never refused). |
| scenarios | array | No | Which plans to compute, default ["base"]. base; deeper_3m, deeper_5m (imperial: deeper_10ft, deeper_20ft), longer_3min, longer_5min, deeper_and_longer_3, deeper_and_longer_5 (applied to the deepest level); lost:<cylinder id> (that cylinder never carried); custom:<name> (defined in contingencies); gf:<low>/<high> (e.g. gf:40/85), last_stop:<depth> (3, 4.5, 6 m or 10, 15, 20 ft) and stop_rounding:<1s|30s|1min> (the base plan with that one setting changed, to compare settings in one call); all (not the variants). Each one returns its own table and a comparison row. Up to 10. Ask for more in a later call. |
| gas_switch | object | No | Gas switching. |
| gas_switch.switch_at | enum | No | mod: switch at the deco gas MOD (default). stop: at the next stop.mod | stop |
| gas_switch.switch_time_s | number | No | Seconds held at each OC switch on the old gas, 0 to 300 in 30 s steps. Default 0. |
| gas_switch.when_cylinder_empty | enum | No | show_shortfall (default): stay on it and report how much more gas is needed. switch_gas: move to the richest safe gas left.show_shortfall | switch_gas |
| repetitive | object | No | Repetitive dive: the previous dive and the surface interval. |
| repetitive.previous_share_url | string | No | The share link of the previous dive's plan_dive result. Its tissue loading seeds this dive. |
| repetitive.surface_interval_min | number | Yes | Surface interval since the previous dive, 15 to 1440 minutes. |
| descent_gas | string | No | oc only. Cylinder id of a travel gas for the descent, for a hypoxic bottom mix (e.g. 12/60) that cannot be breathed near the surface. When level 1 is deeper than that gas's MOD, a 0-minute level on it at its MOD (whole m or ft) is added before level 1, and the result numbers that level first. Default none. |
| environment | object | No | Water and altitude. |
| environment.water | enum | No | Water type, from its density: en13319 (EN 13319, the dive computer standard) 10.00 m per bar, salt 9.95, fresh 10.20, red_sea 9.92. Default en13319.salt | fresh | en13319 | red_sea |
| environment.altitude | number | No | Surface altitude (m or ft, per units), 0 to 10000 m (0 to 32800 ft). Default 0. |
| environment.temperature | number | No | Water temperature for gas density only, -2 to 40 °C (28 to 104 °F). Never moves stops. Default 15 °C (59 °F). |
| contingencies | array | No | Custom contingencies, up to 6, each requested with scenarios "custom:<name>" (or "all"). |
| oxygen_breaks | object | No | Oxygen breaks. |
| oxygen_breaks.enabled | boolean | No | Insert oxygen breaks on high-PPO₂ stops. Default false. |
| oxygen_breaks.min_ppo2 | number | No | PPO₂ in bar at or above which a stop counts toward the break clock, 0.8 to 1.8. Default 1.4. |
| oxygen_breaks.o2_minutes | number | No | Minutes on high PPO₂ before a break, 5 to 30. Default 20. |
| oxygen_breaks.apply_on_loop | boolean | No | ccr: also break on the loop. Not carried in share links. Default false. |
| oxygen_breaks.break_minutes | number | No | Break length in minutes, 1 to 10. Default 5. |
| oxygen_breaks.loop_setpoint | number | No | ccr: loop setpoint in bar during a break. Default 0.7. |
| table_columns | object | No | Extra table columns. PPO₂ is always shown. |
| table_columns.cns | boolean | No | Add a running CNS column. Default false. |
| table_columns.gas_remaining | boolean | No | Add a gas-remaining column (bar or psi). Default false. |
| gas_consumption | object | No | Breathing rates. |
| gas_consumption.deco_sac | number | No | SAC from the first stop up (L/min or ft³/min). Default 15 L/min (0.53 ft³/min). Gas figures only. |
| gas_consumption.working_sac | number | No | Surface air consumption (SAC, also called RMV) for descent, bottom and the deep ascent (L/min or ft³/min, per units), 1 to 200 L/min (0.05 to 7.1 ft³/min). Default 20 L/min (0.71 ft³/min). Gas figures only. |
| gas_consumption.ccr_metabolic_o2 | number | No | ccr: planning assumption for oxygen use, L/min in both unit systems, 0.4 to 2.0. Default 0.85. |
| response_format | enum | No | concise: plan table, gas, warnings, scenario summary. detailed: adds every setting used, per-level NDL, full warning details and the bailout table. Default concise.concise | detailed |
| gradient_factors | object | No | Gradient factors. Lower is more conservative. Default 50/80. If high cannot surface the plan, the engine raises it and warns. |
| gradient_factors.low | number | No | GF low, percent, 10 to 100. Sets the first stop depth. Default 50. |
| gradient_factors.high | number | No | GF high, percent, 10 to 100. Sets the shallow stops and surfacing margin. Default 80. |
| ccr_deco_schedule | array | No | ccr deco setpoint steps, up to 10. Default [40 m: 1.5, 23 m: 1.6]. Send [] for the single ccr.setpoints.deco. |
| warning_thresholds | object | No | Warning thresholds. Warnings only, never the stops. |
| warning_thresholds.otu | number | No | OTU warning, 200 to 500. Default 300. |
| warning_thresholds.cns_pct | number | No | CNS percent warning, 50 to 100. Default 80. |
| warning_thresholds.end_max | number | No | Highest END before a warning (m or ft, per units), 20 to 100 m. Default 30 m (100 ft). |
| warning_thresholds.density_warning | number | No | Gas density warning in g/L, 3 to 8. Default 5.2. |
| warning_thresholds.density_critical | number | No | Gas density critical in g/L, 3 to 8; also vetoes a gas in auto. Default 6.2. |
| ccr_dilout_switches | array | No | ccr: at each depth and shallower, the loop breathes that cylinder as diluent (a dilout). Up to 6. Default none. |
Details
The maintainer has not added details yet. Check the README in the repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.