Skip to main content
Glama
EMC Regulations MCP Server

EMC Regulations MCP Server

by RFingAdam

License Python 3.10+ MCP eng-mcp-suite

EMC and RF regulatory lookup: emission limits, immunity levels, restricted bands, and certification matrices. Drive it from your IDE, terminal, or AI agent the moment a compliance question shows up.

Quick start · Tools · Workflows · Documentation


What is mcp-emc-regulations?

mcp-emc-regulations is an MCP server that answers concrete EMC and RF compliance questions: emission limits, immunity test levels, frequency allocations, restricted bands, certification requirements: directly from cited standards. No PDFs, no copy-paste from a regulatory site.

It implements lookups against curated datasets sourced from FCC Part 15/18/95, CISPR 11/12/14-1/22/25/32, IEC 61000-4-x, ISO 11452 / 7637 / 16750, 3GPP TS 36.101 / 38.101, ISED RSS-Gen, and EU harmonised standards. Live FCC text is fetched on demand from the official eCFR API.

What it does well:

  • 🤖 AI-native via MCP. First-class Model Context Protocol server with 45 tools across FCC, CISPR, automotive, medical, cellular, wireless protocols, and certification advisory.

  • 🐍 Multiple surfaces. Use it from any MCP client (Claude Desktop, Claude Code, Codex), or call the Python package directly.

  • ⚡ Cited and dated. Every dataset carries source, version, and last_updated. The data_sources tool reports current versions; live eCFR queries are tagged with the eCFR snapshot date.

  • ✅ Composable. Compare FCC vs CISPR at a frequency with distance correction. Generate full test plans (test_plan_generator, immunity_test_plan) across regions and standards in one call.

  • 🔒 MIT licensed. Drop-in for compliance review workflows.


Related MCP server: mcp-server-3gpp

Quick start

Install

Pre-alpha: not yet on PyPI. Install from source:

git clone https://github.com/RFingAdam/mcp-emc-regulations.git
cd mcp-emc-regulations
uv pip install -e .

Two surfaces, same answer

Python

from mcp_emc_regulations.tools import fcc

# FCC Part 15.109 Class B radiated limit at 100 MHz
result = fcc.fcc_part15_limit(
    section="15.109",
    frequency_mhz=100,
    classification="B",
)
print(result)

CLI (via uv run)

uv run --directory /path/to/mcp-emc-regulations \
  mcp-emc-regulations
# JSON-RPC over stdio: drive it from any MCP client

MCP (Claude Desktop, Claude Code, Codex CLI, any MCP client)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "emc-regulations": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-emc-regulations", "mcp-emc-regulations"]
    }
  }
}

Then ask your assistant in plain English:

"What's the FCC Part 15 Class B radiated limit at 100 MHz, and how does it compare to CISPR 32 Class B at the same frequency?"

The agent calls fcc_part15_limit and emc_compare_limits and reports both with distance corrections.


Tools

45 MCP tools, grouped by domain. Full reference in docs/tools.md.

Emission limits

Tool

Purpose

Key arguments

fcc_part15_limit

FCC Part 15.109/15.207/15.209 limits

section, frequency_mhz, classification

fcc_part18_limit

FCC Part 18 ISM equipment limits

equipment_type, frequency_mhz

fcc_part95_limits

FCC Part 95 personal radio service limits

subpart, frequency_mhz

fcc_cbrs_rules

FCC Part 96 CBRS rules / SAS administrators

topic

fcc_part_lookup

Find the FCC Part that applies to a frequency / device

frequency_mhz, device_type

cispr_limit

CISPR 11/22/32/14-1 limits

standard, frequency_mhz, classification

ised_limit

ISED RSS-Gen limits (Canada)

rss_number, frequency_mhz

emc_compare_limits

Compare FCC vs CISPR at a frequency with distance correction

frequency_mhz, classification

Automotive

Tool

Purpose

cispr25_limit

CISPR 25 component emission limits (Classes 1–5)

cispr12_limit

CISPR 12 vehicle-level emission limits

iso11452_levels

ISO 11452-2 radiated immunity test levels

