# embedcalc-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/ethan-hub26/embedcalc-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/embedcalc-mcp

## Description
Deterministic embedded-engineering tools: CRC to C, CAN/UART/I2C timing, struct layout, IEEE-754.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "embedcalc-mcp": {
    "command": "npx",
    "args": ["-y","embedcalc-mcp"]
  }
}
```

## Documentation & README

# embedcalc-mcp

**Exact embedded-engineering math for AI agents.** An MCP server with 38 deterministic calculators, code generators, and schematic checks — so Claude, Cursor, or any MCP-enabled agent computes CRC check values, CAN timing registers, and struct padding, and reviews schematics for MCU wiring mistakes, instead of hallucinating them.

[![npm](https://img.shields.io/npm/v/embedcalc-mcp)](https://www.npmjs.com/package/embedcalc-mcp)
[![MCP Registry](https://img.shields.io/badge/MCP_Registry-io.github.ethan--hub26%2Fembedcalc--mcp-blue)](https://registry.modelcontextprotocol.io)
[![license](https://img.shields.io/npm/l/embedcalc-mcp)](./LICENSE)

## Why

LLMs are confidently wrong about exactly the math that bricks boards. Ask any model for a CRC-16/MODBUS check value, an STM32 `CAN_BTR` register for 500 kbit/s @ 36 MHz, or the padded size of a struct — you'll get a plausible-looking wrong answer often enough that you can't trust any of them. The failure mode is the worst kind: the answer *looks* right.

This server gives the model tools instead. Every tool is a pure, deterministic implementation pinned with test vectors (standard CRC check values, oracle fixtures, IPC/ASTM published numbers — 174 tests).

## Install

**Claude Code:**

```bash
claude mcp add embedcalc -- npx -y embedcalc-mcp
```

**Claude Desktop / Cursor / any MCP client** (JSON config):

```json
{
  "mcpServers": {
    "embedcalc": { "command": "npx", "args": ["-y", "embedcalc-mcp"] }
  }
}
```

No API key, no account. Runs locally over stdio. (The optional `find_component` tool queries embedcalc.com over the network; everything else is offline.)

## Tools (38)

| Domain | Tools |
|---|---|
| **Code generation** | `crc_to_c` (7 presets + custom Rocksoft params → compilable table-driven C with check value) · `regmap_to_c` (LSB-first fields → shift/mask defines + bit-field struct) · `bitfield_macro` |
| **Timing** | `can_bit_timing` (bxCAN `BTR` / FDCAN `NBTP` / MCP2515 `CNF1-3`) · `uart_baud` (STM32 `BRR` + error %) · `i2c_timing` (pull-up range + STM32 `TIMINGR`) · `spi_timing` · `i2s_clocks` · `lin_timing` · `rs485_bus` · `modbus_rtu_timing` (t1.5/t3.5) · `ring_buffer_size` |
| **Data representation** | `qformat_convert` (Qm.n fixed point) · `ieee754_convert` (float/double, hex↔decimal↔bin) · `number_base_convert` (32-bit two's complement) · `endian_swap` (incl. Modbus BADC/CDAB) · `struct_layout` (C parser → offsets/padding/size, 32-bit MCU model) |
| **Electronics** | `eseries_nearest` (E6/E12/E24/E96) · `resistor_code` (color bands + SMD/EIA-96) · `crystal_load_caps` · `lm317` · `attenuator_pad` (T/π) · `junction_temp` · `microstrip_impedance` (IPC-2141) · `pcb_trace_width` (IPC-2221) · `awg_wire` · `ne555` · `dcdc_converter` (buck/boost/inverting) · `op_amp` (gain + bandwidth) · `rc_filter` (1st-order LP/HP cutoff) · `bjt_bias` (voltage-divider operating point) · `mosfet_switch` (low-side conduction + gate drive) · `zener_reg` (shunt regulator) |
| **Components** | `find_component` — real, in-stock MPNs + buy links from a computed value (parametric search) |
| **Schematic review** | `review_schematic` (deterministic MCU board-rule check: decoupling, bulk cap, floating pins, I2C pull-up, reset, output conflict, power short + interface packs auto-detected from net names — USB ESD/VBUS, CAN termination/transceiver, RS-485 termination/bias, SWD connector/reset, crystal load caps — + polarity & voltage/power derating rules (schema-optional ratings) + STM32F4/STM32F1/ESP32/NuMicro family rules; unevaluable rules reported as `skipped`) · `parse_kicad` (KiCad netlist export → standard schema, auto-parses voltage ratings) · `get_extraction_guide` (schematic image → schema, filled by the vision model) · `list_schematic_rules` |

All tool names are prefixed `embedcalc_` (e.g. `embedcalc_crc_to_c`).

## Example prompts

> "Give me MODBUS CRC-16 as a C function" → table-driven C, check("123456789") = `0x4B37` embedded for on-target verification
>
> "CAN 500 kbit/s on STM32F103, APB1 36 MHz, sample point 87.5%" → `CAN_BTR = 0x00050008` (BRP=9, TS1=6, TS2=1)
>
> "How big is `struct { uint8_t flags; uint32_t ts; uint16_t id; }` on a Cortex-M?" → 12 bytes, 5 of them padding, with the layout table
>
> "Encode −0.25 in Q1.14" / "What float is 0x7FC00000?" / "Nearest E96 to 12.3 kΩ?"

## Accuracy

- CRC: all 7 presets verified against standard check values for `"123456789"`
- CAN: solver output byte-identical to the interactive calculators at [embedcalc.com](https://www.embedcalc.com) (oracle fixtures in `tests/fixtures/`)
- IEEE-754 / AWG / IPC: pinned to reference constants and published standard values
- `struct_layout` uses a 32-bit MCU model (pointers 4 B; `double`/`int64` size 8, align 4) — stated in the tool description so the model can caveat it

Run it yourself: `npm install && npm run build && npm test` (174 tests, includes a stdio end-to-end pass that spawns the built server and calls the tools).

## Related

- [embedcalc.com](https://www.embedcalc.com) — the same 60+ calculators as free interactive tools, no AI required
- Found a calculation LLMs keep getting wrong? [Open an issue](https://github.com/ethan-hub26/embedcalc-mcp/issues) — collecting candidates for the next batch.

## License

MIT

