Azure IoT Hub MCP Server

Servidor MCP para Azure IoT Hub - registro de dispositivos, gêmeos, métodos diretos, trabalhos, mensagens

Documentação

Servidores MCP para IoT

Servidores MCP (Model Context Protocol) para plataformas de IoT — dando a agentes de IA acesso total de leitura/escrita a registros de dispositivos, gêmeos digitais e telemetria.

Python License: MIT CI MCP Registry

Servidores

ServidorPlataformaFerramentasPacote
eclipse-dittoEclipse Ditto gêmeos digitais (código aberto; também compatível com Bosch IoT Things e outras implantações baseadas em Ditto)48PyPI
mqttMQTT 5.0 — o protocolo padrão de pub/sub para IoT (qualquer broker: Mosquitto, EMQX, HiveMQ, AWS IoT Core, etc.)7PyPI
aws-iot-coreAWS IoT Core — registro de dispositivos, shadows, jobs, regras, mensagens48PyPI
azure-iot-hubAzure IoT Hub — registro de dispositivos, gêmeos, métodos diretos, jobs, mensagens25PyPI
sparkplug-bSparkplug B — convenção MQTT + protobuf para dados industriais/SCADA (birth/death, métricas sequenciadas, comandos)13PyPI

Cada linha vincula ao README do servidor para sua lista completa de ferramentas, variáveis de ambiente necessárias e notas de configuração/testes.

Estrutura

Cada servidor é um diretório independente neste repositório — com sua própria configuração de exemplo de pyproject.toml, uv.lock, Dockerfile e mcp.json. Sem camada de biblioteca compartilhada: cada servidor é executável e dockerizável de forma independente.

<server-name>/
├── <server-name>mcpserver.py   # FastMCP server (single file)
├── pyproject.toml              # own dependencies
├── uv.lock
├── Dockerfile
├── mcp.json                    # example MCP client config
└── README.md                   # tools, env vars, setup for this server

Requisitos

  • Python 3.12+
  • uv para gerenciamento de dependências e execução de servidores
  • Docker, somente se você quiser executar a suíte de testes do servidor contra uma instância real/emulada (consulte o README do servidor)

Início rápido

Instale diretamente do PyPI com uv ou pipx — sem necessidade de clonar:

uvx eclipse-ditto-mcp-server      # or: mqtt5-mcp-server / aws-iot-core-mcp-server / azure-iot-hub-mcp-server / sparkplug-b-mcp-server

Ou execute a partir de um clone deste repositório:

git clone https://github.com/nagarjunr/iot-mcp-servers.git
cd iot-mcp-servers/<server-name>
uv sync
uv run <server-name>mcpserver.py

Cada servidor lê sua configuração de variáveis de ambiente (strings de conexão, host do broker, credenciais, etc.) — consulte o README do servidor para a lista completa.

Uso com um cliente MCP

Cada diretório de servidor tem um mcp.json com um exemplo de configuração de cliente pronto para uso (Claude Desktop / VS Code / qualquer cliente MCP). Copie o bloco relevante para a configuração do seu cliente, preenchendo as variáveis de ambiente descritas no README do servidor. Todos os servidores também estão listados no registro oficial de MCP sob io.github.nagarjunr/<server-name>.

Princípios de design

  • Somente leitura por padrão, gravações explícitas. As ferramentas padronizam operações de leitura/listagem. Qualquer ferramenta de gravação é explicitamente destacada no README do servidor. As ferramentas de criação/substituição padronizam somente criação (overwrite=False) — sem corridas via cabeçalhos condicionais quando a API de destino suporta (ex.: If-None-Match do Ditto), caso contrário uma verificação documentada de descrever-depois-criar. Ferramentas de exclusão, quando um servidor precisa delas, exigem confirm=True explícito — não há exclusão em massa/cascata.
  • Sem aprisionamento a fornecedor. Os conectores visam o protocolo/API aberto (ex.: API HTTP do Eclipse Ditto, protocolo de fio MQTT), não a extensão proprietária de um único fornecedor, portanto funcionam com qualquer implantação compatível. Exceção: serviços de provedores de nuvem como AWS IoT Core são inerentemente específicos do fornecedor — nenhuma alegação de ausência de aprisionamento se aplica ali, mas também não se inventa nenhuma abstração entre fornecedores.
  • Testado contra o produto real, com exceções documentadas onde não existe instância real gratuita. Cada servidor é verificado contra uma instância real da plataforma de destino (geralmente via Docker), não mocks feitos à mão. mqtt e sparkplug-b executam contra um broker real Eclipse Mosquitto (os testes de sparkplug-b simulam o lado do "dispositivo" com a mesma biblioteca de protocolo real que o servidor usa, então ambas as pontas do fio são genuínas). aws-iot-core é testado contra moto (AWS IoT Core não tem emulador local gratuito; o suporte a IoT do LocalStack exige plano pago). azure-iot-hub é testado contra respx para suas ferramentas REST; sua única ferramenta exclusivamente AMQP (send_c2d_message — o envio de nuvem-para-dispositivo do Azure IoT Hub não tem binding REST) é testada contra um endpoint AMQP fake local construído para este repositório, já que não existe equivalente a moto para Azure e nenhum emulador gratuito de Azure IoT Hub. São emuladores genuínos/fakes em nível de protocolo, não mocks ingênuos — consulte o README de cada servidor para detalhes e ressalvas.

Contribuindo

Quer adicionar um novo servidor? Siga a estrutura e os princípios de design acima, adicione sua linha à tabela Servers e garanta que sua suíte de testes execute contra uma instância real ou fielmente emulada da plataforma de destino (documente qualquer exceção, como fazem aws-iot-core e azure-iot-hub). Issues e PRs são bem-vindos.

Licença

MIT — consulte LICENSE.