iso7637_pulses

ISO 7637-2 conducted transient test pulses

iso16750_conditions

ISO 16750 environmental test conditions

automotive_emc_overview

CISPR/ISO/UNECE R10 summary

automotive_immunity_method

Per-method immunity test details (BCI, ALSE, TEM)

oem_emc_requirements

OEM-specific EMC test specs (GMW, FORD-ES, VW80000)

Medical / safety

Tool

Purpose

medical_emc_requirements

IEC 60601-1-2 medical EMC requirements

medical_immunity_levels

IEC 60601-1-2 immunity test levels by use environment

safety_standard_lookup

Safety standards by product category

Immunity (IEC 61000-4-x)

Tool

Purpose

iec61000_test_levels

IEC 61000-4 immunity test levels

iec61000_overview

IEC 61000-4 family overview

immunity_test_plan

Generate immunity test plan for a product class

Cellular (3GPP)

Tool

Purpose

lte_band_lookup

Look up LTE band by number

lte_bands_list

List LTE bands (filter by region/carrier)

nr_band_lookup

Look up 5G NR band by name (n77, n260, …)

nr_bands_list

List NR bands (FR1, FR2, by carrier)

frequency_to_band

Find which LTE/NR bands contain a frequency

Wireless protocols

Tool

Purpose

wifi_limits

Wi-Fi (FCC Part 15.247/15.407) channel/EIRP limits

ble_limits

BLE / Bluetooth FCC/CE limits

protocol_limits

Generic wireless protocol limit lookup

protocol_comparison

Compare wireless protocol limits across regions

Frequency bands

Tool

Purpose

fcc_restricted_bands

Check if frequency is in FCC 15.205 restricted band

fcc_restricted_bands_list

List all FCC restricted bands

ism_bands_list

List all ISM frequency bands

frequency_conflict_check

Check for conflicts between a frequency and restricted bands

Certification advisory

Tool

Purpose

product_certification_advisor

Region/market certification advice for a product

test_plan_generator

Generate a multi-region EMC test plan

standard_cross_reference

Cross-reference equivalent standards across regions

certification_matrix

Region × test-type certification matrix

market_requirements

Market-specific requirements (US, EU, JP, KR, AU, …)

eu_harmonised_standards

EU harmonised standards lookup (Annex Z mappings)

Reference / sources

Tool

Purpose

emc_standards_list

List every standard known to the server

data_sources

Show dataset sources, versions, and last-updated dates

source_search

Search configured regulatory sources

ecfr_query

Live eCFR API query for 47 CFR (FCC) text


What it solves

Domain

Coverage

Source / Standard

FCC (US)

Part 15, 18, 95, 96 (CBRS): emission + restricted bands

47 CFR via eCFR API + curated tables

CISPR (international)

CISPR 11, 12, 14-1, 22, 25, 32: emission limits

IEC/CISPR published standards

Automotive

CISPR 25/12, ISO 11452, 7637, 16750, UNECE R10, OEM specs

IEC, ISO, UNECE, GMW/FORD/VW

Medical

IEC 60601-1-2 emission + immunity by environment

IEC 60601-1-2 ed. 4

Immunity

IEC 61000-4-2/-3/-4/-5/-6/-8/-11

IEC 61000-4 series

Cellular

LTE bands 1–88, NR FR1 + FR2, carrier band lists

3GPP TS 36.101, 38.101

Wireless

Wi-Fi 2.4/5/6/7 GHz, BLE, Bluetooth Classic

FCC 15.247/15.407, CE harmonised, ETSI EN 300 328

Certification

US/CA/EU/JP/KR/AU markets + matrix + harmonised lists

Per-region regulator publications


Workflows

mcp-emc-regulations fits in the following eng-mcp-suite workflow bundles:

  • emc-compliance: combine with mcp-pcb-emcopilot and drawio-engineering-mcp for the full layout-to-cert-letter loop.

  • rf-design: verify wireless-protocol limits and restricted bands while sizing a transmit chain.

  • automotive-emc: chain CISPR 25 / ISO 11452 lookups with test setup generation in drawio-engineering-mcp.

