Skip to main content
Glama

IoT MCP Server

MCP (Model Context Protocol) Server สำหรับจัดการอุปกรณ์ IoT และ Network ผ่าน Claude AI

รองรับ 135 tools สำหรับ 17 ประเภทอุปกรณ์ ผ่าน 3 protocols: SSH, REST API, Serial

Supported Devices

Device

Protocol

Tools

Cisco Switch

SSH CLI

8 tools - interfaces, VLANs, MAC table, ARP, CDP, spanning-tree

HP Switch

SSH CLI

8 tools - interfaces, VLANs, MAC table, ARP, LLDP, spanning-tree

Fortigate

REST API + SSH

8 tools - firewall policies, routes, VPN, DHCP, sessions

Mikrotik

REST API + SSH

8 tools - interfaces, routes, firewall, DHCP, wireless, queues

ThingsBoard

REST API (JWT)

6 tools - devices, telemetry, attributes, RPC, alarms, dashboards

ESPHome

REST API

6 tools - devices, states, services, logs, compile

ESPConnect

REST API

4 tools - devices, status, command, OTA

Tuya

Cloud API (HMAC)

5 tools - devices, status, commands, scenes

Sonoff/eWeLink

Cloud API (v2)

4 tools - devices, toggle, power usage

QNAP NAS

REST API (QTS)

8 tools - system info, volumes, disks, shared folders, apps, logs

Synology NAS

REST API (DSM)

9 tools - system info, storage, disks, shared folders, packages, docker

Proxmox VE

REST API (PVE)

10 tools - nodes, VMs, LXC containers, storage, cluster resources

VMware ESXi

REST API (vSphere)

13 tools - VMs, power, snapshots, host, datastores, networks

Dahua NVR/DVR

HTTP CGI API

8 tools - system info, channels, storage, alarms, recording, PTZ

Dahua DSS

REST API (token)

9 tools - server info, devices, channels, alarms, organizations

OpenStack/MicroStack

REST API (Keystone v3)

12 tools - servers, flavors, hypervisors, images, networks, volumes

Hi-Flying Serial Server

AT Commands (TCP)

9 tools - device info, serial config, network, WiFi, AT command, serial data

Plus 8 cross-device tools: list devices, status, test connection, execute command, get config, serial ports, VPN status

Related MCP server: Network AI Assistant

Architecture

src/
├── index.ts                    # stdio transport
├── server-sse.ts               # Streamable HTTP transport
├── config.ts                   # env + devices.json loader
├── types.ts                    # shared interfaces
├── device-registry.ts          # singleton device registry
├── connectors/
│   ├── base-connector.ts       # abstract base class
│   ├── ssh-connector.ts        # SSH base (ssh2)
│   ├── rest-connector.ts       # REST base (native fetch)
│   ├── serial-connector.ts     # Serial base (serialport)
│   ├── cisco-connector.ts      # Cisco Switch
│   ├── hp-connector.ts         # HP Switch
│   ├── fortigate-connector.ts  # Fortigate (REST + SSH)
│   ├── mikrotik-connector.ts   # Mikrotik (REST + SSH)
│   ├── thingsboard-connector.ts
│   ├── esphome-connector.ts
│   ├── espconnect-connector.ts
│   ├── tuya-connector.ts       # Tuya Cloud (HMAC signing)
│   ├── sonoff-connector.ts     # eWeLink API v2
│   ├── qnap-connector.ts      # QNAP QTS API
│   ├── synology-connector.ts  # Synology DSM API
│   ├── proxmox-connector.ts   # Proxmox VE API
│   ├── esxi-connector.ts     # VMware vSphere REST API
│   ├── dahua-nvr-connector.ts # Dahua NVR/DVR/IPC CGI API
│   ├── dahua-dss-connector.ts # Dahua DSS Pro/Express REST API
│   ├── openstack-connector.ts # OpenStack/MicroStack (Keystone v3)
│   ├── hiflying-connector.ts  # Hi-Flying Serial Server (AT+TCP)
│   └── index.ts                # connector factory
└── tools/
    ├── index.ts                # 135 tool definitions + dispatcher
    ├── device-tools.ts         # cross-device operations
    ├── network-switch-tools.ts # Cisco + HP
    ├── firewall-tools.ts       # Fortigate
    ├── mikrotik-tools.ts       # Mikrotik
    ├── thingsboard-tools.ts    # ThingsBoard
    ├── esphome-tools.ts        # ESPHome
    ├── espconnect-tools.ts     # ESPConnect
    ├── tuya-tools.ts           # Tuya
    ├── sonoff-tools.ts         # Sonoff
    ├── qnap-tools.ts          # QNAP
    ├── synology-tools.ts      # Synology
    ├── proxmox-tools.ts       # Proxmox
    ├── esxi-tools.ts          # ESXi
    ├── dahua-nvr-tools.ts     # Dahua NVR
    ├── dahua-dss-tools.ts     # Dahua DSS
    ├── openstack-tools.ts     # OpenStack
    └── hiflying-tools.ts      # Hi-Flying

