mcpField
L
Litmus Mcp Server

Litmus Mcp Server

远程服务
litmus.io其他135 天前更新

关于 Litmus Mcp Server

Litmus Automation 的官方 MCP 服务,让 LLM 和智能系统配置、监控和管理 Litmus Edge。它支持多种传输方式,并提供内置聊天界面与实时文档资源。

主要功能

  1. 01配置、监控和管理 Litmus Edge
  2. 02支持 HTTP、SSE 和 STDIO
  3. 03内置自然语言聊天界面
  4. 04管理多个 Litmus Edge 实例
  5. 05提供实时 Litmus 文档资源

适用场景

  1. 01通过 MCP 客户端管理 Litmus Edge
  2. 02在浏览器聊天界面操作设备
  3. 03查询 Litmus 产品和 API 文档

MCP 相关

该服务向 MCP 客户端提供 Litmus Edge 交互能力及实时文档资源。支持 Streamable HTTP、HTTP+SSE 和 STDIO。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://<IP Address>:8000/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Litmus 标志

文档 在 LinkedIn 上关注

Litmus MCP 服务

官方 Litmus Automation Model Context Protocol (MCP) 服务使大模型和智能系统能够与 Litmus Edge 交互,以配置、监控和管理设备。它基于 MCP SDK 构建,并遵循 Model Context Protocol 规范。

Litmus MCP 服务架构图

目录


快速启动

使用 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(例如使用 "type": "http",如下方 Claude Code 示例所示)。其余客户端示例使用 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 服务方式:使用自动证书的 TLS 终止反向代理(服务器具有公共主机名时推荐),或使用自有证书文件的原生 TLS(适用于使用企业 CA 的专用网络)。

使用自动证书的反向代理

容器默认提供纯 HTTP 服务,可部署在 TLS 终止反向代理之后。deploy/docker-compose.https.yml 使用 Caddy 实现了这一方案;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 界面(:9000)不会被代理。
  • 证书会持久保存在 caddy_data 卷中,并在重启后保留。
  • 对于没有公共 DNS 的专用网络,可取消注释 deploy/Caddyfile 中的 tls internal,改用 Caddy 的内部 CA(客户端必须信任该 CA)。
  • 其他任何 TLS 终止代理(Traefik、nginx、云负载均衡器)也适用相同方式:转发到 8000 端口,并确保 SSE 响应不经过缓冲。
原生 TLS(自带证书)

当服务运行在没有公共 DNS 的专用网络中(因此 Let's Encrypt 无法签发证书)时,服务可以使用你提供的证书和密钥自行终止 TLS,例如使用企业 CA 签发的证书:

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 镜像内置了聊天界面,可让你使用自然语言与 Litmus Edge 交互,无需配置 MCP 客户端。

启动服务并公开这两个端口:

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 是本地运维控制台,没有登录功能,并且会存储大模型 API 密钥和 Litmus Edge 凭据,因此只应在你信任的网络中公开端口 9000;端口 8000(/mcp)才是专为 MCP 客户端提供的端点。在 Docker 外运行时,UI 默认绑定到 127.0.0.1,除非你设置 WEB_UI_HOST=0.0.0.0(Docker 镜像会设置此项,以便 -p 9000:9000 端口映射生效;不配置端口映射即可让 UI 保持私有)。除非设置 WEB_UI_CORS_ORIGINS 为以逗号分隔的明确来源列表,否则会禁用浏览器跨源访问 UI。

支持的大模型提供商: Anthropic Claude、OpenAI 和 Google Gemini。可在启动时提供一个或多个密钥(ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY),也可通过 Web UI 的设置页面输入密钥。你可以随时在 Web UI 的配置页面切换当前使用的提供商和模型。

多个 Litmus Edge 实例: Web UI 支持通过单个 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 的客户端可以直接将最新参考资料载入模型上下文。页面会以 Markdown 格式获取(每页几 KB),而非渲染后的 HTML(每页几百 KB,且大部分内容是导航);只有在未发布 Markdown 版本时才会回退到 HTML。litmus://docs/api 会解析到 API 门户的 Agent 路由器 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 客户端部署在不同主机上,请设置 MCP_SSE_URL,使 Web 客户端连接到该服务:

-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}"
      }
    }
  }
}