Part of eng-mcp-suite. Use in the emc-compliance workflow bundle.

See the suite manifest for the full list of sibling MCPs and bundle definitions.


Documentation


Part of eng-mcp-suite

This MCP server is part of

eng-mcp-suite

An open umbrella for engineering MCP servers across RF, EMC, PCB, signal integrity, EM simulation, and lab test. Same brand, same docs structure, designed to compose. See the full catalog or jump to a sibling:

Domain

Sibling MCPs

RF / Transmission lines

lineforge

EMC regulatory

mcp-emc-regulations (this repo)

PCB / SI

mcp-pcb-emcopilot (private: public soon)

EM simulation

mcp-openems, mcp-nec2-antenna (private: public soon)

Diagrams

drawio-engineering-mcp

3D / rendering

mcp-blender

Remote access

mcp-remote-access

Lab gear

copper-mountain-vna-mcp, mcp-rs-spectrum-analyzer, mcp-rs-siggen, mcp-rs-cmw500


Data currency

  • Curated datasets in src/mcp_emc_regulations/data/ carry metadata fields with source, version, and last_updated. Use the data_sources tool to see versions at runtime.

  • ecfr_query pulls live CFR text from the eCFR API on each call.

  • For compliance work, verify against the official standard before sign-off.

External sources can be configured in sources.json; use sources.local.json for private overrides. Run:

uv run python scripts/update_sources.py

to refresh data_sources/manifest.json.


Contributing

Contributions are welcome.

  1. Pick a GitHub issue.

  2. Fork + branch (feature/your-thing or fix/your-bug).

  3. Run the local check suite:

    uv run pytest
  4. Open a PR: link the issue, request review.


License

AGPL-3.0-or-later. Earlier commits had a stale "MIT" badge without a matching LICENSE file; v0.2.0 settles the repo on AGPL-3.0-or-later to align with the eng-mcp-suite toolkit-wide license move.

Brand assets

The project name and the logo files in this repository are not part of the licensed work. The licence above grants no permission to use them, except as needed to describe the origin of the work.

Acknowledgments

  • eCFR: for the live regulatory text API.

  • FCC / IEC / ISO / CISPR / 3GPP / ISED / ETSI: for the published standards this server indexes.

  • The MCP working group: for the Model Context Protocol specification.

Part of eng-mcp-suite: built for RF engineers, PCB designers, EMC labs, and AI agents.

Available Tools

45 tools
automotive_emc_overviewA

Get an overview of automotive EMC standards (CISPR 12, CISPR 25, ISO 11452, ISO 7637, UNECE R10).

Inputs: no named parameters.

automotive_immunity_methodC

Get details on an ISO 11452 immunity test method. Methods: ALSE (Part 2), TEM cell (Part 3), BCI (Part 4), stripline (Part 5), direct injection (Part 7), magnetic (Part 8), portable TX (Part 9), reverberation (Part 11).

Inputs: method (required).

ble_limitsA

Get Bluetooth Low Energy (BLE) regulatory limits. Returns power classes, channel plan, and regulatory limits per region.

Inputs: region.

certification_matrixA

Get a certification requirements matrix for a product type across target markets. Returns required certifications, timelines, modular approval options, and lab requirements. This is the key advisor tool for answering 'what certifications do I need?'

Inputs: product_type (required), markets.

cispr12_limitB

Get CISPR 12 vehicle-level emission limits for type approval.

Inputs: frequency_mhz (required).

cispr25_limitA

Get CISPR 25 automotive component emission limits. Returns limits for Classes 1-5 (1=least stringent, 5=most stringent).

Inputs: frequency_mhz (required), device_class, emission_type.

cispr_limitA

Get CISPR emission limits (CISPR 11, 22, 32, 14-1). Returns radiated or conducted limits for Class A or B.

Inputs: frequency_mhz (required), standard (required), device_class, emission_type.

data_sourcesB

List dataset sources, versions, and last-updated timestamps.

Inputs: no named parameters.

ecfr_queryB

Query the eCFR API for specific CFR sections.