Connector Pattern

BaseConnector (abstract)
├── SSHConnector (ssh2 with legacy algo support)
│   ├── CiscoConnector
│   └── HPConnector
├── RESTConnector (native fetch)
│   ├── FortigateConnector (+SSH helper)
│   ├── MikrotikConnector (+SSH helper)
│   ├── ThingsBoardConnector (JWT auth)
│   ├── ESPHomeConnector
│   ├── ESPConnectConnector
│   ├── TuyaConnector (HMAC-SHA256 signing)
│   ├── SonoffConnector (eWeLink v2)
│   ├── QnapConnector (QTS API)
│   ├── SynologyConnector (DSM API)
│   ├── ProxmoxConnector (PVE API)
│   ├── ESXiConnector (vSphere REST API)
│   ├── DahuaNvrConnector (HTTP CGI, Basic auth)
│   ├── DahuaDssConnector (REST API, token auth)
│   ├── OpenStackConnector (Keystone v3 + Nova/Neutron/Cinder/Glance)
│   └── HiFlyingConnector (AT commands + TCP transparent)
└── SerialConnector (serialport)

Quick Start

1. Configure devices

cp devices.json.example devices.json
cp .env.example .env

Edit devices.json with your device inventory. Passwords use ${ENV_VAR} references resolved from .env:

{
  "devices": [
    {
      "id": "cisco-sw-core",
      "name": "Cisco Core Switch",
      "type": "cisco",
      "transport": ["ssh"],
      "host": "192.168.1.1",
      "port": 22,
      "username": "admin",
      "password": "${CISCO_PASSWORD}",
      "tags": ["core", "network"]
    }
  ]
}
docker compose up -d

Server runs at http://localhost:3300 (MCP endpoint: /mcp, health: /health)

3. Standalone

npm install
npm run build
npm run start:sse   # Streamable HTTP mode (port 3000)
npm start           # stdio mode (for Claude Desktop)

4. Connect to Claude Code

.mcp.json is pre-configured:

{
  "mcpServers": {
    "iot": {
      "url": "http://localhost:3300/mcp"
    }
  }
}

MCP Tools Reference

Device Management (iot_*)

Tool

Description

iot_list_devices

List all devices (filter by type/tag/search)

iot_device_status

Get device status (connects to check)

iot_test_connection

Test connectivity

iot_all_status

Health dashboard - all devices

iot_execute_command

Execute CLI command on SSH device

iot_get_config

Retrieve running config

iot_serial_list_ports

List available serial ports

vpn_status

Check all VPN connections status

Network Switch (switch_*)

Tool

Description

switch_show_interfaces

Interface status/brief

switch_show_vlans

VLAN configuration

switch_show_mac_table

MAC address table (filter by VLAN)

switch_show_arp

ARP table

switch_show_neighbors

CDP (Cisco) / LLDP (HP)

switch_show_spanning_tree

Spanning tree status

switch_show_port_security

Port security

switch_show_logs

Log buffer

Fortigate Firewall (fortigate_*)

Tool

Description

fortigate_get_policies

Firewall policies

fortigate_get_routes

Routing table

fortigate_get_interfaces

Interface config

fortigate_vpn_status

IPSec VPN tunnels

fortigate_system_status

CPU/memory/resource usage

fortigate_get_dhcp_leases

DHCP leases

fortigate_get_sessions

Active sessions

fortigate_execute_cli

FortiOS CLI via SSH

Mikrotik Router (mikrotik_*)

Tool

Description

mikrotik_get_interfaces

Interfaces with traffic stats

mikrotik_get_routes

IP routing table

mikrotik_get_firewall

Filter + NAT rules

mikrotik_get_dhcp_leases

DHCP leases

mikrotik_get_wireless

Wireless clients

mikrotik_get_queues

Bandwidth queues

mikrotik_system_resources

CPU/memory/uptime

mikrotik_execute_command

RouterOS command via SSH

ThingsBoard (tb_*)

Tool

Description

tb_list_devices

List registered devices

tb_device_telemetry

Latest telemetry data

tb_device_attributes

Device attributes

tb_send_rpc

Send RPC command

tb_get_alarms

Active alarms

tb_get_dashboards

List dashboards

ESPHome (esphome_*)

Tool

Description

esphome_list_devices

List managed devices

esphome_device_info

Device details

esphome_get_states

Entity states

esphome_call_service

Call service (turn on/off, etc.)

esphome_get_logs

Device logs

esphome_compile

Trigger OTA compile

ESPConnect (espconnect_*)

Tool

Description

espconnect_list_devices

List devices

espconnect_device_status

Device status

