{"name":"io.github.nagarjunr/eclipse-ditto","slug":"nagarjunr-eclipse-ditto","title":"Eclipse Ditto","description":"MCP server for the Eclipse Ditto digital twin HTTP API (things, policies, connections, more).","url":"https://mcp.market/server/nagarjunr-eclipse-ditto","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":17,"stars":0,"forks":0,"downloads_week":23,"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.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"eclipse-ditto-mcp-server","version":"0.1.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base URL of the Ditto HTTP API, e.g. http://localhost:8080","isRequired":true,"name":"DITTO_BASE_URL"},{"description":"Basic auth username for the Things/Policies/Messages/Search API","name":"DITTO_USERNAME"},{"description":"Basic auth password for the Things/Policies/Messages/Search API","isSecret":true,"name":"DITTO_PASSWORD"},{"description":"Bearer token, used instead of Basic auth for the same API","isSecret":true,"name":"DITTO_BEARER_TOKEN"},{"description":"Basic auth username for the separate DevOps/Connections realm","name":"DITTO_DEVOPS_USERNAME"},{"description":"Basic auth password for the separate DevOps/Connections realm","isSecret":true,"name":"DITTO_DEVOPS_PASSWORD"}]}],"tools":[{"name":"claim_thing","description":"Send a claim message to gain access to a thing. Wraps POST /things/{thingId}/inbox/claim.","write_action":true,"price_micros":0,"input_schema":null},{"name":"count_things","description":"Count things matching a search filter, without fetching them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_connection","description":"Create a new connection; its ID is generated by Ditto. Wraps POST /api/2/connections.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_connection","description":"Delete a connection. Wraps DELETE /api/2/connections/{connectionId}. Irreversible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_feature","description":"Delete a whole feature. Wraps DELETE /things/{thingId}/features/{featureId}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_feature_definition","description":"Remove a feature's definition. Wraps DELETE .../features/{featureId}/definition.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_feature_properties","description":"Delete a feature's whole properties (or desiredProperties) object, or one property by path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_policy","description":"Delete a policy. Wraps DELETE /api/2/policies/{policyId}. Irreversible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_policy_entry","description":"Delete one policy entry. Wraps DELETE /policies/{policyId}/entries/{label}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_thing","description":"Delete a thing. Wraps DELETE /api/2/things/{thingId}. Irreversible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_thing_attributes","description":"Delete a thing's whole attributes object, or one attribute by path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_thing_definition","description":"Remove a thing's definition. Wraps DELETE /things/{thingId}/definition.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_connection","description":"Fetch a connection's config. Wraps GET /api/2/connections/{connectionId}. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_connection_logs","description":"Get a connection's logs. Wraps GET /connections/{connectionId}/logs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_connection_metrics","description":"Get a connection's metrics. Wraps GET /connections/{connectionId}/metrics. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_connection_status","description":"Get a connection's live status. Wraps GET /connections/{connectionId}/status. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_devops_config","description":"Get cluster-wide runtime configuration. Wraps GET /devops/config?path=... Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feature","description":"Fetch a single feature (definition + properties + desiredProperties).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feature_definition","description":"Get a feature's definition. Wraps GET .../features/{featureId}/definition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feature_properties","description":"Get a feature's properties (or desiredProperties), or one property by path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_logging_config","description":"Get currently configured log levels. Wraps GET /devops/logging[/{moduleName}]. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_policy","description":"Fetch a policy. Wraps GET /api/2/policies/{policyId}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_policy_entries","description":"Get all policy entries, or one entry by label. Wraps GET /policies/{policyId}/entries[/{label}].","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thing","description":"Fetch the full digital twin (attributes and features) for a thing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thing_attributes","description":"Get a thing's attributes, or one attribute by JSON pointer path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thing_definition","description":"Get a thing's definition (WoT model reference). Wraps GET /things/{thingId}/definition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thing_features","description":"Fetch only the feature state (sensor/actuator data) for a thing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thing_policy_id","description":"Get the policy ID controlling access to a thing. Wraps GET /things/{thingId}/policyId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_things","description":"Bulk-fetch multiple things by ID in one request.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_connections","description":"List all configured connections. Wraps GET /api/2/connections. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_things","description":"Search/list digital twins (things) registered in Ditto.","write_action":false,"price_micros":0,"input_schema":null},{"name":"patch_thing","description":"Partially update a thing (creates it if it doesn't exist yet).","write_action":true,"price_micros":0,"input_schema":null},{"name":"poll_thing_changes","description":"Open a short-lived SSE connection and collect live thing-change events.","write_action":false,"price_micros":0,"input_schema":null},{"name":"put_feature","description":"Create or replace a whole feature. Wraps PUT /things/{thingId}/features/{featureId}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"put_policy","description":"Create a new policy, or replace an existing one (with overwrite=True).","write_action":true,"price_micros":0,"input_schema":null},{"name":"put_thing","description":"Create a new thing, or replace an existing one (with overwrite=True).","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_connection_command","description":"Send a lifecycle/diagnostic command to a connection. Wraps POST /connections/{connectionId}/command.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_devops_piggyback","description":"Send a low-level admin (piggyback) command to the Ditto cluster.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_message","description":"Send a live message to (or from) a thing or one of its features.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_feature_definition","description":"Set a feature's definition. Wraps PUT .../features/{featureId}/definition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_feature_properties","description":"Set a feature's whole properties (or desiredProperties) object, or one property by path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_logging_config","description":"Set a log level for a logger. Wraps PUT /devops/logging[/{moduleName}]. Requires devops credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_policy_entry","description":"Create or replace one policy entry. Wraps PUT /policies/{policyId}/entries/{label}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_thing_attributes","description":"Set a thing's whole attributes object, or one attribute by path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_thing_definition","description":"Set a thing's definition. Wraps PUT /things/{thingId}/definition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_thing_policy_id","description":"Repoint a thing at a different policy. Wraps PUT /things/{thingId}/policyId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_connection","description":"Update an existing connection's config. Wraps PUT /api/2/connections/{connectionId}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"whoami","description":"Return the identity Ditto has authenticated this connector as. Wraps GET /api/2/whoami.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-24T21:43:18.935Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T21:43:18.911Z","components":{"code":{"score":25,"max":25,"notes":["4 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":"eclipse-ditto-mcp-server","version":"0.1.1","found":true,"weeklyDownloads":23,"license":"MIT","dependencyCount":2,"publishedAt":"2026-07-23T22:20:05.859716Z","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":23,"license":"MIT","lastPushAt":"2026-08-04T18:08:27.000Z","score":17}}}},"grade_history":[],"reviews":[]}