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

Eclipse Ditto

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

インストール

概要

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

MCP server for the Eclipse Ditto digital twin HTTP API (things, policies, connections, more).

PopNx MCPの3つの柱

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

できること

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

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他
  • 入力が必要なもの:DITTO_BASE_URL, DITTO_PASSWORD, DITTO_BEARER_TOKEN, DITTO_DEVOPS_PASSWORD

インストール

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

インストールの前に

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

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

必要なもの

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

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

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

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

{
  "mcpServers": {
    "eclipse-ditto": {
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "your-value",
        "DITTO_USERNAME": "your-value",
        "DITTO_PASSWORD": "your-value",
        "DITTO_BEARER_TOKEN": "your-value",
        "DITTO_DEVOPS_USERNAME": "your-value",
        "DITTO_DEVOPS_PASSWORD": "your-value"
      }
    }
  }
}

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

claude mcp add eclipse-ditto --env DITTO_BASE_URL=your-value --env DITTO_USERNAME=your-value --env DITTO_PASSWORD=your-value --env DITTO_BEARER_TOKEN=your-value --env DITTO_DEVOPS_USERNAME=your-value --env DITTO_DEVOPS_PASSWORD=your-value -- uvx eclipse-ditto-mcp-server

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

Cursorで開く

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

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

{
  "mcpServers": {
    "eclipse-ditto": {
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "your-value",
        "DITTO_USERNAME": "your-value",
        "DITTO_PASSWORD": "your-value",
        "DITTO_BEARER_TOKEN": "your-value",
        "DITTO_DEVOPS_USERNAME": "your-value",
        "DITTO_DEVOPS_PASSWORD": "your-value"
      }
    }
  }
}

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

VS Codeで開く

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

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

{
  "servers": {
    "eclipse-ditto": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "your-value",
        "DITTO_USERNAME": "your-value",
        "DITTO_PASSWORD": "your-value",
        "DITTO_BEARER_TOKEN": "your-value",
        "DITTO_DEVOPS_USERNAME": "your-value",
        "DITTO_DEVOPS_PASSWORD": "your-value"
      }
    }
  }
}

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

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

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

自分で入力する値

  • DITTO_BASE_URL 必須 env
    Base URL of the Ditto HTTP API, e.g. http://localhost:8080
  • DITTO_USERNAME env
    Basic auth username for the Things/Policies/Messages/Search API
  • DITTO_PASSWORD 秘密 env
    Basic auth password for the Things/Policies/Messages/Search API
  • DITTO_BEARER_TOKEN 秘密 env
    Bearer token, used instead of Basic auth for the same API
  • DITTO_DEVOPS_USERNAME env
    Basic auth username for the separate DevOps/Connections realm
  • DITTO_DEVOPS_PASSWORD 秘密 env
    Basic auth password for the separate DevOps/Connections realm

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

できること

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

基本チェックi

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

  • ✓ 合格

    作者とリポジトリが一致

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

  • … 未チェック

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

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

  • … 未チェック

    ライセンスがある

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

  • – 対象外

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

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

  • – 対象外

    OAuthでサインイン

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

  • … 未チェック

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

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

その他のほかのサーバーとの比較i

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

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

よくある質問

Eclipse Dittoは安全ですか?

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

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

入力が必要なもの:DITTO_BASE_URL, DITTO_PASSWORD, DITTO_BEARER_TOKEN, DITTO_DEVOPS_PASSWORD

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

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

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

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

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

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

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Intervals MCP

代わりの候補

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

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

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

クラウドで動く★ 211一昨日更新
インストール

作者のREADME

READMEを開く

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

Eclipse Ditto MCP Server

A Model Context Protocol (MCP) server for Eclipse Ditto — the open-source (EPL-2.0) digital twin framework. It exposes Ditto's HTTP API as MCP tools so an AI agent can manage devices ("things"), their attributes/features, policies, connections, and cluster admin — the full Ditto HTTP API surface.

Since Bosch IoT Things and other commercial IoT platforms are built on Ditto's open protocol, this server also works against those deployments — nothing in the code is vendor-specific.

Built with FastMCP.

Tools

Things
ToolDescription
list_things(namespaces, filter, fields, limit)Search/list things. filter is a Ditto RQL expression, e.g. eq(attributes/location,"lab-1").
count_things(namespaces, filter)Count things matching a filter without fetching them.
get_things(thing_ids, fields)Bulk-fetch multiple things by ID in one request.
get_thing(thing_id, fields)Fetch the full digital twin for one thing.
put_thing(thing_id, thing, overwrite=False)Create a thing, or replace one with overwrite=True.
patch_thing(thing_id, patch)Partially update a thing via RFC-7396 JSON Merge Patch.
delete_thing(thing_id, confirm=False)Delete a thing. Irreversible.
get_thing_policy_id / set_thing_policy_idRead/repoint the policy controlling a thing.
get_thing_definition / set_thing_definition / delete_thing_definitionManage a thing's WoT/model definition.
whoami()Return the identity Ditto authenticated this connector as — useful to sanity-check credentials.
Attributes & Features
ToolDescription
get_thing_attributes(thing_id, path=None)Get all attributes, or one by JSON pointer path.
set_thing_attributes(thing_id, value, path=None, overwrite=False)Set the whole attributes object, or one attribute.
delete_thing_attributes(thing_id, path=None, confirm=False)Delete attributes (whole object or one path).
get_thing_features(thing_id)Get all features (sensor/actuator state).
get_feature / put_feature / delete_featureRead/create-replace/delete one whole feature.
get_feature_properties / set_feature_properties / delete_feature_propertiesRead/write/delete feature properties or desiredProperties, whole or by path.
get_feature_definition / set_feature_definition / delete_feature_definitionManage a feature's definition.
Messages
ToolDescription
send_message(thing_id, subject, payload, feature_id=None, direction="inbox", timeout=10)Send a live message to/from a thing or feature (e.g. invoke a device operation).
claim_thing(thing_id, payload=None, timeout=10)Send a claim message to gain access to a thing.
Policies
ToolDescription
get_policy / put_policy / delete_policyRead/create-replace/delete a policy.
get_policy_entries(policy_id, label=None)Read all entries, or one by label.
set_policy_entry / delete_policy_entryCreate-replace/delete one policy entry.
Connectivity & DevOps *(require DITTO_DEVOPS_USERNAME/DITTO_DEVOPS_PASSWORD)*