Anthropic 文档


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>"
      }
    }
  }
}

Cursor 文档


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。

VS Code MCP 文档


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>"
      }
    }
  }
}

Windsurf MCP 文档

使用 Claude Desktop 的 STDIO

此 MCP 服务支持通过标准输入/输出(STDIO)与 Claude Desktop 及其他应用程序建立本地连接:https://modelcontextprotocol.io/legacy/concepts/transports

使用 STDIO:克隆项目、安装依赖项,并将服务添加到 Claude Desktop 配置文件,同时将 ENABLE_STDIO 设置为 true。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 驱动的工具,以及 Web UI 均适用此设置。Web UI 会从 .env 读取相同设置,并在其配置页面上将其显示为 验证 TLS 证书 开关。

边缘硬件上常见自签名证书,因此证书被拒绝不会导致调用失败。服务会在关闭验证的情况下重新运行该工具,并返回结果。此降级绝不会悄无声息地发生。 响应会附带一个标明主机名的 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。

CategoryFunction NameDescription
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 状态,以便优先显示问题。
设备身份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系统和事件健康状况概览:事件存储区大小、过去一小时按严重级别统计的事件数、内存/存储使用量、CPU 数量。
服务端get_mcp_server_infoMCP 服务本身的版本信息(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_infoLEM 租户部署信息(版本、构建、发布元数据)。
lem_get_system_timeLEM 服务端时钟;可用于比较边缘设备时间戳。
LEM 桥接 ***lem_bridge_list_devicehub_devices通过 LEM 隧道列出特定边缘设备上的 devicehub 设备(不会切换活动实例)。
lem_bridge_get_le_info通过 LEM 桥接获取边缘设备的身份信息(易读名称、云端激活状态)。
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 读取主题名称,而不是订阅主题):

  1. 前往:Litmus Edge → 系统 → 访问控制 → 令牌
  2. 创建或配置具有相应权限的访问令牌
  3. 在 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 端口:

  1. 前往:Litmus Edge -> 系统 -> 网络 -> 防火墙
  2. 添加防火墙规则,允许 TCP 端口 8086
  3. 确保 MCP 服务主机可以访问 InfluxDB
  4. 在 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(跳过所有引导安装步骤),或从 cli-v* 发布版本下载并添加到 PATH:https://github.com/litmusautomation/litmus-sdk-releases/releases。这些工具公开了上述精选工具之外完整的生成 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 Unify,其身份验证与 Litmus Edge 分开。要使用这些函数,请提供 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 设备 ID,与下方的 lem_device_id 相同)都作为调用参数。Web UI 的 Config -> Litmus Edge Manager 页面可管理多个 LEM 连接,并自动写入这些标头。

边缘工具的按调用 LEM 桥接路由: 配置 EDGE_MANAGER_URL 后,每个面向边缘的工具(DeviceHub、Digital Twins、system、marketplace 和 SDK 回退工具)还会接受可选的 project_id 和 lem_device_id 参数。传入这两个参数后,该次调用会通过 LEM 桥接路由到对应的受管边缘设备,因此仅配置 LEM(URL + token,不配置 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;它们属于不同的命名空间。该参数以前名为 device_id,这与 DeviceHub 的设备 ID 冲突;仍接受旧名称,以兼容现有客户端。

基于 CLI 的精选工具: 数字孪生属性/转换列表工具和标签状态工具通过捆绑的 litmus-cli 二进制文件执行(使用与 SDK 回退工具相同的连接层),而非 Python SDK。因此,数据格式特殊的设备或数字孪生不再会因客户端严格验证而失败,且 LEM 桥接路由可统一应用。


Litmus Central

通过 Litmus Central 下载或试用 Litmus Edge。


MCP 服务注册目录
Litmus MCP 服务

© 2026 Litmus Automation, Inc. 保留所有权利。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。