# Eclipse Ditto MCP server

> Allows an AI agent to manage digital twins, including things, attributes, policies, connections, and cluster administration via the Ditto HTTP API.

- Repository: https://github.com/nagarjunr/iot-mcp-servers
- Page: https://hostedmcp.org/servers/nagarjunr/eclipse-ditto
- Transport: stdio
- Stars: 0
- License: MIT
- Latest version: 0.1.1

## Install

### Claude Code

```sh
claude mcp add --env 'DITTO_BASE_URL=<DITTO_BASE_URL>' --env 'DITTO_BEARER_TOKEN=<YOUR_DITTO_BEARER_TOKEN>' --env 'DITTO_DEVOPS_PASSWORD=<YOUR_DITTO_DEVOPS_PASSWORD>' --env 'DITTO_PASSWORD=<YOUR_DITTO_PASSWORD>' eclipse-ditto -- uvx eclipse-ditto-mcp-server
```

### Cursor (`~/.cursor/mcp.json`)

```json
{
  "mcpServers": {
    "eclipse-ditto": {
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "<DITTO_BASE_URL>",
        "DITTO_BEARER_TOKEN": "<YOUR_DITTO_BEARER_TOKEN>",
        "DITTO_DEVOPS_PASSWORD": "<YOUR_DITTO_DEVOPS_PASSWORD>",
        "DITTO_PASSWORD": "<YOUR_DITTO_PASSWORD>"
      }
    }
  }
}
```

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "eclipse-ditto": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "<DITTO_BASE_URL>",
        "DITTO_BEARER_TOKEN": "<YOUR_DITTO_BEARER_TOKEN>",
        "DITTO_DEVOPS_PASSWORD": "<YOUR_DITTO_DEVOPS_PASSWORD>",
        "DITTO_PASSWORD": "<YOUR_DITTO_PASSWORD>"
      }
    }
  }
}
```

### VS Code CLI

```sh
code --add-mcp '{"name":"eclipse-ditto","type":"stdio","command":"uvx","args":["eclipse-ditto-mcp-server"],"env":{"DITTO_BASE_URL":"<DITTO_BASE_URL>","DITTO_BEARER_TOKEN":"<YOUR_DITTO_BEARER_TOKEN>","DITTO_DEVOPS_PASSWORD":"<YOUR_DITTO_DEVOPS_PASSWORD>","DITTO_PASSWORD":"<YOUR_DITTO_PASSWORD>"}}'
```

### Claude Desktop (`claude_desktop_config.json`)

```json
{
  "mcpServers": {
    "eclipse-ditto": {
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "<DITTO_BASE_URL>",
        "DITTO_BEARER_TOKEN": "<YOUR_DITTO_BEARER_TOKEN>",
        "DITTO_DEVOPS_PASSWORD": "<YOUR_DITTO_DEVOPS_PASSWORD>",
        "DITTO_PASSWORD": "<YOUR_DITTO_PASSWORD>"
      }
    }
  }
}
```

### Codex

```sh
codex mcp add eclipse-ditto --env 'DITTO_BASE_URL=<DITTO_BASE_URL>' --env 'DITTO_BEARER_TOKEN=<YOUR_DITTO_BEARER_TOKEN>' --env 'DITTO_DEVOPS_PASSWORD=<YOUR_DITTO_DEVOPS_PASSWORD>' --env 'DITTO_PASSWORD=<YOUR_DITTO_PASSWORD>' -- uvx eclipse-ditto-mcp-server
```

### Codex config.toml (`~/.codex/config.toml`)

```toml
[mcp_servers.eclipse-ditto]
command = "uvx"
args = ["eclipse-ditto-mcp-server"]

[mcp_servers.eclipse-ditto.env]
DITTO_BASE_URL = "<DITTO_BASE_URL>"
DITTO_BEARER_TOKEN = "<YOUR_DITTO_BEARER_TOKEN>"
DITTO_DEVOPS_PASSWORD = "<YOUR_DITTO_DEVOPS_PASSWORD>"
DITTO_PASSWORD = "<YOUR_DITTO_PASSWORD>"
```

### Gemini CLI

```sh
gemini mcp add -s user -e 'DITTO_BASE_URL=<DITTO_BASE_URL>' -e 'DITTO_BEARER_TOKEN=<YOUR_DITTO_BEARER_TOKEN>' -e 'DITTO_DEVOPS_PASSWORD=<YOUR_DITTO_DEVOPS_PASSWORD>' -e 'DITTO_PASSWORD=<YOUR_DITTO_PASSWORD>' eclipse-ditto uvx -- eclipse-ditto-mcp-server
```

### Gemini settings.json (`~/.gemini/settings.json`)

```json
{
  "mcpServers": {
    "eclipse-ditto": {
      "command": "uvx",
      "args": [
        "eclipse-ditto-mcp-server"
      ],
      "env": {
        "DITTO_BASE_URL": "<DITTO_BASE_URL>",
        "DITTO_BEARER_TOKEN": "<YOUR_DITTO_BEARER_TOKEN>",
        "DITTO_DEVOPS_PASSWORD": "<YOUR_DITTO_DEVOPS_PASSWORD>",
        "DITTO_PASSWORD": "<YOUR_DITTO_PASSWORD>"
      }
    }
  }
}
```

## Environment variables

| Name | Required | Secret | Description |
|---|---|---|---|
| `DITTO_BASE_URL` | yes | no | Base URL of the Ditto HTTP API, e.g. http://localhost:8080 |
| `DITTO_BEARER_TOKEN` | no | yes | Bearer token, used instead of Basic auth for the same API |
| `DITTO_DEVOPS_PASSWORD` | no | yes | Basic auth password for the separate DevOps/Connections realm |
| `DITTO_PASSWORD` | no | yes | Basic auth password for the Things/Policies/Messages/Search API |
| `DITTO_DEVOPS_USERNAME` | no | no | Basic auth username for the separate DevOps/Connections realm |
| `DITTO_USERNAME` | no | no | Basic auth username for the Things/Policies/Messages/Search API |

## FAQ

### Does the server support real-time event monitoring?

Yes, it can poll for live thing-change events using a short-lived SSE connection.