Ditto's Connections API and DevOps API (log levels, cluster config, piggyback commands) sit behind a separate "devops" Basic-auth realm on the gateway, independent of the policy-based auth used for things/policies.

ToolDescription
list_connections / get_connectionList/fetch connection configs.
create_connection(connection, dry_run=False)Create a connection (ID generated by Ditto).
update_connection(connection_id, connection)Update an existing connection (404 if it doesn't exist).
delete_connection(connection_id, confirm=False)Delete a connection.
get_connection_status / get_connection_metrics / get_connection_logsInspect a connection's live state.
send_connection_command(connection_id, command)Open/close/reset-metrics/enable-logs/reset-logs.
get_logging_config / set_logging_configRead/set cluster log levels.
get_devops_config(path)Read cluster-wide runtime config.
send_devops_piggyback(command, service_name=None, instance_index=None)Low-level admin command — Ditto's most powerful, least-guarded API. Use with care.
Live events
ToolDescription
poll_thing_changes(thing_ids, namespaces, filter, fields, duration_seconds=10, max_events=50)Open a short-lived SSE connection and collect live thing-change events. A request/response approximation of Ditto's persistent change feed — see caveat below.

Safety conventions

  • Create vs. replace: every put_*/set_*/create_* tool defaults to overwrite=False, using Ditto's If-None-Match: * header so create-only is race-free (not a check-then-set). Pass overwrite=True to replace existing data.
  • Deletes are confirm-gated: every delete_* tool requires confirm=True. There is no bulk/cascading delete.
  • Not covered (deliberately): WoT Web-of-Things descriptor endpoints (/.well-known/wot, /devops/wot/*), and fine-grained policy sub-resources (subjects/{id}, resources/{path}, imports, token-integration actions) — whole-entry set_policy_entry/get_policy_entries covers the common case. Add these later if you need them.

Configuration

Env varRequiredDescription
DITTO_BASE_URLYesBase URL of the Ditto HTTP API, e.g. http://localhost:8080 or your gateway's public URL.
DITTO_USERNAME / DITTO_PASSWORDNoBasic auth for the Things/Policies/Messages/Search API. Typical for self-hosted Ditto (nginx demo setup uses ditto/ditto).
DITTO_BEARER_TOKENNoBearer token, used instead of Basic auth for the same API. Typical for OAuth2-fronted deployments (e.g. Bosch IoT Things).
DITTO_DEVOPS_USERNAME / DITTO_DEVOPS_PASSWORDNoBasic auth for the separate DevOps/Connections realm (self-hosted default: devops/foobar). Required only for the Connectivity and DevOps tools.

If both DITTO_BEARER_TOKEN and Basic auth credentials are set, the bearer token takes precedence. If neither is set, requests are sent unauthenticated (only works if your Ditto instance allows anonymous/pre-authenticated access).

Running locally

uv sync

export DITTO_BASE_URL=http://localhost:8080 export DITTO_USERNAME=ditto export DITTO_PASSWORD=ditto export DITTO_DEVOPS_USERNAME=devops # only needed for connectivity/devops tools export DITTO_DEVOPS_PASSWORD=foobar uv run dittomcpserver.py

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

Testing against a real Ditto instance

This repo's design principles call for testing against a real instance rather than mocks. docker-compose.yml (adapted from Ditto's official example, trimmed to the services this connector needs) spins up a full local Ditto stack — MongoDB, the Ditto microservices, and an nginx front door with Basic auth.

docker compose up -d       # start Ditto on http://localhost:8080 (user: ditto / pass: ditto; devops: devops / foobar)

uv run pytest -v # tests/conftest.py also starts/stops the stack automatically docker compose down # stop it manually if you started it yourself

The 47 tests cover every tool group (things, attributes/features, messages, policies, connectivity, devops, live events) against this real stack, including delete/confirm gating and create/overwrite gating.

A note on the live-events approximation

poll_thing_changes opens Ditto's SSE change feed for a bounded window instead of holding a persistent subscription (which doesn't map cleanly onto a single MCP tool call). Ditto's SSE stream sends periodic empty data: keepalive lines even when nothing has changed — the tool checks its deadline on every line received, including keepalives, so it reliably returns within duration_seconds regardless of how chatty or quiet the stream is.

License notes

docker-compose.yml and the files under docker/ are adapted from the Eclipse Ditto project (EPL-2.0) and are used here only to spin up a local test instance — they are not part of the MCP server itself.

PopNxに聞く