espconnect_send_command

Send command

espconnect_ota_update

OTA firmware update

Tuya Cloud (tuya_*)

Tool

Description

tuya_list_devices

List cloud devices

tuya_device_status

Device properties

tuya_send_commands

Control commands

tuya_get_scenes

Smart scenes

tuya_trigger_scene

Trigger scene

Tool

Description

sonoff_list_devices

List devices

sonoff_device_status

Device status

sonoff_toggle

On/off control

sonoff_get_power_usage

Power monitoring

QNAP NAS (qnap_*)

Tool

Description

qnap_system_info

System info (model, firmware, uptime)

qnap_get_volumes

Storage volumes/pools (RAID, capacity)

qnap_get_disks

Physical disks (SMART, health, temp)

qnap_get_shared_folders

Shared folders

qnap_get_network

Network interfaces

qnap_get_apps

Running applications/packages

qnap_get_logs

System logs

qnap_resource_usage

CPU/memory/disk usage

Synology NAS (synology_*)

Tool

Description

synology_system_info

System info (model, DSM version, uptime)

synology_get_storage

Storage volumes/pools (RAID, capacity)

synology_get_disks

Physical disks (SMART, health, temp)

synology_get_shared_folders

Shared folders

synology_get_network

Network interfaces

synology_get_packages

Installed packages

synology_system_utilization

CPU/memory/network/disk utilization

synology_get_logs

System logs

synology_get_docker

Docker containers

Proxmox VE (proxmox_*)

Tool

Description

proxmox_get_nodes

List cluster nodes

proxmox_node_status

Node status (CPU, memory, uptime)

proxmox_list_vms

List QEMU VMs on a node

proxmox_vm_status

VM status details

proxmox_list_containers

List LXC containers on a node

proxmox_container_status

LXC container status details

proxmox_get_storage

Storage pools on a node

proxmox_get_network

Network configuration

proxmox_cluster_resources

Cluster-wide resource overview

proxmox_get_tasks

Recent tasks/operations

VMware ESXi (esxi_*)

Tool

Description

esxi_list_vms

List all VMs with power state

esxi_get_vm

VM details (by ID or name)

esxi_power_on

Power on VM

esxi_power_off

Power off VM (graceful/force)

esxi_restart_vm

Restart VM

esxi_suspend_vm

Suspend VM

esxi_host_info

Host info (CPU, memory, version)

esxi_list_datastores

Datastores with capacity/usage

esxi_list_networks

Networks and port groups

esxi_list_snapshots

VM snapshots

esxi_create_snapshot

Create VM snapshot

esxi_delete_snapshot

Delete VM snapshot

esxi_revert_snapshot

Revert VM to snapshot

Dahua NVR/DVR/IPC (dahua_nvr_*)

Tool

Description

dahua_nvr_system_info

System info (model, firmware, serial number)

dahua_nvr_get_channels

Camera channels list

dahua_nvr_channel_status

Video input status

dahua_nvr_storage_info

HDD/storage info

dahua_nvr_network

Network configuration

dahua_nvr_alarms

Alarm/event history

dahua_nvr_recording_status

Recording mode/status

dahua_nvr_ptz

PTZ camera control (pan, tilt, zoom, preset)

Dahua DSS Pro/Express (dss_*)

Tool

Description

dss_server_info

DSS server information

dss_list_devices

List managed devices

dss_device_info

Device details by code

dss_list_channels

Video channels (all or by device)

dss_channel_status

Channel online/offline status

dss_list_alarms

Alarm events (with time filter)

dss_list_organizations

Organization groups

dss_record_status

Channel recording status

dss_device_online_status

Device online/offline check

OpenStack / MicroStack (openstack_*)

Tool

Description

openstack_list_servers

List compute instances (VMs)

openstack_server_detail

Server/instance details

openstack_server_action

Start/stop/reboot/pause/suspend/resume server

openstack_list_flavors

Available VM flavors (sizes)

openstack_list_hypervisors

Hypervisors with resource stats

openstack_list_images

Available images (Glance)

openstack_list_networks

Networks (Neutron)

openstack_list_subnets

Subnets (Neutron)

openstack_list_routers

Routers (Neutron)

openstack_list_floating_ips

Floating IPs (Neutron)

openstack_list_volumes

Block storage volumes (Cinder)

openstack_list_projects

Projects/tenants (Keystone)

Hi-Flying Serial Server (hf_*)

Tool

Description

hf_device_info

Device info (firmware, MAC address)

hf_get_serial_config

Serial port settings (baud, parity)

hf_set_serial_config

Change serial port parameters

hf_get_network

Network config (IP, gateway, TCP port)

hf_get_wifi

WiFi SSID and security (WiFi models)

hf_tcp_status

TCP link status

hf_at_command

Send raw AT command

hf_serial_send

Send data through serial port (TCP transparent)

