MCP-Edge
Integration with Arduino devices and Arduino IoT Cloud, enabling management of device properties and firmware-in-the-loop testing with Arduino, ESP32, and RP2040 boards.
Exposes Edge Impulse ML inference as MCP tools, allowing AI agents to run models on edge devices.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-Edgeread temperature from bedroom sensor"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-Edge
Extend the Model Context Protocol (MCP) to edge and IoT devices.
MCP-Edge lets cloud LLM agents discover and invoke physical hardware through the same tool interface they already use for software APIs. It provides:
a gateway that bridges cloud-native MCP transports (SSE / HTTP) to constrained device channels (UART, BLE, local Wi-Fi), presenting every downstream device as a standard MCP tool provider;
MCP-Lite, a lightweight MCP server for devices with as little as ~512 KB of RAM;
a four-tier device taxonomy (constrained MCUs, smart IoT nodes, BLE-only wearables, Linux-class edge computers) that maps an MCP strategy to each tier;
protocol adaptations for constrained links: CBOR encoding, schema caching, connection pooling, and offline request buffering.
Status: alpha, under active development. The public API is unstable and will change. This is the reference implementation of the MCP-Edge framework (IEEE Cloud Summit 2026): the gateway, MCP-Lite server, four-tier device taxonomy, and serial/UART, BLE, and Wi-Fi (TCP) transports, all covered by a hermetic test suite, with ESP32 MicroPython example firmware and a Wokwi boot test in CI, and the gateway install + boot verified on aarch64 Linux and Raspberry Pi OS (QEMU) in CI — see platform support.
Installation
Requires Python 3.10+.
pip install mcp-edgeFor development, install from source:
git clone https://github.com/jemsbhai/mcp-edge
cd mcp-edge
pip install -e ".[dev]"Related MCP server: mcp2tcp
Quickstart
Run a demo gateway — an MCP server exposing two simulated devices over stdio:
mcp-edge run --demoThis serves a simulated sensor (read_temp, read_humidity) and a simulated ring
(heart_rate), each tool namespaced by device (sensor-01/read_temp, ...). To drive it
from an MCP client such as the MCP Inspector or Claude Desktop, configure a stdio server
with command mcp-edge and arguments ["run", "--demo"]. The process logs to stderr and
waits for a client on stdin.
Use the gateway as a library:
import asyncio
from mcp_edge.client import MCPLiteClient
from mcp_edge.devices import SimulatedDevice
from mcp_edge.gateway import Gateway
from mcp_edge.registry import DeviceRegistry
from mcp_edge.tiers import Tier
from mcp_edge.transports import LoopbackTransport
async def main() -> None:
device = SimulatedDevice("sensor-01")
device.add_tool("read_temp", lambda args: {"celsius": 21.5})
transport = LoopbackTransport(device.handle)
await transport.open()
registry = DeviceRegistry()
registry.register("sensor-01", MCPLiteClient(transport), Tier.SMART_NODE)
gateway = Gateway(registry)
print([tool["name"] for tool in await gateway.list_tools()]) # ['sensor-01/read_temp']
print(await gateway.call_tool("sensor-01/read_temp", {})) # {'celsius': 21.5}
asyncio.run(main())Connect your own device over serial (experimental) — install the serial extra
(pip install "mcp-edge[serial]") and point SerialTransport at the port your device is
on. It exposes the same Transport interface, so it drops into the example above in place
of LoopbackTransport:
from mcp_edge.transports import SerialTransport
# "COM3" on Windows, "/dev/ttyUSB0" on Linux/macOS
transport = SerialTransport("COM3", baudrate=115200)Frames use a length-prefixed wire format — a 2-byte big-endian length followed by the CBOR
payload — documented in transports/serial.py. Device firmware must frame its replies the
same way; the exported encode_frame / decode_frame helpers make that straightforward.
This path is not yet validated on physical hardware. Worked ESP32 MicroPython firmware
for the serial, BLE, and Wi-Fi transports lives in
examples/firmware/esp32_micropython/.
Roadmap
v0.1 — gateway core, in-process (loopback) transport, protocol adaptations (CBOR, schema caching, connection pooling, offline buffering), device simulator, health monitor, CLI, hermetic CI
v0.2 — real transports and Wokwi firmware-in-the-loop tests (Arduino / ESP32 / RP2040). The serial/UART (
pyserial), BLE (bleak), and Wi-Fi (TCP, with mDNS discovery viazeroconf) transports have landed (software-tested), each with ESP32 MicroPython example firmwarev0.2+ — Edge Impulse (inference as an MCP tool) and Arduino IoT Cloud (properties as MCP) integration examples; Renode / QEMU backends
Development
pip install -e ".[dev]"
pytest -q
ruff check .License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jemsbhai/mcp-edge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server