{"id":51195635,"url":"https://github.com/litmusautomation/litmus-mcp-plugin","last_synced_at":"2026-06-27T20:01:21.598Z","repository":{"id":359651521,"uuid":"1246118430","full_name":"litmusautomation/litmus-mcp-plugin","owner":"litmusautomation","description":"Natural-language access to Litmus Edge industrial IoT, packaged as a plugin for Claude Code and OpenAI Codex","archived":false,"fork":false,"pushed_at":"2026-05-22T20:47:58.000Z","size":128,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T22:26:05.047Z","etag":null,"topics":["claude-code","codex","iiot","industrial-iot","litmus-edge","mcp"],"latest_commit_sha":null,"homepage":"https://litmus.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/litmusautomation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T22:25:14.000Z","updated_at":"2026-05-22T20:48:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/litmusautomation/litmus-mcp-plugin","commit_stats":null,"previous_names":["litmusautomation/litmus-mcp-plugin"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/litmusautomation/litmus-mcp-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litmusautomation%2Flitmus-mcp-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litmusautomation%2Flitmus-mcp-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litmusautomation%2Flitmus-mcp-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litmusautomation%2Flitmus-mcp-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/litmusautomation","download_url":"https://codeload.github.com/litmusautomation/litmus-mcp-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litmusautomation%2Flitmus-mcp-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34866118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","codex","iiot","industrial-iot","litmus-edge","mcp"],"created_at":"2026-06-27T20:01:04.604Z","updated_at":"2026-06-27T20:01:21.593Z","avatar_url":"https://github.com/litmusautomation.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://litmus.io\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./litmus-logo-light.svg\" /\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./litmus-logo-dark.svg\" /\u003e\n      \u003cimg src=\"./litmus-logo-light.svg\" height=\"60\" alt=\"Litmus logo\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.litmus.io\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Litmus-Docs-2acfa6?style=flat-square\" alt=\"Documentation\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.linkedin.com/company/litmus-automation/\" \u003e\n    \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Follow-0a66c2?style=flat-square\" alt=\"Follow on LinkedIn\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Litmus MCP Plugin\n\nNatural-language access to Litmus Edge industrial IoT, packaged as a plugin for Claude Code and OpenAI Codex.\n\nOne repo, two plugin hosts. Same MCP server code under the hood.\n\n## What you get\n\n- **57 MCP tools** covering DeviceHub (devices, drivers, tags), DataHub (NATS topics, InfluxDB queries), Digital Twins (models, instances, attributes, hierarchy), Applications (Docker containers), System (events, network, firewall, packet capture), and Litmus Edge Manager (fleet, licensing, dashboard, bridge mode).\n- **12 live doc resources**: MCP Resources fetch current pages from docs.litmus.io on demand, so the LLM never works from stale training data.\n- **Slash commands** for the most common one-shot queries:\n  - `/litmus-status` -- identity + device count + cloud activation\n  - `/litmus-devices` -- device table\n  - `/litmus-drivers` -- protocol drivers (active vs stopped)\n  - `/litmus-tags \u003cdevice\u003e` -- tags for a device\n  - `/litmus-containers` -- Docker containers on the Edge\n  - `/litmus-events [N]` -- recent system events\n  - `/litmus-network` -- network interface summary\n  - `/litmus-lem-fleet` -- LEM project fleet overview\n  - `/litmus-lem-licenses [days]` -- expired and soon-to-expire licenses\n- **Skills** for multi-step diagnostic workflows:\n  - `litmus-troubleshoot` -- root-cause analysis when a device is offline, stale, or returning bad values\n  - `litmus-lem-audit` -- fleet-wide LEM project health audit (alerts, license risk, version spread)\n- **`litmus-expert` subagent** for grounded questions about Litmus Edge concepts and API behavior, using live docs rather than training data.\n\n## Install\n\n### Claude Code\n\n```\n/plugin marketplace add litmusautomation/litmus-mcp-plugin\n/plugin install litmus-mcp@litmus-plugins\n```\n\nOn install, Claude Code prompts for your Litmus Edge URL, OAuth client ID/secret, and optional NATS/InfluxDB settings. Sensitive values go to the system keychain.\n\n### Codex (CLI)\n\n1. Add the marketplace and install the plugin:\n\n   ```bash\n   codex plugin marketplace add litmusautomation/litmus-mcp-plugin\n   codex plugin add litmus-mcp@litmus-plugins\n   ```\n\n2. Create your credentials file. Codex has no in-app UI for plugin MCP credentials, so the plugin's MCP server loads them from a known path on every launch:\n\n   ```bash\n   mkdir -p ~/.config/litmus-mcp\n   cp scripts/config.env.example ~/.config/litmus-mcp/env\n   chmod 600 ~/.config/litmus-mcp/env\n   ${EDITOR:-nano} ~/.config/litmus-mcp/env\n   ```\n\n   Fill in at minimum `EDGE_URL`, `EDGE_API_CLIENT_ID`, and `EDGE_API_CLIENT_SECRET`. NATS, InfluxDB, and LEM blocks are optional.\n\n3. Open a new Codex thread. Run `/mcp` to confirm `litmus-edge` is listed with tools populated.\n\nTo override the credentials path, set `LITMUS_MCP_ENV_FILE` in your shell before launching Codex.\n\n## Prerequisites\n\n- Python 3.12 or newer on `PATH`\n- Network access from your machine to your Litmus Edge instance\n- An OAuth client (ID + secret) created in your Edge admin console\n\nOn first launch the MCP server's wrapper script creates a venv and installs the Python dependencies listed in `requirements.txt`. The venv lives at `${*_PLUGIN_DATA}/venv` when a plugin data dir is provided by the host, otherwise at `~/.cache/litmus-mcp/venv`. Bootstrapping runs once per `requirements.txt` change, not every session.\n\n## Layout\n\n```\nlitmus-mcp-plugin/\n  .claude-plugin/                Claude Code manifest + marketplace\n  mcp/claude.mcp.json            Claude MCP server config\n  hooks/claude.hooks.json        Claude SessionStart hook config\n  .agents/plugins/               Codex marketplace\n  plugins/litmus-mcp/            Codex plugin (symlinks shared dirs back to repo root)\n    .codex-plugin/plugin.json    Codex manifest\n    .mcp.json                    Codex MCP server config\n  scripts/                       install-deps, run-server wrapper, sync-from-server\n  skills/                        litmus-troubleshoot workflow\n  agents/                        litmus-expert specialist subagent\n  commands/                      slash-command shortcuts (/litmus-status, /litmus-devices)\n  src/                           MCP server source (synced from litmus-mcp-server)\n  requirements.txt               Python deps installed at first launch\n```\n\nBoth hosts share the same MCP server code; only the manifest shape and config-file naming differ.\n\n## Source sync\n\nThe MCP server code in `src/` mirrors [litmus-mcp-server](https://github.com/litmusautomation/litmus-mcp-server) with the web-client files removed. Upstream already supports stdio transport (via `ENABLE_STDIO=true`), so no code patching is required. To refresh:\n\n```bash\n./scripts/sync-from-server.sh ../litmus-mcp-server\n```\n\n## Releasing\n\n1. Bump `version` in both `.claude-plugin/plugin.json` and `plugins/litmus-mcp/.codex-plugin/plugin.json` (keep them in sync).\n2. Update `CHANGELOG.md`.\n3. Tag and push: `git tag v0.1.0 \u0026\u0026 git push --tags`.\n4. Users get the update on their next `/plugin marketplace update` (Claude Code) or `codex plugin marketplace upgrade` (Codex).\n\n## Validate before push\n\n```bash\nclaude plugin validate . --strict\ncodex plugin marketplace add .\n```\n\n## License\n\nApache-2.0. See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitmusautomation%2Flitmus-mcp-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flitmusautomation%2Flitmus-mcp-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitmusautomation%2Flitmus-mcp-plugin/lists"}