hf_reboot

Reboot device

VPN Support

Container รองรับ 5 VPN protocols เพื่อเข้าถึงอุปกรณ์ที่อยู่หลัง VPN:

VPN

Config Location

Auto-connect

OpenVPN

vpn/openvpn/*.ovpn

ทุก .ovpn file

WireGuard

vpn/wireguard/*.conf

ทุก .conf file

Tailscale

TS_AUTHKEY in .env

เมื่อมี authkey

Cloudflare Tunnel

CF_TUNNEL_TOKEN in .env

เมื่อมี token

ZeroTier

ZT_NETWORKS in .env

เมื่อมี network IDs

Setup OpenVPN

วาง .ovpn config files ไว้ใน vpn/openvpn/:

cp your-vpn-config.ovpn vpn/openvpn/

Setup WireGuard

วาง WireGuard config ไว้ใน vpn/wireguard/:

cp wg0.conf vpn/wireguard/

Setup Tailscale

สร้าง auth key จาก https://login.tailscale.com/admin/settings/keys แล้วใส่ใน .env:

TS_AUTHKEY=tskey-auth-xxxxxxxxxxxxx

Setup ZeroTier

สร้าง network ที่ my.zerotier.com แล้วใส่ network ID ใน .env (หลาย network คั่นด้วย comma):

ZT_NETWORKS=af78bf9436abcdef

อย่าลืม authorize member ใน ZeroTier Central หลัง container join แล้ว

Setup Cloudflare Tunnel

สร้าง Tunnel จาก Cloudflare Zero Trust Dashboard -> Networks -> Tunnels แล้วคัดลอก token ใส่ .env:

CF_TUNNEL_TOKEN=eyJhIjoixxxxxxx...

กำหนด Private Network routes ใน Cloudflare Dashboard เพื่อให้ tunnel route traffic ไปยัง subnet ของอุปกรณ์

Device VPN Annotation

ระบุ VPN ที่อุปกรณ์ใช้ใน devices.json ด้วย field vpn (optional, ช่วยให้ Claude รู้ว่าอุปกรณ์อยู่หลัง VPN ไหน):

{
  "id": "cisco-remote",
  "name": "Cisco Remote Switch",
  "type": "cisco",
  "host": "10.8.0.100",
  "vpn": "openvpn",
  "tags": ["remote"]
}

Check VPN Status

ใช้ tool vpn_status เพื่อดูสถานะ VPN interfaces ทั้งหมด

Configuration

Device Types

Type

Required Fields

cisco, hp

host, username, password

fortigate

host, apiUrl, apiKey (REST) + username, password (SSH)

mikrotik

host, apiUrl, username, password

thingsboard

apiUrl, username, password

esphome

apiUrl, optional apiKey

espconnect

apiUrl, optional apiKey

tuya

apiUrl, extra.clientId, extra.clientSecret

sonoff

apiUrl, extra.appId, extra.appSecret, username, password

qnap

apiUrl, username, password

synology

apiUrl, username, password

proxmox

apiUrl, username, password (or apiKey for API token)

esxi

host, username, password (vSphere REST API, ESXi 6.5+)

dahua-nvr

apiUrl, username, password (HTTP CGI API, Basic auth)

dahua-dss

apiUrl, username, password (REST API, token auth)

openstack

apiUrl (Keystone), username, password, extra.project, extra.domain

hiflying

host, apiUrl, username, password, extra.atPort (49000), extra.serialPort (8899)

Docker Serial Port

Uncomment in docker-compose.yml for serial device access:

devices:
  - "/dev/ttyUSB0:/dev/ttyUSB0"

Environment Variables

Variable

Default

Description

SSE_HOST

0.0.0.0

SSE server bind address

SSE_PORT

3000

SSE server port (internal)

DEVICES_FILE

./devices.json

Path to device inventory

NODE_TLS_REJECT_UNAUTHORIZED

-

Set to 0 for self-signed certs

TS_AUTHKEY

-

Tailscale auth key (auto-connect)

CF_TUNNEL_TOKEN

-

Cloudflare Tunnel token (auto-connect)

ZT_NETWORKS

-

ZeroTier network IDs (comma-separated)

Tech Stack

  • Runtime: Node.js 22 (ES2022)

  • Language: TypeScript (NodeNext modules)

  • MCP SDK: @modelcontextprotocol/sdk ^1.0.0

  • SSH: ssh2 (pure JS, legacy algorithm support)

  • Serial: serialport (native bindings)

  • HTTP: Native fetch (Node 22 built-in)

  • Docker: node:22-slim multi-stage build

  • VPN: OpenVPN, WireGuard, Tailscale, Cloudflare Tunnel, ZeroTier (built into container)

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/monthop-gmail/iot-mcp-claude'

If you have feedback or need assistance with the MCP directory API, please join our Discord server