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.
Servidores
| Servidor | Plataforma | Ferramentas | Pacote |
|---|---|---|---|
eclipse-ditto | Eclipse Ditto gêmeos digitais (código aberto; também compatível com Bosch IoT Things e outras implantações baseadas em Ditto) | 48 | |
mqtt | MQTT 5.0 — o protocolo padrão de pub/sub para IoT (qualquer broker: Mosquitto, EMQX, HiveMQ, AWS IoT Core, etc.) | 7 | |
aws-iot-core | AWS IoT Core — registro de dispositivos, shadows, jobs, regras, mensagens | 48 | |
azure-iot-hub | Azure IoT Hub — registro de dispositivos, gêmeos, métodos diretos, jobs, mensagens | 25 | |
sparkplug-b | Sparkplug B — convenção MQTT + protobuf para dados industriais/SCADA (birth/death, métricas sequenciadas, comandos) | 13 |
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-Matchdo Ditto), caso contrário uma verificação documentada de descrever-depois-criar. Ferramentas de exclusão, quando um servidor precisa delas, exigemconfirm=Trueexplí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.
mqttesparkplug-bexecutam contra um broker real Eclipse Mosquitto (os testes desparkplug-bsimulam 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.