MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP Server for controlling IoT, Network, and Virtualization devices.

Created 2/11/2026
Updated about 9 hours ago
Repository documentation and setup instructions

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

Architecture

src/
├── index.ts                    # stdio transport
├── server-sse.ts               # SSE 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"]
    }
  ]
}

2. Docker (Recommended)

docker compose up -d

Server runs at http://localhost:3300 (SSE endpoint: /sse, health: /health)

3. Standalone

npm install
npm run build
npm run start:sse   # SSE 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/sse"
    }
  }
}

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 |

Sonoff/eWeLink (sonoff_*)

| 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)
Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-iot-mcp-claude

Cursor configuration (mcp.json)

{ "mcpServers": { "monthop-gmail-iot-mcp-claude": { "command": "npx", "args": [ "monthop-gmail-iot-mcp-claude" ] } } }