MCP-Relational-Data/QUICKSTART.md

6.1 KiB
Executable File

Quickstart

Get from git clone to running calculations in under 2 minutes.


1. Install Rust

If you don't have Rust yet:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Verify:

rustc --version

2. Get the Code

git clone https://git.dcos.net/dcosnet/MCP-Relational-Data.git
cd MCP-Relational-Data

3. Build & Run the GUI

cargo run

A desktop window opens with 8 calculator panels in a two-column layout. Type into any input field and results update in real time. No "Calculate" button needed.

Try It: Ohm's Law

  1. Find the Ohm's Law & Watts Law panel (top-left).
  2. Type 2 in the Current (A) field.
  3. Type 4 in the Resistance (Ω) field.
  4. Instantly see: Power = 16 Watts, Voltage = 8 Volts.

Try It: AI Token Cost

  1. Find the AI Token Cost Estimator panel.
  2. Click or to cycle through models (GPT-4o, Claude 3.5 Sonnet, etc.).
  3. Type 1000000 in Input Tokens and 500000 in Output Tokens.
  4. See the total cost appear (e.g., $7.50 for GPT-4o).

Try It: Break-Even

  1. Find the Break-Even Analysis panel.
  2. Enter Fixed Costs: 10000, Price per Unit: 50, Variable Cost: 20.
  3. Read: you need to sell 334 units, generating $16,666.67 in revenue, to break even.

Try It: Solar Panel Revenue

  1. Find the Solar Panel Revenue panel.
  2. Enter: 20 panels, 400W/panel, 5 sun hours, $0.12/kWh sell-back, $12,000 system cost, 85% efficiency.
  3. See payback period and 25-year projected revenue.

Try It: 3D Print Cost

  1. Find the 3D Print Cost Analysis panel.
  2. Enter: $25/kg filament, 50g print, 3h print time, 200W printer, $0.12/kWh, 10% failure rate, $15 sell price.
  3. See material cost, energy cost, total cost per print, profit, and margin.

4. Use the Daemon Instead

The daemon is a stdin/stdout JSON API — suitable for scripting, MCP servers, or piping into other programs.

Start It

cargo run -- --daemon

It waits for JSON on stdin. Status messages appear on stderr.

In Another Terminal (or pipe)

# List tools
echo '{"tool":"list"}' | cargo run -- --daemon

# Calculate Ohm's Law
echo '{"tool":"ohm","current":2,"resistance":4}' | cargo run -- --daemon

# Calculate margin
echo '{"tool":"margin","cost":50,"sell":75}' | cargo run -- --daemon

# Get help for a specific tool
echo '{"tool":"help","name":"token_cost"}' | cargo run -- --daemon

Build a Slim Binary (No GUI Dependencies)

If you only need the daemon and want a smaller, faster build:

cargo build --release --no-default-features --features daemon
./target/release/mcp-relational-data --daemon

This skips pulling in iced and its entire graphics stack.

5. Use It From Another Program

Python Example

import subprocess, json

def calculate(tool: str, **params) -> dict:
    params["tool"] = tool
    proc = subprocess.run(
        ["./target/release/mcp-relational-data", "--daemon"],
        input=json.dumps(params),
        capture_output=True, text=True
    )
    return json.loads(proc.stdout.strip())

# Ohm's Law: I=2A, R=4Ω → V=8V, P=16W
result = calculate("ohm", current=2, resistance=4)
print(result)
# {"tool":"ohm","power":"16 Watts(W)","current":"2 Amps(A)",
#  "resistance":"4 Ohms(Ω)","voltage":"8 Volts(V)"}

# How much does 1M tokens cost on Claude 3.5 Sonnet?
result = calculate("token_cost", model="claude 3.5 sonnet",
                   input_tokens=1_000_000, output_tokens=500_000)
print(result)
# {"tool":"token_cost","model":"Claude 3.5 Sonnet",
#  "input_cost":"$3.00","output_cost":"$7.50","total_cost":"$10.50"}

Shell Script Example

#!/bin/bash
# gpu_power_cost.sh — estimate annual cost of running a GPU server

RESULT=$(echo '{"tool":"electricity","watts":700,"hours":24,"days":30,"rate":0.12}' \
  | ./target/release/mcp-relational-data --daemon)

YEARLY=$(echo "$RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['yearly_cost'])")
echo "Annual electricity cost for 700W GPU: $YEARLY"

Node.js Example

const { spawn } = require('child_process');

function calculate(tool, params) {
  return new Promise((resolve, reject) => {
    const proc = spawn('./target/release/mcp-relational-data', ['--daemon']);
    let out = '';
    proc.stdout.on('data', d => out += d);
    proc.on('close', () => {
      try { resolve(JSON.parse(out)); }
      catch (e) { reject(e); }
    });
    proc.stdin.write(JSON.stringify({ tool, ...params }));
    proc.stdin.end();
  });
}

calculate('break_even', { fixed: 10000, price: 50, variable: 20 })
  .then(r => console.log(`Break even at ${r.units} units`));

6. Daemon Protocol Reference

Every interaction is one JSON line in, one JSON line out.

Request Format

{"tool": "<name>", ...params}

Special Tools

Tool Purpose Params
list List all available calculators (none)
help Get description + param list for a tool name

Calculation Tools

Tool Required Params
ohm Any 2 of: power, current, resistance, voltage
margin cost, sell
roi investment, revenue
token_cost model (optional, defaults to GPT-4o), input_tokens, output_tokens
electricity watts, hours, days (default 30), rate
break_even fixed, price, variable
solar panels, panel_watts, sun_hours, rate, system_cost, efficiency (default 80)
print3d filament_cost_kg, print_weight_g, print_time_h, printer_watts, elec_rate, failure_rate, sell_price

Error Handling

Invalid JSON or unknown tools return:

{"error": "invalid JSON: expected value at line 1 column 2"}
{"error": "unknown tool: \"bogus\". Send {\"tool\":\"list\"} for options."}

7. CLI Quick Reference

mcp-relational-data                  # Launch GUI
mcp-relational-data --daemon         # Start JSON daemon
mcp-relational-data --help           # Show help
mcp-relational-data --version        # Print version

That's it. You're up and running.