Inputs: title (required), part (required), section.

emc_compare_limitsB

Compare emission limits between FCC and CISPR standards at a given frequency.

Inputs: frequency_mhz (required), device_class.

emc_standards_listA

List all available EMC standards and regulations in the database.

Inputs: no named parameters.

eu_harmonised_standardsA

Get EU harmonised standards for a product type or technology. Returns applicable EN standards for EMC, radio, and safety under RED/EMCD.

Inputs: technology, category.

fcc_cbrs_rulesA

Get FCC Part 96 CBRS (Citizens Broadband Radio Service) rules for 3.5 GHz shared spectrum.

Inputs: no named parameters.

fcc_part15_limitA

Get FCC Part 15 emission limits for a frequency. Returns Class A and/or Class B limits for unintentional radiators (15.109), intentional radiators (15.209), or conducted emissions (15.207).

Inputs: frequency_mhz (required), section, device_class.

fcc_part18_limitA

Get FCC Part 18 (ISM equipment) emission limits. Check ISM bands and limits for industrial/consumer ISM equipment.

Inputs: frequency_mhz (required), equipment_type.

fcc_part95_limitsA

Get FCC Part 95 personal radio service limits (FRS, GMRS, CB, MURS, LPRS).

Inputs: service.

fcc_part_lookupA

Look up FCC Parts 22, 24, 27, 90, 95, 96. Returns band allocations, power limits, and key rules for cellular, PCS, AWS/700MHz, land mobile, personal radio (GMRS/FRS), and CBRS.

Inputs: part (required).

fcc_restricted_bandsA

Check if a frequency falls within FCC Part 15.205 restricted bands.

Inputs: frequency_mhz (required).

fcc_restricted_bands_listC

List all FCC Part 15.205 restricted frequency bands.

Inputs: freq_min_mhz, freq_max_mhz.

frequency_conflict_checkA

Analyze frequency conflicts and coexistence issues for multi-radio designs. Identifies overlapping bands, restricted band conflicts, and harmonic issues.

Inputs: radios (required).

frequency_to_bandA

Find which LTE/NR bands contain a given frequency.

Inputs: frequency_mhz (required).

iec61000_overviewA

Get an overview of all IEC 61000-4-x immunity tests with typical levels for residential and industrial environments.

Inputs: no named parameters.

iec61000_test_levelsB

Get IEC 61000-4-x immunity test levels. Standards: ESD (4-2), radiated (4-3), EFT/burst (4-4), surge (4-5), conducted RF (4-6), magnetic field (4-8), voltage dips (4-11).

Inputs: standard (required), level.

immunity_test_planB

Get a suggested immunity test plan for a product type. Returns applicable IEC 61000-4-x tests and recommended levels.

Inputs: environment (required).

ised_limitA

Get ISED Canada (RSS-247 / ICES-003) limits. Returns wireless power limits and IT equipment emission limits.

Inputs: standard, band.

ism_bands_listA

List all ISM (Industrial, Scientific, Medical) frequency bands per ITU Radio Regulations.

Inputs: no named parameters.

iso11452_levelsA

Get ISO 11452-2 radiated immunity test levels for automotive components.

Inputs: no named parameters.

iso16750_conditionsA

Get ISO 16750 environmental conditions for automotive electronic equipment. Covers electrical loads, vibration, temperature, and chemical exposure by mounting location.

Inputs: category, location.

iso7637_pulsesB

Get ISO 7637-2 conducted transient immunity test pulses for automotive components.

Inputs: no named parameters.

lte_band_lookupA

Look up 3GPP LTE band information by band number. Returns frequencies, duplex mode, bandwidths.

Inputs: band (required).

lte_bands_listA

List all LTE bands, optionally filtered by region or carrier.

Inputs: region, carrier.

market_requirementsA

Get regulatory requirements for a specific market. Returns regulatory body, agencies, key standards, certification process, and modular approval rules. Markets: us, ca, eu, jp, kr, cn, au, in, br, tw, sg.

Inputs: market (required).

medical_emc_requirementsB

Get IEC 60601-1-2 medical device EMC requirements. Returns emission limits and immunity levels for professional or home healthcare environments.

