Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.ethan-hub26/embedcalc-mcp

NPM · EMBEDCALC-MCP · SCANNED SEP 24

Embedded calculators, codegen & schematic review: CRC, timing, struct, IEEE-754, KiCad.

Available components

0 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9350 tokens (~246/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
  • Structured output schemas are declared (89% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 38 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.ethan-hub26/embedcalc-mcp server?

io.github.ethan-hub26/embedcalc-mcp runs locally as an npm package, launched with npx -y embedcalc-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · embedcalc-mcp

# add to Claude Code
claude mcp add ethan-hub26-embedcalc-mcp -- npx -y embedcalc-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "ethan-hub26-embedcalc-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "embedcalc-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ethan-hub26-embedcalc-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "embedcalc-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add ethan-hub26-embedcalc-mcp -- npx -y embedcalc-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ethan-hub26-embedcalc-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "embedcalc-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ethan-hub26-embedcalc-mcp --command npx --arg -y --arg embedcalc-mcp
# ~/.hermes/config.yaml
mcp_servers:
  ethan-hub26-embedcalc-mcp:
    command: "npx"
    args: ["-y", "embedcalc-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ethan-hub26-embedcalc-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "embedcalc-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add ethan-hub26-embedcalc-mcp -t stdio -c npx -a -y embedcalc-mcp
// mcp.json
{
  "mcpServers": {
    "ethan-hub26-embedcalc-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "embedcalc-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 23 Sept 26 0
    • Stability: 0.97 → pass security
  • 22 Sept 26 +1
    • Security disclosure: unverified → fail ▼ functional
  • 21 Sept 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 16 Sept 26 0
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Sept 2026 · Analysed npm/embedcalc-mcp@0.6.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 96 packages
Packages resolved 96
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 38 exposed · ~9,350 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
embedcalc_attenuator_pad ~167

Design T-pad and Pi-pad resistive attenuators for a given attenuation and system impedance. Args: attenuation_db, impedance_ohm (default 50). Returns (structured): { t_series_ohm, t_shunt_ohm, pi_shunt_ohm, pi_series_ohm }. Example: 3 dB @ 50 Ω -> T: 8.55 Ω series ×2 + 141.9 Ω shunt; Pi: 292.4 Ω shunt ×2 + 17.61 Ω series. Snap values with embedcalc_eseries_nearest.

NameTypeReqDescription
attenuation_dbnumberyesAttenuation in dB
impedance_ohmnumber–System impedance (50/75 Ω)
NameTypeReqDescription
pi_series_ohmnumberyesPi-pad: center series resistor
pi_shunt_ohmnumberyesPi-pad: each of the two shunt resistors
t_series_ohmnumberyesT-pad: each of the two series resistors
t_shunt_ohmnumberyesT-pad: center shunt resistor

No examples provided.

embedcalc_awg_wire ~233

AWG wire properties (ASTM B258) and round-trip voltage drop for a copper pair: diameter, area, loop resistance (2× length, go & return), drop %, and a PASS/WARNING/FAIL verdict (<3% / 3-5% / >5%). Args: awg (e.g. 20), supply_v, current_a, length_m (one-way), temp_c (default 20). Returns (structured): { diameter_mm, area_mm2, loop_resistance_ohm, voltage_drop_v, drop_percent, verdict }. Example: AWG20, 5 V, 2 A, 1 m -> 0.067 Ω loop, 2.7% drop, PASS.

NameTypeReqDescription
awgnumberyesWire gauge AWG number
current_anumberyesLoad current in A
length_mnumberyesOne-way cable length in m (loop = 2×)
supply_vnumberyesSupply voltage in V
temp_cnumber–Conductor temperature in °C
NameTypeReqDescription
area_mm2numberyes–
diameter_mmnumberyes–
drop_percentnumberyes–
loop_resistance_ohmnumberyes–
verdictstringyes–
voltage_drop_vnumberyes–

No examples provided.

embedcalc_bitfield_macro ~164

Decompose a 32-bit register value into set bits and generate a C macro of OR'd (1U << n) terms, plus decimal/binary/popcount views. Args: - value_hex (string): 32-bit value, e.g. '0x8001'. - macro_name (string, optional): default 'REG_VAL'. Returns (structured): { dec, hex, bin, ones_count, c_macro }. Example: '0x8001' -> #define REG_VAL ((1U << 0) | (1U << 15)), 2 bits set.

NameTypeReqDescription
macro_namestring–C macro name (default REG_VAL)
value_hexstringyes32-bit register value in hex
NameTypeReqDescription
binstringyes–
c_macrostringyes–
decstringyes–
hexstringyes–
ones_countnumberyes–

No examples provided.

embedcalc_bjt_bias ~364

DC operating point of an NPN voltage-divider (four-resistor) bias network, including base-current loading. Vth = Vcc*R2/(R1+R2), Rth = R1||R2, Ib = (Vth-Vbe)/(Rth+(b+1)*Re), Ic = b*Ib, Vce = Vcc - Ic*Rc - Ie*Re. Region: cutoff / active / saturation (Vce <= 0.2 V). Args: vcc_v, r1_ohm (top, base-to-Vcc), r2_ohm (bottom, base-to-GND), rc_ohm, re_ohm (default 0), beta (default 100), vbe_v (default 0.7). Returns (structured): { ib_a, ic_a, ie_a, vb_v, ve_v, vc_v, vce_v, region }. Example: Vcc=12, R1=47k, R2=10k, Rc=1k, Re=220, b=100 -> Ic 4.61 mA, Vce 6.36 V, active.

NameTypeReqDescription
betanumber–DC current gain hFE
r1_ohmnumberyesUpper divider resistor (base to Vcc)
r2_ohmnumberyesLower divider resistor (base to GND)
rc_ohmnumberyesCollector resistor in ohms
re_ohmnumber–Emitter resistor in ohms
vbe_vnumber–Base-emitter drop in V
vcc_vnumberyesSupply voltage Vcc in V
NameTypeReqDescription
ib_anumberyes–
ic_anumberyes–
ie_anumberyes–
regionstringyes–
vb_vnumberyes–
vc_vnumberyes–
vce_vnumberyes–
ve_vnumberyes–

No examples provided.

embedcalc_can_bit_timing ~530

Compute exact CAN bit timing (BRP, segments, SJW, register values) for STM32 bxCAN, STM32 FDCAN (nominal/arbitration phase), and MCP2515 from clock, bitrate, and target sample point. Searches all valid prescaler/segment combinations and returns, per controller, the configuration whose sample point is closest to the target (ties: more TQ per bit, then smaller BRP). Register values are ready to write: bxCAN CAN_BTR, FDCAN FDCAN_NBTP, MCP2515 CNF1/CNF2/CNF3 (BTLMODE=1). All values follow the controller datasheets; BRP/TS values are 1-based (register encoding = value - 1 is already applied inside the hex words). Args: - clock_hz (int): controller input clock in Hz. bxCAN: APB1; FDCAN: kernel clock; MCP2515: crystal Fosc (MCP2515 uses TQ = 2*BRP/Fosc). - bitrate_bps (int): nominal bitrate in bit/s (classic CAN: up to 1000000). - sample_point_percent (50-95, default 87.5): CiA 301 recommends 87.5. Returns (structured): { bxcan, fdcan, mcp2515 } — each a timing object or null when the clock/bitrate ratio has no exact integer divider for that controller (a null means: change the clock or bitrate, do not approximate). Examples: - "500 kbit/s on STM32F103 (APB1 36 MHz)" -> clock_hz=36000000, bitrate_bps=500000 - "1 Mbit/s, 16 MHz MCP2515, sample point 75%" -> clock_hz=16000000, bitrate_bps=1000000, sample_point_percent=75 Do not guess CAN timing registers — call this tool.

NameTypeReqDescription
bitrate_bpsintegeryesTarget nominal bitrate in bit/s, e.g. 500000 for 500 kbit/s.
clock_hzintegeryesCAN controller input clock in Hz (bxCAN: APB1 clock; FDCAN: kernel clock; MCP2515: crystal Fosc). E.g. 36000000 for 36 MHz.
sample_point_percentnumber–Target sample point in percent. CiA 301 recommends 87.5 (the default).
NameTypeReqDescription
bxcan–yesSTM32 bxCAN solution, or null if no exact divider exists
fdcan–yesSTM32 FDCAN nominal (arbitration phase) solution, or null
mcp2515–yesMCP2515 solution (BTLMODE=1, SAM=0), or null

No examples provided.

embedcalc_crc_to_c ~549

Generate a complete, compilable C implementation (256-entry lookup table + compute function) for any CRC-8/16/32, plus its standard check value. Use a preset for common CRCs, or specify the Rocksoft model parameters (width/poly/init/reflect-in/reflect-out/xor-out) for a custom CRC. The generated code embeds check("123456789") so the result can be verified on target. Args: - preset (optional): one of CRC-8, CRC-8/MAXIM, CRC-16/CCITT, CRC-16/ARC, CRC-16/MODBUS, CRC-32, CRC-32/BZIP2. Overrides all other args. - bits (8|16|32), poly_hex (e.g. '0x1021'): required for a custom CRC. - init_hex, reflect_in, reflect_out, xor_out_hex: optional custom parameters (defaults: 0x0, false, false, 0x0). Returns (structured): { check_hex, config, c_code }. The text content is the C source itself. Examples: - "MODBUS RTU CRC in C" -> preset='CRC-16/MODBUS' - "CRC-16 poly 0x1021 init 0xFFFF, no reflection" -> bits=16, poly_hex='0x1021', init_hex='0xFFFF' Check values are exact (e.g. CRC-16/CCITT -> 0x29B1, CRC-32 -> 0xCBF43926); do not estimate CRCs — call this tool.

NameTypeReqDescription
bitsnumber–CRC width in bits (8, 16, or 32). Required when no preset is given.
init_hexstring–Initial CRC register value in hex (default 0x0).
poly_hexstring–Generator polynomial in normal (non-reflected) hex form, e.g. '0x1021'. Required when no preset is given.
presetstring–Standard CRC preset. If given, all other parameters are ignored. One of: CRC-8, CRC-8/MAXIM, CRC-16/CCITT, CRC-16/ARC, CRC-16/MODBUS, CRC-32, CRC-32/BZIP2
reflect_inboolean–Reflect each input byte (LSB-first processing). Default false.
reflect_outboolean–Reflect the final CRC before XOR-out. Default false.
xor_out_hexstring–Final XOR value in hex (default 0x0).
NameTypeReqDescription
c_codestringyesComplete, compilable C source: 256-entry lookup table + crcN_compute() function
check_hexstringyesCRC of the ASCII string "123456789" — the standard check value for verifying the parameters
configobjectyes–

No examples provided.

embedcalc_crystal_load_caps ~214

Compute the two external load capacitors for a crystal from its specified load capacitance: CL = C/2 + Cstray -> C = 2·(CL − Cstray). Args: load_capacitance_pf (from crystal datasheet, e.g. 18), stray_pf (PCB+pin stray, typ. 3-5). Returns (structured): { cap_each_pf }. Example: CL=18pF, stray=5pF -> 26 pF each side. Wrong load caps = frequency pulling; don't guess. To source the load capacitor, follow up with embedcalc_find_component (type=capacitor, value=cap_each_pf × 1e-12 farads) — returns MPN + buy link.

NameTypeReqDescription
load_capacitance_pfnumberyesCrystal's specified CL in pF
stray_pfnumber–Stray capacitance (PCB traces + MCU pins) in pF, typ. 3-5
NameTypeReqDescription
cap_each_pfnumberyes–

No examples provided.

embedcalc_dcdc_converter ~279

DC-DC converter design (CCM): duty cycle, minimum inductance, minimum output capacitance, input current, and peak switch current for buck, boost, or inverting buck-boost. Args: topology ('buck'|'boost'|'buckboost'), vin, vout, iout_a, freq_khz (default 100), ripple_current_pct (of Iout, default 30), ripple_voltage_mv (default 50). Returns (structured): { duty_percent, l_min_uh, c_min_uf, iin_a, i_peak_a }. Example: buck 12->5 V, 1 A, 100 kHz -> D=41.7%, L≥97.2 µH, C≥7.5 µF. Snap L/C with embedcalc_eseries_nearest.

NameTypeReqDescription
freq_khznumber–Switching frequency kHz
iout_anumberyesOutput current A
ripple_current_pctnumber–Inductor ripple current as % of Iout
ripple_voltage_mvnumber–Allowed output ripple voltage mV
topologystringyesConverter topology (buckboost = inverting)
vinnumberyesInput voltage V
voutnumberyesOutput voltage V (magnitude for inverting)
NameTypeReqDescription
c_min_ufnumberyes–
duty_percentnumberyes–
i_peak_anumberyes–
iin_anumberyes–
l_min_uhnumberyes–

No examples provided.

embedcalc_endian_swap ~177

Show a hex byte sequence in all endianness orderings: big (ABCD), little (DCBA), mid-little/byte-swapped halfwords (BADC), mid-big/halfword-swapped (CDAB). Args: hex (string) — e.g. '0x12345678' or 'DEADBEEF'; odd nibble counts get a leading zero. Returns (structured): { big, little, mid_little_badc, mid_big_cdab (null when < 4 bytes), bytes }. Example: 12345678 -> little 78563412, BADC 34127856, CDAB 56781234. Useful for Modbus register order and mixed-endian protocol debugging.

NameTypeReqDescription
hexstringyesHex byte sequence (with or without 0x)
NameTypeReqDescription
bigstringyes–
bytesarrayyesOriginal bytes, big-endian order
littlestringyes–
mid_big_cdabstring|nullyes–
mid_little_badcstring|nullyes–

No examples provided.

embedcalc_eseries_nearest ~241

Snap a computed resistor/capacitor/inductor value to the nearest purchasable E-series standard value (E6/E12/E24/E96) with the resulting error. Args: value (any unit — ohms, farads, henries), series ('E24' default; E96 for 1% resistors). Returns (structured): { standard, error_percent, series }. Example: 4.67e-6 H, E24 -> 4.7e-6 (+0.64%). LLMs frequently pick non-existent "standard" values — always snap computed values with this tool before choosing a part. To source a real, in-stock part for the standard value, follow up with embedcalc_find_component (type=resistor for ohms / capacitor for farads / inductor for henries; value=standard) — it returns manufacturer part numbers + buy links.

NameTypeReqDescription
seriesstring–E-series (E24=5%, E96=1% resistors)
valuenumberyesComputed value in base units (ohms/farads/henries)
NameTypeReqDescription
error_percentnumberyes–
seriesstringyes–
standardnumberyes–

No examples provided.

embedcalc_find_component ~539

Find real, in-stock components matching an electrical value via parametric distributor search — returns manufacturer part numbers and buy links ONLY (no price or stock data, by design). Args: - type: resistor | capacitor | inductor | ldo | mosfet | bjt. - value (number): resistor: resistance in ohms; capacitor: capacitance in farads (e.g. 1e-7 = 100 nF); inductor: inductance in henries (e.g. 1e-5 = 10 µH); ldo: fixed output voltage in volts; mosfet: minimum Vds rating in volts (N-channel); bjt: minimum Vce rating in volts (NPN). - Optional filters: tolerance_pct (R/C/L: keep this tolerance or tighter), min_power_w (resistor), min_voltage_v (capacitor rating), min_current_a (ldo/mosfet/bjt), max_rds_on_ohm (mosfet), min_hfe (bjt). - max_results (default 5). Returns (structured): { matched_value, parts: [{ mpn, manufacturer, description, buy_url }] }. For prices, follow the buy link — pricing is intentionally not returned. Examples: - "220 ohm 1% resistor" -> type='resistor', value=220, tolerance_pct=1 - "100 nF cap rated 16V+" -> type='capacitor', value=1e-7, min_voltage_v=16 - "3.3V LDO, 500 mA" -> type='ldo', value=3.3, min_current_a=0.5 Requires internet access (queries embedcalc.com).

NameTypeReqDescription
max_rds_on_ohmnumber–Maximum Rds(on) in ohms (mosfet)
max_resultsinteger–Maximum parts to return
min_current_anumber–Minimum current in amps (ldo output / mosfet Id / bjt Ic)
min_hfenumber–Minimum hFE / current gain (bjt)
min_power_wnumber–Minimum power rating in watts (resistor)
min_voltage_vnumber–Minimum voltage rating in volts (capacitor)
tolerance_pctnumber–Max tolerance in % (resistor/capacitor/inductor)
typestringyesComponent type
valuenumberyesPrimary value — meaning depends on type (ohms / farads / henries / volts)
NameTypeReqDescription
matched_valuestringyesThe parametric value string the search matched
partsarrayyes–

No examples provided.

embedcalc_get_extraction_guide ~50

회로도 이미지를 표준 회로 스키마로 추출하는 지침과 스키마 템플릿을 반환합니다. 이미지 검토의 첫 단계.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

embedcalc_i2c_timing ~373

Compute I2C pull-up resistor range (Rp min from sink current, Rp max from rise time vs bus capacitance), SCL high/low budget, and an STM32 I2C TIMINGR register estimate. Args: - mode: 'ls' (10k), 'sm' (100k), 'fm' (400k), 'fmp' (1M, 20mA sink), 'hs' (3.4M). - vdd (V, default 3.3), bus_capacitance_pf (default 100). - stm32_clock_mhz (default 16): I2CCLK kernel clock for the TIMINGR estimate. Returns (structured): rp_min_ohm / rp_max_ohm, scl high/low vs spec minimums, rise/fall limits, stm32 { presc, scll, sclh, sdadel, scldel, timingr_hex }. The TIMINGR value is an estimate per RM formulas — verify on scope for production. Example: Fast-mode, 3.3V, 100pF -> Rp between ~967Ω and ~3.5kΩ (use 2.2k).

NameTypeReqDescription
bus_capacitance_pfnumber–Total bus capacitance in pF (spec max 400 pF)
modestring–Bus speed mode: ls=10kHz, sm=100kHz, fm=400kHz, fmp=1MHz, hs=3.4MHz
stm32_clock_mhznumber–STM32 I2C kernel clock (I2CCLK) in MHz for TIMINGR estimate
vddnumber–Bus supply voltage in volts
NameTypeReqDescription
rp_max_ohmnumberyes–
rp_min_ohmnumberyes–
scl_high_min_spec_usnumberyes–
scl_high_usnumberyes–
scl_low_min_spec_usnumberyes–
scl_low_usnumberyes–
stm32objectyes–
t_fall_max_nsnumberyes–
t_rise_max_nsnumberyes–
target_freq_hznumberyes–

No examples provided.

embedcalc_i2s_clocks ~181

I2S bit clock (BCLK/SCK) from audio format: BCLK = Fs x bits x channels. Args: sample_rate_hz (e.g. 48000), bits_per_sample (e.g. 16/24/32), channels (default 2). Returns (structured): { bclk_hz, bclk_period_ns, lrclk_hz }. Example: 48 kHz, 24-bit, stereo -> BCLK 2.304 MHz (434.03 ns), LRCLK 48 kHz.

NameTypeReqDescription
bits_per_sampleintegeryesBits per sample per channel (16/24/32)
channelsinteger–Channel count (2 = stereo)
sample_rate_hznumberyesSample rate Fs in Hz (44100, 48000, ...)
NameTypeReqDescription
bclk_hznumberyes–
bclk_period_nsnumberyes–
lrclk_hznumberyes–

No examples provided.

embedcalc_ieee754_convert ~270

Encode/decode IEEE 754 single (32-bit) or double (64-bit) precision: decimal <-> hex <-> binary, with sign/exponent/fraction breakdown and classification. Args: - format (32|64, default 32). - Provide exactly one of: decimal (number), hex (string like '0x3F800000'), bin (bit string). Returns (structured): { sign, exponent_raw, exponent_unbiased, fraction, hex, bin, decimal (string — may be 'NaN'/'Infinity'), class ('normal'|'subnormal'|'zero'|'infinity'|'nan') }. Examples: 1.0 float -> 0x3F800000; 0.1 double -> 0x3FB999999999999A (not exact!). Do not eyeball float bit patterns — call this tool.

NameTypeReqDescription
binstring–Binary bit pattern to decode (32 or 64 chars, spaces allowed)
decimalnumber–Decimal value to encode (one of decimal/hex/bin)
formatnumber–32 = float, 64 = double
hexstring–Hex bit pattern to decode, e.g. '0x3F800000'
NameTypeReqDescription
binstringyes–
classstringyes–
decimalstringyesDecimal value as string (may be 'NaN', 'Infinity', '-Infinity')
exponent_rawnumberyes–
exponent_unbiasednumber|nullyesexponent - bias; null for zero/subnormal/special
fractionnumberyes–
hexstringyes–
signnumberyes–

No examples provided.

embedcalc_junction_temp ~177

Thermal check: Tj = Ta + P·θJA, and max dissipable power for a Tj limit. Args: ambient_c, power_w, theta_ja (°C/W from datasheet), tj_max_c (default 150). Returns (structured): { tj_c, p_max_w, margin_c, ok }. Example: Ta=25, P=2W, θJA=50 -> Tj=125°C, Pmax=2.5W @ Tj_max 150.

NameTypeReqDescription
ambient_cnumberyesAmbient temperature in °C
power_wnumberyesDissipated power in W
theta_janumberyesJunction-to-ambient thermal resistance °C/W
tj_max_cnumber–Maximum junction temperature rating in °C
NameTypeReqDescription
margin_cnumberyestj_max - tj (negative = over limit)
okbooleanyes–
p_max_wnumberyes–
tj_cnumberyes–

No examples provided.

embedcalc_lin_timing ~164

LIN bus timing: bit time, break field duration (13 bits), and worst-case frame time per LIN 2.x nominal (header 34 + response 10*(n+1) bits with 1.4x budget = (43+10n)/baud). Args: baud (typ. 9600/19200), data_bytes (1-8). Returns (structured): { bit_time_us, break_time_us, frame_time_us }. Example: 19200 baud, 8 bytes -> bit 52.08 µs, break 677 µs, frame 6406 µs.

NameTypeReqDescription
baudinteger–LIN baud rate (max 20 kbit/s)
data_bytesinteger–Response data bytes
NameTypeReqDescription
bit_time_usnumberyes–
break_time_usnumberyes–
frame_time_usnumberyes–

No examples provided.

embedcalc_list_schematic_rules ~77

회로 검토 룰 카탈로그를 반환합니다. family를 주면 해당 패밀리 룰(stm32f4|stm32f1|esp32|numicro)도 포함.

NameTypeReqDescription
familystring–stm32f4 | stm32f1 | esp32 | numicro

No output schema declared.

No examples provided.

embedcalc_lm317 ~269

LM317 adjustable regulator: Vout = Vref·(1 + R2/R1) + Iadj·R2. Compute R2 for a target Vout, or Vout from R1/R2. Args: r1_ohm (default 240), and exactly one of target_vout (-> solves R2) or r2_ohm (-> computes Vout). vref default 1.25 V, iadj_ua default 50 µA (datasheet typical). Returns (structured): { vout, r1_ohm, r2_ohm }. Example: target 5.0 V, R1=240, Iadj=0 -> R2=720 Ω. Snap R2 with embedcalc_eseries_nearest afterwards.

NameTypeReqDescription
iadj_uanumber–Adjust pin current in µA (50 typ)
r1_ohmnumber–R1 (Vref across it), datasheet recommends 240 Ω
r2_ohmnumber–R2 value (computes Vout)
target_voutnumber–Desired output voltage (solves R2)
vrefnumber–Reference voltage (1.25 V typ)
NameTypeReqDescription
r1_ohmnumberyes–
r2_ohmnumberyes–
voutnumberyes–

No examples provided.

embedcalc_microstrip_impedance ~229

Surface microstrip characteristic impedance: Z0 = (87/√(εr+1.41))·ln(5.98h/(0.8w+t)). Valid roughly for 0.1 < w/h < 2.0 and εr < 15. Args (all in mm): trace_width_mm, dielectric_height_mm, trace_thickness_mm (1oz ≈ 0.035), er (FR-4 ≈ 4.2-4.6). Returns (structured): { z0_ohm }. Example: w=3.0, h=1.6, t=0.035, εr=4.5 -> ≈49 Ω.

NameTypeReqDescription
dielectric_height_mmnumberyesDielectric height h in mm
ernumber–Dielectric constant (FR-4 ≈ 4.5)
trace_thickness_mmnumber–Copper thickness t in mm (1 oz = 0.035)
trace_width_mmnumberyesTrace width w in mm
NameTypeReqDescription
z0_ohmnumberyes–

No examples provided.

embedcalc_modbus_rtu_timing ~158

Modbus RTU inter-character (t1.5) and inter-frame (t3.5) silence times. Per spec: 11 bits/char; above 19200 baud fixed t1.5=750 µs and t3.5=1750 µs. Args: baud. Returns (structured): { char_time_us, t15_us, t35_us }. Example: 9600 -> char 1145.8 µs, t1.5 1718.8 µs, t3.5 4010.4 µs; 115200 -> 750/1750 µs fixed.

NameTypeReqDescription
baudintegeryesBaud rate in bit/s
NameTypeReqDescription
char_time_usnumberyes–
t15_usnumberyes–
t35_usnumberyes–

No examples provided.

embedcalc_mosfet_switch ~383

Conduction loss and gate-drive requirements for a MOSFET used as a low-side switch. Conduction + gate-drive ONLY — switching loss (needs drain voltage and rise/fall times) is NOT included. P_cond = Id^2 * Rds_on * duty. Gate avg current = Qg * fsw. Gate power = Qg * Vdrive * fsw. Tj = Ta + P_cond * theta_JA. Args: id_a, rds_on_ohm, duty (0-1, default 1); optional qg_c (coulombs), fsw_hz, vdrive_v, theta_ja, ambient_c, tj_max_c (default 150). Returns (structured): { p_conduction_w, gate_drive_avg_a, gate_drive_power_w, tj_c, margin_c, ok } (optional fields null if inputs omitted). Example: Id=5A, Rds=20mΩ -> 0.5 W conduction; Qg=20nC @ 100kHz -> 2 mA drive.

NameTypeReqDescription
ambient_cnumber–Ambient temperature in °C
dutynumber–Conduction duty cycle 0-1
fsw_hznumber–Switching frequency in Hz
id_anumberyesDrain (load) current in A
qg_cnumber–Total gate charge in coulombs (20nC = 20e-9)
rds_on_ohmnumberyesOn-resistance Rds(on) in ohms
theta_janumber–Junction-to-ambient thermal resistance °C/W
tj_max_cnumber–Max junction temperature rating in °C
vdrive_vnumber–Gate drive voltage in V
NameTypeReqDescription
gate_drive_avg_anumber|nullyes–
gate_drive_power_wnumber|nullyes–
margin_cnumber|nullyes–
okboolean|nullyes–
p_conduction_wnumberyes–
tj_cnumber|nullyes–

No examples provided.

embedcalc_ne555 ~233

NE555 timing. Astable: f = 1/(0.693·(Ra+2Rb)·C), duty = (Ra+Rb)/(Ra+2Rb) (always >50%). Monostable: t = 1.1·Ra·C. Args: mode ('astable'|'monostable'), ra_ohm, rb_ohm (astable only), c_farad (e.g. 10e-6). Returns (structured): astable -> { freq_hz, duty_percent, t_high_s, t_low_s }; monostable -> { pulse_s }. Example: astable 1k/10k/10µF -> 6.87 Hz, 52.4%.

NameTypeReqDescription
c_faradnumberyesTiming capacitor in farads (10µF = 10e-6)
modestringyesOscillator or one-shot
ra_ohmnumberyesRa in ohms
rb_ohmnumber–Rb in ohms (astable only)
NameTypeReqDescription
duty_percentnumber|nullyes–
freq_hznumber|nullyes–
pulse_snumber|nullyes–
t_high_snumber|nullyes–
t_low_snumber|nullyes–

No examples provided.

embedcalc_number_base_convert ~154

Convert a number between decimal/hex/binary/octal with 32-bit two's complement semantics (negative decimals wrap; MSB-set values get a signed reading). Args: value (string) — decimal ('-1', '42'), hex ('0xFF'), binary ('0b1010'), or octal ('0o17'). Returns (structured): { unsigned, signed, hex, bin (4-bit groups), oct, ones_count }. Example: '-1' -> 0xFFFFFFFF, unsigned 4294967295, 32 ones.

NameTypeReqDescription
valuestringyesNumber in any base: decimal, 0x hex, 0b binary, 0o octal
NameTypeReqDescription
binstringyes–
hexstringyes–
octstringyes–
ones_countnumberyes–
signedstringyes–
unsignedstringyes–

No examples provided.

embedcalc_op_amp ~285

Ideal op-amp closed-loop gain and resulting -3 dB bandwidth for inverting or non-inverting configs. Inverting: Av = -Rf/Rin. Non-inverting: Av = 1 + Rf/Rin. Noise gain = 1 + Rf/Rin (both). Bandwidth = GBW / noise_gain. Args: config ('inverting'|'noninverting'), rin_ohm, exactly one of rf_ohm or target_gain (magnitude), gbw_hz (optional -> bandwidth). Returns (structured): { gain_vv (signed), gain_db, noise_gain, rf_ohm, bandwidth_hz (null if no gbw) }. Example: non-inverting Rf=90k, Rin=10k -> +10 V/V, 20 dB; GBW 1 MHz -> 100 kHz. Snap Rf with embedcalc_eseries_nearest.

NameTypeReqDescription
configstringyesAmplifier configuration
gbw_hznumber–Gain-bandwidth product in Hz (compute bandwidth)
rf_ohmnumber–Feedback resistor (compute gain)
rin_ohmnumberyesInput resistor (inverting) or ground resistor Rg (non-inverting)
target_gainnumber–Desired gain magnitude (solve Rf)
NameTypeReqDescription
bandwidth_hznumber|nullyes–
gain_dbnumberyes–
gain_vvnumberyes–
noise_gainnumberyes–
rf_ohmnumberyes–

No examples provided.

embedcalc_parse_kicad ~160

KiCad "netlist export"(.net, S-expression) 파일을 표준 회로 스키마로 변환합니다. 부품 type은 ref 접두(U→ic, C→cap, R→res …)로 추론되며, mcu.family는 비어 있습니다. 패밀리 룰을 원하면 반환된 스키마에 mcu.family(stm32f4|stm32f1|esp32|numicro)를 추가해 embedcalc_review_schematic에 넘기세요. 입력: path (넷리스트 파일 절대경로). 반환: 표준 회로 스키마.

NameTypeReqDescription
pathstringyesKiCad netlist export 파일 경로(.net)

No output schema declared.

No examples provided.

embedcalc_pcb_trace_width ~222

Minimum trace width to carry a current with a given temperature rise, per IPC-2221 (I = k·ΔT^0.44·A^0.725; k=0.048 external / 0.024 internal). Args: current_a, temp_rise_c (default 10), copper_oz (default 1), layer ('external'|'internal'). Returns (structured): { width_mil, width_mm, cross_section_sq_mil }. Example: 1 A, 10 °C rise, 1 oz external -> ≈11.8 mil (0.30 mm). Internal layers need ~2x the width. Do not guess trace widths — this curve is not linear.

NameTypeReqDescription
copper_oznumber–Copper weight in oz (1 oz = 35 µm)
current_anumberyesContinuous current in amps
layerstring–Trace layer
temp_rise_cnumber–Allowed temperature rise in °C (typ. 10)
NameTypeReqDescription
cross_section_sq_milnumberyes–
width_milnumberyes–
width_mmnumberyes–

No examples provided.

embedcalc_qformat_convert ~249

Convert between float and signed Qm.n fixed point (1 sign + m integer + n fractional bits; e.g. Q0.15 = 16-bit "Q15"). Args: - m (int >= 0), n (int >= 0): format; m+n+1 <= 32. - value (float) OR raw_int (stored integer): provide exactly one. Returns (structured): { format, total_bits, scale, range_min, range_max, raw_int, hex, bin, actual, error, clamped }. hex/bin are two's complement in the format's bit width. Examples: 0.5 in Q0.15 -> 16384 = 0x4000; raw 0x8000 (-32768) in Q0.15 -> -1.0. Do not round by hand — quantization error matters.

NameTypeReqDescription
mintegeryesInteger bits (excluding sign)
nintegeryesFractional bits
raw_intinteger–Stored fixed-point integer to decode (provide this OR value)
valuenumber–Float value to encode (provide this OR raw_int)
NameTypeReqDescription
actualnumberyesValue actually represented after quantization
binstringyes–
clampedbooleanyes–
errornumberyes|input - actual| (0 when decoding raw_int)
formatstringyes–
hexstringyes–
range_maxnumberyes–
range_minnumberyes–
raw_intnumberyes–
scalenumberyes2^n
total_bitsnumberyes–

No examples provided.

embedcalc_rc_filter ~210

First-order RC low-pass or high-pass cutoff frequency: fc = 1/(2*pi*R*C), tau = R*C. LP and HP share the cutoff formula (response shape differs). Args: type ('lowpass'|'highpass'), and exactly two of { r_ohm, c_farad, fc_hz } -> solves the third. Returns (structured): { fc_hz, r_ohm, c_farad, tau_s }. Example: R=10k, C=1uF -> fc 15.92 Hz. Common for ADC anti-aliasing / debounce. Snap the computed part with embedcalc_eseries_nearest.

NameTypeReqDescription
c_faradnumber–Capacitor in farads (100nF = 100e-9)
fc_hznumber–Cutoff frequency in Hz
r_ohmnumber–Resistor in ohms
typestringyesFilter response type
NameTypeReqDescription
c_faradnumberyes–
fc_hznumberyes–
r_ohmnumberyes–
tau_snumberyes–

No examples provided.

embedcalc_regmap_to_c ~263

Generate C shift/mask #defines and a bit-field typedef struct for a hardware register from an LSB-first field list. Args: - register_name (string): e.g. 'CTRL'. Sanitized to [A-Z0-9_]. - fields (array of {name, width}): fields from bit 0 (LSB) upward, e.g. [{name:'EN',width:1},{name:'MODE',width:2},{name:'DIV',width:5}]. Total width must fit in 32 bits. Returns (structured): { c_code, total_bits, fields: [{name, width, shift, mask_hex}] }. Text content is the C source (defines + typedef struct with uint32_t bit-fields). Example: EN:1, MODE:2, DIV:5 -> CTRL_EN_SHIFT 0u / CTRL_EN_MASK 0x1u, CTRL_MODE_MASK 0x6u, CTRL_DIV_MASK 0xF8u. Do not compute shifts/masks by hand — call this tool.

NameTypeReqDescription
fieldsarrayyesFields from LSB upward; total width <= 32 bits
register_namestringyesRegister name, e.g. 'CTRL'
NameTypeReqDescription
c_codestringyes–
fieldsarrayyes–
total_bitsnumberyes–

No examples provided.

embedcalc_resistor_code ~267

Decode a through-hole resistor color code (4 or 5 bands) or an SMD resistor marking into ohms + tolerance. Args (one of): - bands: array of 4 or 5 color names in order (black, brown, red, orange, yellow, green, blue, violet, grey, white, gold, silver, none). - smd_code: 3-digit ('472'=4.7k), 4-digit ('4702'=47k), R-notation ('4R7'=4.7Ω), or EIA-96 ('01C'=10k ±1%). Returns (structured): { ohms, tolerance_percent, min_ohms, max_ohms }. Example: ['brown','black','red','gold'] -> 1000 Ω ±5%. To find a real resistor to buy for the decoded value, follow up with embedcalc_find_component (type=resistor, value=ohms, tolerance_pct=tolerance_percent) — returns MPN + buy link.

NameTypeReqDescription
bandsarray–Color band names in order (4 or 5 bands)
smd_codestring–SMD marking, e.g. '472', '4R7', '01C'
NameTypeReqDescription
max_ohmsnumber|nullyes–
min_ohmsnumber|nullyes–
ohmsnumberyes–
tolerance_percentnumber|nullyes–

No examples provided.

embedcalc_review_schematic ~198

표준 회로 스키마를 받아 임베디드 보드 룰(디커플링, 리셋, I2C 풀업, 전원, 패밀리별 요구사항)을 결정론적으로 검토합니다. 이미지 회로도라면 먼저 embedcalc_get_extraction_guide로 스키마 형식을 받아 채운 뒤 이 툴에 넘기세요. KiCad 넷리스트라면 embedcalc_parse_kicad의 출력에 mcu.family만 추가해 넘기면 됩니다. 반환: { violations[], checked[], skipped[], interfacesDetected[] }. skipped는 데이터 부족으로 검사하지 못한 룰이며, 이를 통해 커버리지를 확인하세요. interfacesDetected는 ��� 이름으로 자동 감지된 인터페이스 팩(usb/can/rs485/swd/crystal 등) 목록입니다.

NameTypeReqDescription
schematicobjectyes–

No output schema declared.

No examples provided.

embedcalc_ring_buffer_size ~158

Size a ring buffer (or DMA buffer) from data rate, worst-case consumer latency, and a safety factor, rounded up to a power of two. Args: data_rate_bytes_per_sec, latency_ms (worst-case time before the consumer drains), safety_factor (default 2). Returns (structured): { bytes_needed, recommended_pow2 }. Example: 102400 B/s, 10 ms, ×2 -> 2048 bytes -> use 2048 (2^11).

NameTypeReqDescription
data_rate_bytes_per_secnumberyesIncoming data rate in bytes/second
latency_msnumberyesWorst-case consumer latency in milliseconds
safety_factornumber–Headroom multiplier (default 2)
NameTypeReqDescription
bytes_needednumberyes–
recommended_pow2numberyesNext power of two >= bytes_needed (fast masking index math)

No examples provided.

embedcalc_rs485_bus ~207

RS-485 cable length limit (rule of thumb: length_m x bitrate_bps <= 10^8, capped 1200 m) and fail-safe bias resistors for >= 200 mV idle differential across 60 Ω (two 120 Ω terminators). Args: baud_bps, vcc (default 5), bias_ohm (optional — defaults to the computed maximum). Returns (structured): { max_cable_m, max_bias_ohm, bias_used_ohm, idle_vdiff_v, meets_200mv }. Example: 100 kbit/s -> 1000 m; Vcc=5 -> bias <= 720 Ω per side for 0.2 V idle.

NameTypeReqDescription
baud_bpsintegeryesSignaling rate in bit/s
bias_ohmnumber–Chosen bias resistor per side in Ω (default: computed maximum)
vccnumber–Bias supply voltage
NameTypeReqDescription
bias_used_ohmnumberyes–
idle_vdiff_vnumberyes–
max_bias_ohmnumberyesMaximum bias resistor per side for 200 mV idle differential
max_cable_mnumberyes–
meets_200mvbooleanyes–

No examples provided.

embedcalc_spi_timing ~123

SPI clock/frame timing: bit period, frame time, raw throughput. Args: sck_hz (SPI clock in Hz), bits_per_frame (default 8). Returns (structured): { bit_period_ns, frame_time_us, throughput_mbps }. Example: 10 MHz, 8 bits -> 100 ns/bit, 0.8 µs/frame, 10 Mbit/s.

NameTypeReqDescription
bits_per_frameinteger–Bits per frame/transfer
sck_hzintegeryesSCK clock frequency in Hz
NameTypeReqDescription
bit_period_nsnumberyes–
frame_time_usnumberyes–
throughput_mbpsnumberyes–

No examples provided.

embedcalc_struct_layout ~229

Compute the memory layout of a C struct/union — member offsets, inserted padding, bit-field packing, total size, and alignment — for a 32-bit MCU model (ARM Cortex-M style: pointers 4 bytes; double/int64 size 8 with 4-byte alignment, matching embedcalc.com). Args: code (string) — C member declarations or a full struct, e.g. 'char a; int b;' or 'struct s { uint8_t a; uint32_t b; };'. Supports nested struct/union, arrays, pointers, and bit-fields. Returns (structured): { total_size, alignment, padding_bytes, rows: [{offset, size, type, name, kind, depth}] }. Nested block rows show offsets relative to their parent block. Example: 'char a; int b;' -> total 8 bytes, 3 bytes padding after 'a'. Do not guess struct sizes/offsets — padding rules are exactly what LLMs get wrong.

NameTypeReqDescription
codestringyesC struct member declarations (or full struct/union definition)
NameTypeReqDescription
alignmentnumberyes–
padding_bytesnumberyes–
rowsarrayyes–
total_sizenumberyes–

No examples provided.

embedcalc_uart_baud ~323

Compute the STM32 USART BRR register (mantissa + fraction), the actual achieved baud rate, and the baud error for a given peripheral clock — plus frame size/character time for the given format. Args: - clock_hz (int): USART peripheral clock in Hz (e.g. 72000000). - baud (int): target baud rate (e.g. 115200). - oversampling (8|16, default 16): USART OVER8 setting. - data_bits (5-9, default 8), parity ('none'|'even'|'odd', default 'none'), stop_bits (1|1.5|2, default 1). Returns (structured): { mantissa, fraction, brr_hex, actual_baud, error_percent, frame_bits, char_time_us }. Rule of thumb: |error| < 2% total link budget; keep your side < 0.5% when possible. Example: 72 MHz, 115200, over16 -> BRR=0x0271 (mantissa 39, fraction 1), 0.00% error.

NameTypeReqDescription
baudintegeryesTarget baud rate in bit/s
clock_hzintegeryesUSART peripheral clock in Hz
data_bitsinteger–Data bits per frame
oversamplingnumber–Oversampling (OVER8): 16 or 8
paritystring–Parity
stop_bitsnumber–Stop bits
NameTypeReqDescription
actual_baudnumberyes–
brr_hexstringyesUSART_BRR register value
char_time_usnumberyesTime per character at actual baud
error_percentnumberyes–
fractionnumberyes–
frame_bitsnumberyesstart + data + parity + stop bits
mantissanumberyes–

No examples provided.

embedcalc_zener_reg ~281

Series resistor and power dissipation for a Zener shunt regulator. Is = (Vin-Vz)/Rs, Iz = Is - Il, Pz = Vz*Iz, Prs = (Vin-Vz)*Is. Args: vin_v, vz_v, il_a (load current, default 0), exactly one of rs_ohm (compute Iz) or iz_min_a (solve Rs), pz_max_w (optional Zener rating check). Returns (structured): { rs_ohm, is_a, iz_a, pz_w, prs_w, zener_ok (null if no pz_max) }. Example: Vin=12, Vz=5.1, Il=10mA, Rs=220 -> Iz 21.4 mA, Pz 0.109 W. Snap Rs with embedcalc_eseries_nearest.

NameTypeReqDescription
il_anumber–Load current in A
iz_min_anumber–Target minimum Zener current (solve Rs)
pz_max_wnumber–Zener power rating in W (sets zener_ok)
rs_ohmnumber–Series resistor (compute Iz)
vin_vnumberyesInput voltage in V
vz_vnumberyesZener voltage in V
NameTypeReqDescription
is_anumberyes–
iz_anumberyes–
prs_wnumberyes–
pz_wnumberyes–
rs_ohmnumberyes–
zener_okboolean|nullyes–

No examples provided.

Common questions

What is the io.github.ethan-hub26/embedcalc-mcp server?

io.github.ethan-hub26/embedcalc-mcp is listed in the public MCP registry as io.github.ethan-hub26/embedcalc-mcp. Embedded calculators, codegen & schematic review: CRC, timing, struct, IEEE-754, KiCad. This page covers its npm package (embedcalc-mcp).

Is the io.github.ethan-hub26/embedcalc-mcp server safe to use?

io.github.ethan-hub26/embedcalc-mcp scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.ethan-hub26/embedcalc-mcp server expose?

io.github.ethan-hub26/embedcalc-mcp exposes 38 tools: embedcalc_crc_to_c, embedcalc_regmap_to_c, embedcalc_bitfield_macro, embedcalc_can_bit_timing, embedcalc_uart_baud, and 33 more. Their descriptions and schemas cost roughly 9,350 tokens of context every time the server is loaded.

Is the io.github.ethan-hub26/embedcalc-mcp server still maintained?

io.github.ethan-hub26/embedcalc-mcp is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.ethan-hub26/embedcalc-mcp server under?

io.github.ethan-hub26/embedcalc-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.