プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Azure IoT Hub

作者:nagarjunrバージョン 0.1.0i★ –iパソコンで動く
レジストリ名io.github.nagarjunr/azure-iot-hub

インストール

概要

作者による説明(英語の原文)

MCP server for Azure IoT Hub: device registry, twins, methods, jobs, messaging.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 開発者ツール
  • 入力が必要なもの:AZURE_IOT_HUB_CONNECTION_STRING

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: AZURE_IOT_HUB_CONNECTION_STRING, AZURE_IOT_HUB_AMQP_PORT, AZURE_IOT_HUB_AMQP_USE_TLS

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "azure-iot-hub": {
      "command": "uvx",
      "args": [
        "azure-iot-hub-mcp-server"
      ],
      "env": {
        "AZURE_IOT_HUB_CONNECTION_STRING": "your-value",
        "AZURE_IOT_HUB_AMQP_PORT": "your-value",
        "AZURE_IOT_HUB_AMQP_USE_TLS": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add azure-iot-hub --env AZURE_IOT_HUB_CONNECTION_STRING=your-value --env AZURE_IOT_HUB_AMQP_PORT=your-value --env AZURE_IOT_HUB_AMQP_USE_TLS=your-value -- uvx azure-iot-hub-mcp-server

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "azure-iot-hub": {
      "command": "uvx",
      "args": [
        "azure-iot-hub-mcp-server"
      ],
      "env": {
        "AZURE_IOT_HUB_CONNECTION_STRING": "your-value",
        "AZURE_IOT_HUB_AMQP_PORT": "your-value",
        "AZURE_IOT_HUB_AMQP_USE_TLS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "azure-iot-hub": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "azure-iot-hub-mcp-server"
      ],
      "env": {
        "AZURE_IOT_HUB_CONNECTION_STRING": "your-value",
        "AZURE_IOT_HUB_AMQP_PORT": "your-value",
        "AZURE_IOT_HUB_AMQP_USE_TLS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • AZURE_IOT_HUB_CONNECTION_STRING 秘密 必須 env
    IoT Hub connection string with service/iothubowner rights, e.g. HostName=my-hub.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=...
  • AZURE_IOT_HUB_AMQP_PORT env
    AMQP port for send_c2d_message, default 5671
  • AZURE_IOT_HUB_AMQP_USE_TLS env
    true/false, default true

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント nagarjunr で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

開発者ツールのほかのサーバーとの比較i

  • このカテゴリのほかの1396件のうち0%よりスターが多い
  • このカテゴリのほかの1396件のうち35%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1396件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Azure IoT Hubは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:AZURE_IOT_HUB_CONNECTION_STRING

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは4 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

GitHub

作者:github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

パソコンでもクラウドでも★ 34,245MIT4 日前更新
インストール

Desktop Commander

作者:wonderwhy-er

MCP server for terminal commands, file operations, and process management

パソコンで動く★ 10,225MIT16 日前更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Azure IoT Hub MCP Server

A Model Context Protocol (MCP) server for Azure IoT Hub — device registry, device twins, direct methods, jobs, and messaging.

Scoped to IoT Hub's service-side data plane (device management), not Azure Resource Manager. Microsoft's own official Azure MCP Server already covers the ARM-level "show me my IoT Hub resource" case — this server covers the actual device-management capability that Azure MCP doesn't.

Calls Azure IoT Hub's REST Service API directly via httpx with a hand-rolled SAS token generator, rather than the official azure-iot-hub PyPI package — that package hard-depends on uamqp, a C-extension that fails to build on modern Python/platforms (confirmed: it doesn't install on Python 3.12/arm64). Built with FastMCP.

Tools

Device registry
ToolDescription
list_devices(max_count)List devices. For filtering, prefer query_devices.
query_devices(query, max_item_count, continuation_token)IoT Hub SQL-like query over devices/twins, with pagination.
get_device(device_id)Fetch a device's identity (auth mechanism, status, connection state).
create_device(device_id, auth_type, ..., overwrite=False)Register a device.
update_device(device_id, status, status_reason, etag)Update a device's enabled/disabled status.
delete_device(device_id, confirm=False, etag)Delete a device. Irreversible.
Modules
ToolDescription
list_modules(device_id) / get_module(device_id, module_id)List/read module identities on a device.
create_module(device_id, module_id, ..., overwrite=False)Register a module.
delete_module(device_id, module_id, confirm=False)Delete a module. Irreversible.
Device & module twins
ToolDescription
get_device_twin(device_id) / get_module_twin(device_id, module_id)Read a twin (tags, desired/reported properties).
update_device_twin(device_id, tags, desired_properties, etag)Merge-update tags/desired properties.
replace_device_twin(device_id, tags, desired_properties, etag)Full replace (not merge) of tags/desired properties.
update_module_twin(device_id, module_id, tags, desired_properties, etag)Merge-update a module twin.
Direct methods
ToolDescription
invoke_device_method(device_id, method_name, payload, ...)Invoke a direct method on a device (blocks until the device responds or times out).
invoke_module_method(device_id, module_id, method_name, payload, ...)Same, scoped to a module.
Jobs (fleet-scale operations)
ToolDescription
create_scheduled_job(job_id, job_type, query_condition, ...)Schedule a twin update or direct method across many devices matching a query.
get_scheduled_job(job_id) / query_scheduled_jobs(job_type, job_status)Read job status/results.
cancel_scheduled_job(job_id, confirm=False)Cancel a job.
Messaging
ToolDescription
send_c2d_message(device_id, payload, ...)Send a cloud-to-device message. AMQP, not REST — see caveat below.
purge_c2d_message_queue(device_id)Delete all pending C2D messages queued for a device.
Statistics
ToolDescription
get_device_statistics()Total/enabled/disabled device counts.
get_service_statistics()Service-level stats (e.g. connected device count).

Important caveat: send_c2d_message is AMQP, not REST, and has no real-instance test coverage

Every other tool in this server wraps a documented REST endpoint. Cloud-to-device message sending is the one exception: Azure IoT Hub's REST API only exposes the *feedback* side of C2D messaging (delivery receipts); sending is AMQP-protocol-only (confirmed by reading the official azure-iot-hub SDK's source — it hands off to an AMQP client, not an HTTP call).

To support it without pulling in the broken uamqp dependency, send_c2d_message implements the CBS (Claims-Based Security) auth handshake and message send directly against python-qpid-proton (the standard AMQP 1.0 library, confirmed to install cleanly on modern Python). The protocol details (CBS field names, $cbs node, /messages/devicebound target address, to property format) were confirmed from Microsoft's own pure-Python AMQP implementation in azure-eventhub/azure-servicebus, not guessed.

This tool is not covered by real-instance testing. There's no free Azure IoT Hub emulator (see Testing below), and the test suite's respx HTTP mocking can't exercise AMQP at all. Tests instead run this against a local fake AMQP endpoint (also built with qpid-proton) that implements just enough of the CBS handshake and /messages/devicebound receiver to prove the wire protocol is well-formed — it does not validate genuine Azure IoT Hub business logic. Verify against a real hub before relying on this in production.

Safety conventions

Same as the rest of this repo: create_* defaults to overwrite=False (best-effort describe-then-create check — IoT Hub's If-Match header is for optimistic-concurrency on updates, not create-only semantics, so this isn't fully race-free like Ditto's If-None-Match). Every delete_*/cancel_* requires confirm=True.

Configuration

Env varRequiredDescription
AZURE_IOT_HUB_CONNECTION_STRINGYesAn IoT Hub connection string with service (or iothubowner) rights, e.g. HostName=my-hub.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=.... Find this under your hub's "Shared access policies" in the Azure portal.
AZURE_IOT_HUB_AMQP_PORTNoDefault 5671. Only relevant to send_c2d_message.
AZURE_IOT_HUB_AMQP_USE_TLSNotrue/false, default true. Set false only for local/test endpoints.
AZURE_IOT_HUB_AMQP_HOSTNAME_OVERRIDENoOverride the AMQP connection target (e.g. a local test fixture) without changing the REST hostname derived from the connection string.

Running locally

uv sync

export AZURE_IOT_HUB_CONNECTION_STRING="HostName=my-hub.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=..." uv run azureiothubmcpserver.py

See mcp.json for ready-to-use client configs (stdio and Docker).

Testing

This repo's design principles call for testing against a real instance rather than mocks. Azure IoT Hub has no official local emulator and no moto-equivalent exists for it. REST endpoints are tested with respx (httpx's dedicated mocking library, using realistic Azure response shapes); send_c2d_message is tested against a local fake AMQP endpoint (see caveat above).

uv run pytest -v

License notes

No bundled deployment artifacts here (unlike eclipse-ditto/mqtt) since there's no local broker/service to run — Azure IoT Hub only exists as an Azure-hosted service.

PopNxに聞く