Inputs: environment.

medical_immunity_levelsB

Get detailed IEC 60601-1-2 immunity test levels including proximity immunity (Table 9) for wireless devices near medical equipment.

Inputs: include_proximity.

nr_band_lookupA

Look up 3GPP 5G NR band information by band name (e.g., n77, n260).

Inputs: band (required).

nr_bands_listB

List all 5G NR bands, optionally filtered by frequency range (FR1 sub-6GHz, FR2 mmWave).

Inputs: frequency_range, carrier.

oem_emc_requirementsA

Get OEM-specific automotive EMC requirements. Returns emission class, immunity level, BCI level, and special requirements. OEMs: gm, ford, vw, bmw, stellantis, toyota, hyundai, mercedes, tesla, generic.

Inputs: oem, location.

product_certification_advisorA

Get a complete certification roadmap for a multi-radio product across target markets. Identifies required certifications, test overlaps, modular approval options, and estimated timelines. The primary advisor tool.

Inputs: radios (required), markets (required), form_factor.

protocol_comparisonB

Compare power limits and key parameters across wireless protocols. Useful for selecting technologies or understanding coexistence.

Inputs: region, band.

protocol_limitsB

Get regulatory limits for short-range wireless protocols: Zigbee/Thread/Matter, LoRa/LoRaWAN, UWB, Wi-SUN, DECT, NB-IoT, LTE-M.

Inputs: protocol (required), region.

safety_standard_lookupA

Look up safety standards: IEC 62368-1 (IT/AV), IEC 60601-1 (medical), IEC 61010-1 (lab equipment), UL standards. Returns scope, energy source classes, certification marks.

Inputs: standard.

standard_cross_referenceA

Find equivalent standards across different markets. E.g., CISPR 32 equivalents: FCC Part 15B (US), ICES-003 (CA), EN 55032 (EU), VCCI (JP), KN 32 (KR).

Inputs: category, market.

test_plan_generatorA

Generate a comprehensive EMC/RF test plan for a product. Covers emissions, immunity, RF performance, and safety based on target markets and product type.

Inputs: product_type (required), markets (required), environment.

wifi_limitsA

Get WiFi regulatory limits for a given band, protocol, and region. Covers 2.4 GHz, 5 GHz (UNII-1/2A/2C/3), 6 GHz (LPI/SP/VLP), and sub-1 GHz (802.11ah). Returns max power, EIRP, DFS requirements, channel plans.

Inputs: band, region, protocol.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 45 tools

    Disambiguation4/5

    Most tools have distinct purposes, e.g., separate tools for different CISPR parts and FCC parts. However, some overlap exists between advisor tools (certification_matrix, product_certification_advisor, market_requirements) and test planners (test_plan_generator, immunity_test_plan), though descriptions clarify roles.

    Naming Consistency4/5

    Tool names predominantly follow a descriptive noun_verb pattern (e.g., cispr12_limit, fcc_part15_limit, lte_band_lookup). Some abbreviations are used consistently, but a few names like 'frequency_to_band' break the pattern. Overall, naming is clear and mostly consistent.

    Tool Count2/5

    45 tools is excessive for typical server usage, risking agent confusion and selection overhead. While the domain is broad, many tools could be consolidated (e.g., merging related limit queries or test planners). This high count likely degrades coherence.

    Completeness5/5

    The tool set thoroughly covers EMC regulations: limits from major standards (CISPR, FCC, ISED), test methods (automotive, medical, general), certification roadmaps, market-specific requirements, and cross-references. No obvious gaps for the stated domain.

    Maintenance

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to access and search 3GPP telecommunications specifications through direct integration with the TSpec-LLM dataset. Provides real-time specification content, implementation requirements, and multi-spec comparisons for 3GPP standards development.
      4
      41 npm
      29
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI assistants to search and retrieve information from 3GPP specification documents, including full-text search and specific lookup for LTE and 5G NAS cause values. It comes with pre-processed data for major specifications covering NAS, RRC, and protocol conformance testing.
      3
      5
      MIT