{"name":"io.github.nagarjunr/azure-iot-hub","slug":"nagarjunr-azure-iot-hub","title":"Azure IoT Hub","description":"MCP server for Azure IoT Hub: device registry, twins, methods, jobs, messaging.","url":"https://mcp.market/server/nagarjunr-azure-iot-hub","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":10,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-04T18:08:27.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/nagarjunr/iot-mcp-servers","website":null,"version":"0.1.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"azure-iot-hub-mcp-server","version":"0.1.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"IoT Hub connection string with service/iothubowner rights, e.g. HostName=my-hub.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=...","isRequired":true,"isSecret":true,"name":"AZURE_IOT_HUB_CONNECTION_STRING"},{"description":"AMQP port for send_c2d_message, default 5671","name":"AZURE_IOT_HUB_AMQP_PORT"},{"description":"true/false, default true","name":"AZURE_IOT_HUB_AMQP_USE_TLS"}]}],"tools":[{"name":"cancel_scheduled_job","description":"Cancel a scheduled job. Wraps POST /jobs/v2/{id}/cancel.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_device","description":"Register a new device identity. Wraps PUT /devices/{id}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_module","description":"Register a new module identity on a device. Wraps PUT /devices/{deviceId}/modules/{moduleId}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_scheduled_job","description":"Create a scheduled job to update twins or invoke a method across many devices. Wraps PUT /jobs/v2/{id}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_device","description":"Delete a device identity. Wraps DELETE /devices/{id}. Irreversible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_module","description":"Delete a module identity. Wraps DELETE /devices/{deviceId}/modules/{moduleId}. Irreversible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_device","description":"Fetch a device's identity (auth mechanism, status, connection state). Wraps GET /devices/{id}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_device_statistics","description":"Get identity-registry statistics (total/enabled/disabled device counts). Wraps GET /statistics/devices.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_device_twin","description":"Fetch a device's twin (tags, desired/reported properties). Wraps GET /twins/{id}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_module","description":"Fetch a module identity. Wraps GET /devices/{deviceId}/modules/{moduleId}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_module_twin","description":"Fetch a module's twin. Wraps GET /twins/{deviceId}/modules/{moduleId}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_scheduled_job","description":"Fetch a scheduled job's status and results. Wraps GET /jobs/v2/{id}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_service_statistics","description":"Get service statistics (e.g. connected device count). Wraps GET /statistics/service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"invoke_device_method","description":"Invoke a direct method on a device. Wraps POST /twins/{deviceId}/methods.","write_action":false,"price_micros":0,"input_schema":null},{"name":"invoke_module_method","description":"Invoke a direct method on a module. Wraps POST /twins/{deviceId}/modules/{moduleId}/methods.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_devices","description":"List devices in the identity registry. For filtering, prefer query_devices instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_modules","description":"List module identities on a device. Wraps GET /devices/{deviceId}/modules.","write_action":false,"price_micros":0,"input_schema":null},{"name":"purge_c2d_message_queue","description":"Delete all pending cloud-to-device messages queued for a device. Wraps DELETE /devices/{deviceId}/commands.","write_action":true,"price_micros":0,"input_schema":null},{"name":"query_devices","description":"Query devices/twins using IoT Hub's query language. Wraps POST /devices/query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_scheduled_jobs","description":"List scheduled jobs, optionally filtered. Wraps GET /jobs/v2/query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"replace_device_twin","description":"Replace (not merge) a device twin's tags and desired properties. Wraps PUT /twins/{id}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_c2d_message","description":"Send a cloud-to-device message. Wraps the AMQP C2D send (there is no REST equivalent for sending -- only the REST API's feedback/receipt operations are REST; the send itself is AMQP-only in the Azure IoT Hub service API).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_device","description":"Update a device's status. Wraps PUT /devices/{id} (full device fetched first, then patched fields applied).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_device_twin","description":"Merge-update a device twin's tags and/or desired properties. Wraps PATCH /twins/{id}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_module_twin","description":"Merge-update a module twin's tags and/or desired properties. Wraps PATCH /twins/{deviceId}/modules/{moduleId}.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-24T21:43:02.225Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T21:43:02.222Z","components":{"code":{"score":25,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 51 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"azure-iot-hub-mcp-server","version":"0.1.0","found":true,"license":"MIT","dependencyCount":3,"publishedAt":"2026-07-24T18:48:49.208642Z","repositoryUrl":"https://github.com/nagarjunr/iot-mcp-servers"}],"repo":{"found":true,"owner":"nagarjunr","repo":"iot-mcp-servers","archived":false,"pushedAt":"2026-08-04T18:08:27Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/7522071?v=4","ownerCreatedAt":"2014-05-08T09:41:23Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-04T18:08:27.000Z","score":10}}}},"grade_history":[],"reviews":[]}