Litmus Mcp Server について
Litmus Automation公式のMCPサーバーで、LLMやインテリジェントシステムからLitmus Edgeを設定、監視、管理できます。複数のトランスポートに対応し、チャットUIと最新のドキュメントリソースも備えています。
主な機能
- 01Litmus Edgeの設定・監視・管理
- 02HTTP、SSE、STDIOに対応
- 03自然言語チャットUIを内蔵
- 04複数のLitmus Edgeインスタンスを管理
- 05Litmusの最新ドキュメントリソース
活用シーン
- 01MCPクライアントからLitmus Edgeを管理
- 02ブラウザーのチャットUIでデバイスを操作
- 03Litmus製品やAPIのドキュメントを参照
MCP 対応
MCPクライアントにLitmus Edgeの操作機能と最新ドキュメントリソースを提供します。Streamable HTTP、HTTP+SSE、STDIOに対応しています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://<IP Address>:8000/sseclaude mcp add --transport http litmus http://<IP Address>:8000/sse{"mcpServers":{"litmus":{"type":"http","url":"http://<IP Address>:8000/sse"}}}Cursor で開く{"servers":{"litmus":{"type":"http","url":"http://<IP Address>:8000/sse"}}}VS Code で開く{"mcpServers":{"litmus":{"type":"http","url":"http://<IP Address>:8000/sse"}}}{"mcpServers":{"litmus":{"serverUrl":"http://<IP Address>:8000/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Litmus MCP サーバー
公式の Litmus Automation Model Context Protocol(MCP)サーバーを使用すると、LLM やインテリジェントシステムが Litmus Edge と連携して、デバイスの設定、監視、管理を行えます。MCP SDK を基盤として構築され、Model Context Protocol の仕様に準拠しています。
目次
クイック起動
Docker を使用して HTTP MCP サーバーを起動する
Docker でサーバーを実行します(HTTP のみ)。
docker run -d --name litmus-mcp-server -p 8000:8000 ghcr.io/litmusautomation/litmus-mcp-server:latest
HTTP サーバーは、ポート 8000 で両方の MCP トランスポートを公開します。
http://<host>:8000/mcp- Streamable HTTP(現在の MCP 仕様。推奨)http://<host>:8000/sse- HTTP+SSE(レガシートランスポート。古いクライアント向けに維持)
Streamable HTTP をサポートするクライアントでは、/mcp を指定してください(Claude Code の例のように、たとえば "type": "http")。それ以外のクライアントの例では SSE エンドポイントを使用しています。クライアントが対応している場合は、ヘッダーをそのままにして /mcp に置き換えてください。
注:Litmus MCP サーバーは linux/AMD64 プラットフォーム向けに構築されています。ARM64 上の Docker で実行する場合は、--platform 引数を含めて AMD64 プラットフォームタイプを指定してください。
docker run -d --name litmus-mcp-server --platform linux/amd64 -p 8000:8000 ghcr.io/litmusautomation/litmus-mcp-server:main
HTTPS デプロイ
HTTPS を提供する方法は 2 つあります。自動証明書を使用する TLS 終端リバースプロキシ(サーバーにパブリックホスト名がある場合に推奨)と、独自の証明書ファイルを使用するネイティブ TLS(企業 CA のあるプライベートネットワーク向け)です。
自動証明書を使用するリバースプロキシ
コンテナはデフォルトでプレーン HTTP を提供し、TLS 終端リバースプロキシの背後に配置できます。deploy/docker-compose.https.yml には、Caddy を使った構成が含まれており、Let's Encrypt 証明書の取得と更新が自動的に行われます。
# DNS A/AAAA record for mcp.example.com must point at this machine
DOMAIN=mcp.example.com docker compose -f deploy/docker-compose.https.yml up -d
MCP クライアントは、以前と同じヘッダーを使用して https://mcp.example.com/mcp(ポートなし)に接続します。注意事項:
- ホストに公開されるのは Caddy のみ(ポート 80/443)です。MCP サーバーは内部の compose ネットワークにとどまり、Web UI(
:9000)は意図的にプロキシされません。 - 証明書は再起動後も
caddy_dataボリュームに保持されます。 - パブリック DNS のないプライベートネットワークでは、
deploy/Caddyfileのtls internalのコメントを外して、代わりに Caddy の内部 CA を使用してください(クライアント側でその CA を信頼する必要があります)。 - その他の TLS 終端プロキシ(Traefik、nginx、クラウドロードバランサー)も同様に動作します。ポート 8000 に転送し、SSE レスポンスをバッファリングしないようにしてください。
ネイティブ TLS(独自の証明書を使用)
パブリック DNS がないプライベートネットワーク上でサーバーを実行する場合(そのため Let's Encrypt が証明書を発行できない場合)、たとえば社内 CA が発行した証明書など、用意した証明書とキーを使用してサーバー自身が TLS を終端できます。
services:
litmus-mcp-server:
image: ghcr.io/litmusautomation/litmus-mcp-server:latest
ports:
- "8000:8000"
volumes:
- /opt/litmus-mcp/certs:/certs:ro
environment:
SSL_CERTFILE: /certs/server.crt
SSL_KEYFILE: /certs/server.key
MCP クライアントは、https://<hostname>:8000/mcp に接続します。注意点:
SSL_CERTFILEとSSL_KEYFILEは(ENABLE_STDIOと同様に)通常の環境変数であり、.envの設定ではありません。どちらか一方だけを設定した場合や、存在しないファイルを指定した場合は、HTTP で黙って配信するのではなく、エラーで起動が中止されます。- 暗号化された秘密鍵には
SSL_KEYFILE_PASSWORDを使用できます。 - 証明書はクライアントが使用するホスト名に対して発行されている必要があり、クライアントはその CA を信頼している必要があります。自己署名証明書は claude.ai と Claude Desktop に拒否されるため、使用するマシンがすでに信頼している CA を使用してください。
- Caddy パターンとは異なり、証明書の更新は手動です。有効期限が切れる前にファイルを置き換え、コンテナを再起動してください。
Web UI
Docker イメージには組み込みのチャットインターフェースが含まれており、MCP クライアントの設定なしで、自然言語を使って Litmus Edge とやり取りできます。
両方のポートを公開してサーバーを起動します。
docker run -d --name litmus-mcp-server \
-p 8000:8000 -p 9000:9000 \
-e ANTHROPIC_API_KEY=<key> \
ghcr.io/litmusautomation/litmus-mcp-server:latest
:9000— Web UI(チャットインターフェース)。ブラウザーでhttp://localhost:9000を開き、設定ページから Litmus Edge インスタンスを追加して、チャットを開始します。:8000— 外部 MCP クライアント(Claude Desktop、Cursor、VS Code など)向けの SSE エンドポイント。通常どおり利用できます。
セキュリティに関する注意: Web UI はローカルのオペレーターコンソールです。ログイン機能はなく、LLM API キーと Litmus Edge の認証情報を保存するため、信頼できるネットワークでのみポート 9000 を公開してください。ポート 8000(
/mcp)は MCP クライアント専用のエンドポイントです。Docker の外では、WEB_UI_HOST=0.0.0.0を設定しない限り、UI は127.0.0.1にバインドされます(Docker イメージでは-p 9000:9000のポートマッピングが機能するよう、この値が設定されています。UI を非公開にするには、ポートマッピングを省略してください)。WEB_UI_CORS_ORIGINSに明示的なオリジンをカンマ区切りで設定しない限り、クロスオリジンのブラウザーから UI にアクセスすることはできません。
対応する LLM プロバイダー: Anthropic Claude、OpenAI、Google Gemini。起動時に 1 つ以上のキー(ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY)を指定するか、Web UI のセットアップ画面で入力してください。アクティブなプロバイダーとモデルは、Web UI の設定ページからいつでも切り替えられます。
複数の Litmus Edge インスタンス: Web UI では、1 つの MCP サーバーから複数の Litmus Edge デバイスを登録し、切り替えることができます。各インスタンスはそれぞれ独自の URL と OAuth2 認証情報を保持し、アクティブなインスタンスの認証情報は EDGE_URL/EDGE_API_CLIENT_ID/EDGE_API_CLIENT_SECRET に自動的に反映されます。インスタンスは Config → Litmus Edge Instances で管理するか、Health ページでインスタンスごとのステータスを確認してください。
MCP リソースとしての最新 Litmus ドキュメント: サーバーは litmus://docs/<section> URI を公開し、docs.litmus.io から最新のコンテンツをオンデマンドで取得します。これにより、MCP 対応クライアントは最新のリファレンス資料をモデルのコンテキストに直接取り込めます。ページは、レンダリング済み HTML(数百 KB で、その大半はナビゲーション)ではなく Markdown(各ページ数 KB)として取得され、Markdown 版が公開されていない場合に限り HTML にフォールバックします。litmus://docs/api は API ポータルのエージェントルーター api.litmus.io/agents.md を参照します。そこからリンクされている製品ごとのルーターは、litmus://docs/api/edge、litmus://docs/api/edgemanager、litmus://docs/api/unify として直接公開されます。また、litmus-cli ガイドは litmus://docs/cli、複数ステップのタスクレシピは litmus://docs/workflows から参照できます。litmus://docs/api/index には、ここではリソースとして提供されないコンポーネントごとのページを含め、API ポータルで公開されているすべての情報が一覧表示されます。litmus://docs/reference/message-format では、NATS トピックツールが返す JSON の形式を説明しています。
MCP サーバーと Web クライアントを別々のホストにデプロイする場合は、Web クライアントがサーバーを参照するように MCP_SSE_URL を設定します。
-e MCP_SSE_URL=http://<mcp-server-host>:8000/sse
永続的な設定
デフォルトでは、Web UI から保存した設定(API キー、Litmus Edge インスタンス、モデルの設定、接続設定)はコンテナ内の .env に書き込まれ、コンテナを削除すると失われます。
コンテナの再起動や置き換え後も設定を保持するには、ホスト側のファイルを /app/.env にマウントします。
# One-time setup — the host file must exist before docker run
mkdir -p /opt/litmus-mcp
touch /opt/litmus-mcp/.env
# Run with the volume mount
docker run -d --name litmus-mcp-server \
-p 8000:8000 -p 9000:9000 \
-v /opt/litmus-mcp/.env:/app/.env \
ghcr.io/litmusautomation/litmus-mcp-server:latest
UI で保存した設定は、ホスト側の /opt/litmus-mcp/.env に書き込まれます。同じ -v フラグを指定して新しいコンテナを起動すると、起動時に自動的に設定が読み込まれます。
注: コンテナを実行する前に、ホスト側のファイルを
touchで作成しておく必要があります。ファイルが存在しない場合、Docker はそのパスにディレクトリを作成するため、アプリケーションは設定を書き込めません。
Docker Compose での同等の設定:
services:
litmus-mcp-server:
image: ghcr.io/litmusautomation/litmus-mcp-server:latest
ports:
- "8000:8000"
- "9000:9000"
volumes:
- /opt/litmus-mcp/.env:/app/.env
注: 以下のすべてのクライアント設定で、
NATS_SOURCE、NATS_PORT、INFLUX_HOST、INFLUX_PORTは省略可能です。省略すると、サーバーはEDGE_URLからホストを導出し(デフォルトはnats://<edge-host>:4222とhttp://<edge-host>:8086)、ツールの応答でフォールバックについて説明します。データプレーンに Edge の Web UI とは異なるアドレスまたはポートでアクセスする場合にのみ設定してください。
Claude Code CLI
~/.claude/mcp.json に設定ファイルがあるディレクトリから Claude を実行します。
{
"mcpServers": {
"litmus-mcp-server": {
"type": "http",
"url": "http://localhost:8000/mcp",
"headers": {
"EDGE_URL": "${EDGE_URL}",
"EDGE_API_CLIENT_ID": "${EDGE_API_CLIENT_ID}",
"EDGE_API_CLIENT_SECRET": "${EDGE_API_CLIENT_SECRET}",
"NATS_SOURCE": "${NATS_SOURCE}",
"NATS_PORT": "${NATS_PORT:-4222}",
"NATS_PASSWORD": "${NATS_PASSWORD}",
"INFLUX_HOST": "${INFLUX_HOST}",
"INFLUX_PORT": "${INFLUX_PORT:-8086}",
"INFLUX_DB_NAME": "${INFLUX_DB_NAME:-tsdata}",
"INFLUX_USERNAME": "${INFLUX_USERNAME}",
"INFLUX_PASSWORD": "${INFLUX_PASSWORD}"
}
}
}
}
Cursor IDE
~/.cursor/mcp.json または .cursor/mcp.json に追加します。
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://<MCP_SERVER_IP>:8000/sse",
"headers": {
"EDGE_URL": "https://<LITMUSEDGE_IP>",
"EDGE_API_CLIENT_ID": "<oauth2_client_id>",
"EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
"NATS_SOURCE": "<LITMUSEDGE_IP>",
"NATS_PORT": "4222",
"NATS_PASSWORD": "<access_token_from_litmusedge>",
"INFLUX_HOST": "<LITMUSEDGE_IP>",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "<datahub_username>",
"INFLUX_PASSWORD": "<datahub_password>"
}
}
}
}
VS Code / GitHub Copilot
手動での設定
VS Code で: ユーザー設定(JSON)を開く → 追加:
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://<MCP_SERVER_IP>:8000/sse",
"headers": {
"EDGE_URL": "https://<LITMUSEDGE_IP>",
"EDGE_API_CLIENT_ID": "<oauth2_client_id>",
"EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
"NATS_SOURCE": "<LITMUSEDGE_IP>",
"NATS_PORT": "4222",
"NATS_PASSWORD": "<access_token_from_litmusedge>",
"INFLUX_HOST": "<LITMUSEDGE_IP>",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "<datahub_username>",
"INFLUX_PASSWORD": "<datahub_password>"
}
}
}
}
または、プロジェクト内の .vscode/mcp.json を使用します。
Windsurf
~/.codeium/windsurf/mcp_config.json に追加します。
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://<MCP_SERVER_IP>:8000/sse",
"headers": {
"EDGE_URL": "https://<LITMUSEDGE_IP>",
"EDGE_API_CLIENT_ID": "<oauth2_client_id>",
"EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
"NATS_SOURCE": "<LITMUSEDGE_IP>",
"NATS_PORT": "4222",
"NATS_PASSWORD": "<access_token_from_litmusedge>",
"INFLUX_HOST": "<LITMUSEDGE_IP>",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "<datahub_username>",
"INFLUX_PASSWORD": "<datahub_password>"
}
}
}
}
Claude Desktop での STDIO
この MCP サーバーは、Standard file Input/Output(STDIO)を介して、Claude Desktop やその他のアプリケーションとのローカル接続をサポートしています:https://modelcontextprotocol.io/legacy/concepts/transports
STDIO を使用するには、リポジトリをクローンし、依存関係をインストールして、ENABLE_STDIO を true に設定したうえで、サーバーを Claude Desktop の設定ファイルに追加します。Claude Desktop がサーバープロセスを起動します。ENABLE_STDIO を設定しないと、サーバーは HTTP モードで起動し、stdin/stdout では応答しません。そのため、Claude Desktop は 60 秒の初期化タイムアウト後に接続を切断します。
クローンして依存関係をインストールする
git clone https://github.com/litmusautomation/litmus-mcp-server.git
cd litmus-mcp-server
# Using uv
uv sync
# Otherwise
pip install -e .
Claude Desktop の設定ファイルに json サーバー定義を追加する:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"litmus-mcp-server": {
"command": "/path/to/.venv/bin/python3",
"args": [
"/absolute/path/to/litmus-mcp-server/src/server.py"
],
"env": {
"ENABLE_STDIO": "true",
"PYTHONPATH": "/absolute/path/to/litmus-mcp-server/src",
"EDGE_URL": "https://<LITMUSEDGE_IP>",
"EDGE_API_CLIENT_ID": "<oauth2_client_id>",
"EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
"NATS_SOURCE": "<LITMUSEDGE_IP>",
"NATS_PORT": "4222",
"NATS_PASSWORD": "<access_token_from_litmusedge>",
"INFLUX_HOST": "<LITMUSEDGE_IP>",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "<datahub_username>",
"INFLUX_PASSWORD": "<datahub_password>"
}
}
}
}
ヒント
開発では、Python の仮想環境を使用してください。たとえば、'npx @modelcontextprotocol/inspector' と litmus-mcp-server のような開発用クライアント間で、mcp ライブラリのバージョンの違いを解消するために使用できます。
{
"mcpServers": {
"litmus-mcp-server": {
"command": "/absolute/path/to/litmus-mcp-server/.venv/bin/python",
"args": ["/absolute/path/to/litmus-mcp-server/src/server.py"],
"env": { /* same as above */ }
}
}
}
完全なテンプレートについては、claude_desktop_config_venv.example.json を参照してください。
ヘッダー設定ガイド:
EDGE_URL:Litmus Edge のベース URL(https:// を含めてください)EDGE_API_CLIENT_ID/EDGE_API_CLIENT_SECRET:Litmus Edge の OAuth2 認証情報NATS_SOURCE:Litmus Edge の IP アドレス(http/https なし)。省略可能で、省略するとEDGE_URLから導出されますNATS_PASSWORD:System → Access Control → Tokens から取得したアクセストークン(ユーザー名は不要)INFLUX_HOST:Litmus Edge の IP アドレス(http/https なし)INFLUX_USERNAME/INFLUX_PASSWORD:DataHub のユーザー認証情報VALIDATE_CERTIFICATE:Litmus Edge の TLS 証明書を検証するかどうか(デフォルトはtrue。詳細は以下を参照してください)
TLS 証明書の検証
VALIDATE_CERTIFICATE のデフォルトは true です。そのため、無効にしない限り、Litmus Edge および Litmus Edge Manager への接続では証明書が検証されます。これは HTTP モードと STDIO モードの両方、litmus-cli を利用するツール、および .env から同じ設定を読み込み、設定ページに TLS 証明書を検証 トグルとして表示する Web UI に適用されます。
エッジハードウェアでは自己署名証明書がよく使われるため、証明書が拒否されても呼び出しは失敗しません。サーバーは検証を無効にしてツールを再実行し、その結果を返します。このダウングレードが通知なしに行われることはありません。 レスポンスにはホスト名を示す tls_warning が含まれるため、出力を読むオペレーターと、その出力に基づいて動作するモデルの両方に、データが未検証のチャネルを通過したことが伝わります。
{
"success": true,
"devices": [],
"tls_warning": "TLS certificate verification FAILED for https://192.168.1.50 and the call was retried without verification, so this data crossed an unverified channel and could have been intercepted. Treat it as untrusted until the certificate is fixed. ..."
}
注意事項:
- 再試行は接続の確立時ではなく、ツールの呼び出し時に行われます。SDK の接続ヘルパーは設定オブジェクトを作成するだけで、ツールが最初のリクエストを送信するまではネットワークに接続しません。証明書の問題が表面化するのは、その時点が最も早いタイミングです。
- 再試行の対象となるのは、証明書が拒否された場合のみです。パスワードの誤り、接続拒否、タイムアウトは従来どおり失敗するため、無関係なエラーを理由に、認証情報が未検証のチャネル経由で再送されることはありません。証明書が拒否されると、リクエストが配信される前にハンドシェイクが中断されるため、ツールを再実行しても、ホスト側ですでに適用された処理が繰り返されることはありません。
VALIDATE_CERTIFICATE=falseの設定は、検証をスキップする明示的な選択です。この設定は再試行なしで適用され、警告も表示されません。これは、自己署名証明書を使用することを承知しているエッジについて、警告を抑止する方法です。- 認識されない値(
flaseのようなタイプミスなど)は、検証をスキップすることへの同意とは解釈されず、証明書が検証されます。 - 再試行はキャッシュされません。そのため、後からエッジの証明書が修正された場合、次の呼び出しでは再び検証されます。自己署名証明書が使われている間は、呼び出しごとにまずハンドシェイクが一度拒否されます。
- Web UI の接続テストとヘルスチェックも同じポリシーに従います。証明書が拒否されると、未検証で再試行し、結果とともに同じ
tls_warningを返します。 - 根本的な解決策は、クライアントが信頼する証明書をインストールすることです。この設定とは別の、MCP サーバー自体の TLS については、HTTPS のデプロイを参照してください。
利用可能なツール
13 カテゴリにわたる 62 個のツールがあります。ツールは構造化された引数を受け取り、JSON を返します。
| カテゴリ | 関数名 | 説明 |
|---|---|---|
| DeviceHub、デバイス | get_litmusedge_driver_list | サポートされているLitmus Edgeドライバー(ModbusTCP、OPCUA、BACnetなど)を一覧表示します。 |
get_devicehub_devices | 接続設定とステータスを含む、設定済みのすべてのDeviceHubデバイスを一覧表示します。 | |
create_devicehub_device | 指定したドライバーとデフォルト設定で新しいデバイスを作成します。 | |
get_device_connection_status ** | InfluxDBのハートビートを通じてデバイスがデータをアクティブに公開しているか(connected/stale/no_data)を確認します。 | |
| DeviceHub、タグ | get_devicehub_device_tags | 特定のデバイスまたはすべてのデバイスのタグ(データポイント/レジスター)を取得します。limit/offsetでページネーションできるため、タグ数にかかわらずページ単位で取得できます。 |
get_current_value_of_devicehub_tag | 特定のデバイスタグの現在のリアルタイム値を読み取ります。 | |
create_devicehub_tag | デバイスに新しいタグ(レジスター)を作成します。ドライバーで必須のプロパティはデフォルト値で自動入力されます。 | |
update_devicehub_tag | 既存のタグの変更可能なフィールド(表示名、説明、プロパティ)を更新します。 | |
delete_devicehub_tag | デバイスからタグを削除します。破壊的な操作です。 | |
get_tag_status | 特定のデバイスのタグのランタイム状態(OK/Failed/Unknown)を返します。単一のタグに絞り込むこともできます。 | |
get_all_tags_status | すべてのデバイスのタグ状態を返します。問題が先に表示されるよう、デフォルトではOK以外のみを返します。 | |
| デバイスID | get_litmusedge_friendly_name | Litmus Edgeデバイスに割り当てられた人間が読みやすい名前を取得します。 |
set_litmusedge_friendly_name | Litmus Edgeデバイスのフレンドリー名を更新します。 | |
| クラウド/LEMの有効化 | get_cloud_activation_status | クラウド登録とLitmus Edge Manager(LEM)の接続状態を確認します。 |
| Docker管理 | get_all_containers_on_litmusedge | Litmus Edge Marketplaceで実行中のすべてのDockerコンテナを一覧表示します。 |
run_docker_container_on_litmusedge | Litmus Edge Marketplaceに新しいDockerコンテナをデプロイして実行します。 | |
| NATSトピック * | list_nats_topics | 分析、DeviceHubタグ、デジタルツインインスタンスから統合されたトピックを検出します。 |
get_current_value_from_topic | NATSトピックをサブスクライブし、次に公開されるメッセージを返します。 | |
get_multiple_values_from_topic | 傾向分析のため、NATSトピックから複数の連続した値を収集します。 | |
| InfluxDB/時系列 ** | get_historical_data_from_influxdb | InfluxDBから、測定値と時間範囲を指定して過去の時系列データをクエリします。 |
list_influxdb_measurements | tsdataデータベース内のすべての測定名を一覧表示します。後続のクエリに向けた検出に使用します。 | |
get_device_historical_data | デバイス名をファジーマッチングしてInfluxDBの測定値を特定し、一致した各項目の過去のデータを取得します。 | |
query_tag_data | 出力トピックを解決して、特定のタグの過去のデータをクエリします。新しい順に返します。 | |
get_tag_statistics | タグの集計統計情報(平均、最小、最大、標準偏差、件数、および基準範囲(平均 +/- 2シグマ))を返します。 | |
get_device_data_for_inference | AI推論用の複合ペイロード(デバイスのメタデータ、すべてのタグ、タグごとの統計情報、最近のサンプル)を返します。 | |
| システム、イベント | get_system_events | 時間範囲、コンポーネント、重要度(INFO/WARN/ALERT/ERROR)で絞り込んだシステムイベントを取得します。 |
get_system_event_stats | システムとイベントの健全性スナップショット(イベントストアのサイズ、過去1時間の重要度別イベント数、メモリ/ストレージ使用量、CPU数)を返します。 | |
| サーバー | get_mcp_server_info | MCPサーバー自体のバージョン情報(server、litmussdk、litmus-cli、Python)を返します。オプションのcheck_updatesは最新のGitHubリリースとの比較を行い、upgrade_cliは最新のlitmus-cliをダウンロードして有効化します。エッジへの接続は不要です。 |
| システム、ネットワーク | get_firewall_rules | 設定済みのファイアウォールルール(ポート、プロトコル、ALLOW/DENYアクション)を返します。 |
get_network_interface_info | ネットワークインターフェースの詳細(IP、MAC、ゲートウェイ、リンク状態、MTU、速度)を返します。デフォルトはeth0です。 | |
get_packet_capture_interfaces | パケットキャプチャに使用できるネットワークインターフェースを一覧表示します。 | |
get_packet_capture_status | 現在のパケットキャプチャ状態と、メタデータを含むキャプチャ済み.pcapファイルの一覧を返します。 | |
start_packet_capture | インターフェースでパケットキャプチャを開始します。時間は1~30分です。 | |
stop_packet_capture | 進行中のパケットキャプチャを停止します。 | |
| デジタルツイン | list_digital_twin_models | ID、名前、説明、バージョンを含むすべてのデジタルツインモデルを一覧表示します。 |
create_digital_twin_model | 新しいデジタルツインモデルを作成します。 | |
list_digital_twin_instances | すべてのデジタルツインインスタンスを一覧表示するか、モデルIDで絞り込みます。 | |
create_digital_twin_instance | 既存のモデルから新しいデジタルツインインスタンスを作成します。 | |
list_static_attributes | モデル、インスタンス(IDまたは名前で指定)、またはすべてのインスタンス(all_instances)の静的属性(固定のキーと値のペア)を一覧表示します。 | |
list_dynamic_attributes | モデル、インスタンス(IDまたは名前で指定)、またはすべてのインスタンス(all_instances)の動的属性(リアルタイムのデータポイント)を一覧表示します。 | |
list_transformations | デジタルツインモデルに設定されているデータ変換ルールを一覧表示します。 | |
get_digital_twin_hierarchy | デジタルツインモデルの階層設定を取得します。 | |
save_digital_twin_hierarchy | 新しい階層設定をデジタルツインモデルに保存します。 | |
| Litmus Edge Manager(LEM) *** | lem_list_devices | LEMプロジェクトに登録されているエッジデバイスを一覧表示します(ページネーション対応)。 |
lem_get_device_details | 単一のエッジデバイスに関するLEM側の完全なレコード(バージョン、ライセンス、最終確認日時、設定)を返します。 | |
lem_list_device_versions | LEMプロジェクトに登録されているLitmus Edgeのバージョンを一覧表示します。 | |
lem_list_device_groups | LEMプロジェクトで定義されているデバイスグループのラベル(プロジェクトレベルのグループ分け)を一覧表示します。 | |
lem_get_license_expiry | 今後N日以内にライセンスの有効期限が切れるデバイスを一覧表示します。 | |
lem_get_expired_licenses | LEMプロジェクト内で、すでにライセンスの有効期限が切れているデバイスを一覧表示します。 | |
lem_dashboard_usage | プロジェクトの使用状況の概要(デバイス数、ライセンス使用状況、デプロイ統計)を返します。 | |
lem_get_project_alerts | プロジェクトレベルのアクティブなアラート(デバイスのオフライン、ライセンスの問題など)を一覧表示します。 | |
lem_list_companies | LEMテナント内のすべての企業を、プロジェクト数、デバイス数、モデル数とともに一覧表示します。 | |
lem_get_company_details | 名前で指定した単一の企業の詳細(チーム、ライセンス、クォータ)を返します。 | |
lem_list_company_projects | 指定した企業に属するすべてのプロジェクトを一覧表示します。 | |
lem_get_project_details | 単一プロジェクトの詳細(タイムゾーン、データTTL、割り当て済みスロット、請求プラン)を返します。 | |
lem_deployment_info | LEMテナントのデプロイ情報(バージョン、ビルド、リリースメタデータ)を返します。 | |
lem_get_system_time | LEMサーバーの時刻を返します。エッジのタイムスタンプとの比較に役立ちます。 | |
| LEMブリッジ *** | lem_bridge_list_devicehub_devices | LEM経由のトンネルを通じて、特定のエッジ上のDeviceHubデバイスを一覧表示します(アクティブインスタンスの切り替えは不要です)。 |
lem_bridge_get_le_info | LEMブリッジ経由でエッジのID情報(フレンドリー名、クラウド有効化状態)を取得します。 | |
| SDKフォールバック(CLI) **** | litmus_sdk_discover | 生成済みSDKカタログ全体(約550関数)をドット区切りのパスプレフィックスで参照します。 |
litmus_sdk_read | ドット区切りのパスで読み取り専用SDK関数(Get/List/Browse/...)を呼び出します。 | |
litmus_sdk_write | 状態を変更するSDK関数をドット区切りのパスで呼び出します。承認が必要で、破壊的な操作となる可能性があります。 |
ツールの使用に関する注意事項
* NATS トピックツールの要件:
get_current_value_from_topic と get_multiple_values_from_topic を使用するには、Litmus Edge でアクセス制御を設定する必要があります(list_nats_topics は、サブスクライブするのではなく REST/GraphQL API からトピック名を読み取るため、ブローカーへのアクセスは不要です)。
- Litmus Edge → System → Access Control → Tokens に移動します
- 適切な権限を持つアクセストークンを作成するか、設定します
- MCP クライアントの設定ヘッダーにトークンを指定します
** InfluxDB/時系列ツールの要件:
** が付いたツール(get_historical_data_from_influxdb、list_influxdb_measurements、get_device_historical_data、query_tag_data、get_tag_statistics、get_device_data_for_inference、get_device_connection_status)を使用するには、InfluxDB ポートへのアクセスを許可する必要があります。
- Litmus Edge -> System -> Network -> Firewall に移動します
- TCP のポート 8086 を許可するファイアウォールルールを追加します
- MCP サーバーのホストから InfluxDB にアクセスできることを確認します
- MCP クライアントのヘッダーに
INFLUX_HOST、INFLUX_PORT、INFLUX_DB_NAME、INFLUX_USERNAME、INFLUX_PASSWORDを指定します
*** LEM ツールの要件:
LEM ツールは単一のエッジではなく、Litmus Edge Manager(クラウド)のテナントと通信します。*** が付いたツールを使用するには、MCP クライアントの設定に次のヘッダーを指定します。
EDGE_MANAGER_URL:Litmus Edge Manager のベース URL(https://を含めます)EDGE_API_TOKEN:LEM が発行した API トークンEDGE_MANAGER_PROJECT_ID(任意):デフォルトのプロジェクト ID。ツールのproject_id引数が省略された場合に使用されますEDGE_MANAGER_ADMIN_URL(任意):管理 URL。デフォルトでは、EDGE_MANAGER_URL のホストのポート8446が使用されます
**** SDK フォールバックツールの要件:
litmus_sdk_discover、litmus_sdk_read、litmus_sdk_write は、厳選されたデジタルツイン属性ツールおよびタグステータスツールと同様に、スタンドアロンの litmus-cli Go バイナリを利用します。Docker イメージではビルド時にインストールされ、ローカル実行では run.sh が自動的にインストールまたは更新します(チェックサムを検証して .venv/bin に配置し、Dockerfile の ARG LITMUS_CLI_VERSION によって Docker イメージと同じバージョンに固定されます)。これを使わずにサーバーを起動した場合(例:単独で python src/server.py を実行した場合)は、初回使用時に固定バージョンのリリースを自動インストールします。公式リリースからダウンロードし、SHA256 を検証して、~/.cache/litmus-mcp-server にキャッシュします。GitHub にアクセスできないエアギャップ環境のホストでは、事前にバイナリをインストールしてください。別のバイナリを使用するには、LITMUS_CLI_PATH を設定します(すべてのブートストラップがスキップされます)。または、https://github.com/litmusautomation/litmus-sdk-releases/releases の cli-v* リリースからインストールし、PATH に追加してください。これらのツールでは、上記の厳選されたツールに加えて、生成された SDK の全機能を利用できます。注意事項:
- 接続ヘッダーは呼び出しごとに CLI に転送されます。CLI プロファイルの読み取りや書き込みは行われません。
litmus_sdk_readが受け付けるのは読み取り専用関数のみです(末尾のセグメントが Get、List、Browse、Describe、Read、Search、Find、Query、Count のいずれかで始まるもの)。それ以外はすべてlitmus_sdk_writeを介して実行されます。litmus_sdk_writeは、破壊的な SDK 関数(作成/更新/削除/再起動)を呼び出すことができます。呼び出しごとにuser_approved引数による明示的なユーザー承認が必要です。アシスタントがこの引数を設定できるのは、対象の関数と引数をユーザーが承認した後に限られます。- 対象の操作を実行できる専用ツールが上記にある場合は、そちらを優先してください。
- カタログの
unify.*関数は Litmus Edge とは別に認証する Litmus Unify を対象とします。使用するにはUNS_URL、UNS_USERNAME、UNS_PASSWORDを送信します(自己署名証明書の場合はUNS_VALIDATE_CERTIFICATE: falseも送信します)。UNS_URLがないと、認証情報が不足してすべての呼び出しが失敗するため、litmus_sdk_discoverでは名前空間が非表示になります。このヘッダーが必要な名前空間はほかにありません。 VALIDATE_CERTIFICATE(任意):LEM ブリッジの TLS 証明書を検証します(デフォルトはtrue。TLS 証明書の検証を参照)lem_bridge_*ツールはさらに LEM 経由で特定のエッジにトンネル接続し、呼び出し引数としてproject_idとdevice_id(以下のlem_device_idと同様の LEM デバイス ID)の両方を必要とします。Web UI の Config -> Litmus Edge Manager ページでは、複数の LEM 接続を管理し、これらのヘッダーを自動的に設定できます。
エッジツールの呼び出しごとの LEM ブリッジルーティング:
EDGE_MANAGER_URL が設定されている場合、すべてのエッジを対象とするツール(DeviceHub、Digital Twins、システム、マーケットプレイス、および SDK フォールバックツール)で、オプションの project_id と lem_device_id 引数も使用できます。両方を渡すと、その呼び出しが LEM ブリッジ経由で対応する管理対象エッジにルーティングされるため、LEM のみの構成(URL とトークンがあり、EDGE_URL がない状態)でも Litmus Edge のツールセット全体を使用できます。アシスタントは lem_list_devices で ID を検出し、その後、フリート内の任意のデバイスを対象にエッジツールを直接呼び出せます。EDGE_MANAGER_PROJECT_ID と EDGE_MANAGER_DEVICE_ID のヘッダーは、静的なデフォルト値として引き続きサポートされます。
lem_device_id は lem_list_devices の LEM デバイス ID であり、get_devicehub_devices が返す DeviceHub デバイス ID ではありません。この 2 つは異なる名前空間に属します。この引数は以前 device_id という名前で、DeviceHub の ID と競合していました。既存のクライアントが引き続き動作するよう、以前の名前も引き続き受け付けます。
CLI を使用する厳選ツール:
デジタルツインの属性/変換一覧取得ツールとタグステータスツールは、Python SDK ではなく、同梱の litmus-cli バイナリを介して実行されます(SDK フォールバックツールと同じ接続レイヤーを使用します)。そのため、通常とは異なるデータを持つデバイスやツインでもクライアント側の厳格な検証によって失敗することがなくなり、LEM ブリッジルーティングが一貫して適用されます。
Litmus Central
Litmus Central から Litmus Edge をダウンロードするか、お試しください。
MCP サーバーのレジストリ
© 2026 Litmus Automation, Inc. All rights reserved.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。