Litmus MCP服务器
官方 石蕊自动化 模型上下文协议(MCP)服务器 使LLM和智能系统能够与 石蕊边缘 用于设备配置、监控和管理。它基于MCP SDK构建,并遵循 模型上下文协议规范.
目录
- Web 用户界面 - 持久配置 - Claude 代码命令行工具 - 光标IDE - VS代码/副本 - 帆板运动
______________________________________________________________________
快速启动
使用Docker启动HTTP SSE MCP服务器
在Docker中运行服务器(仅限HTTP SSE)
docker run -d --name litmus-mcp-server -p 8000:8000 ghcr.io/litmusautomation/litmus-mcp-server:latest注: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______________________________________________________________________
Web 用户界面
Docker镜像包含一个内置的聊天界面,允许您使用自然语言与Litmus Edge进行交互,无需配置MCP客户端。
在两个端口都暴露的情况下启动服务器:
docker run -d --name litmus-mcp-server \
-p 8000:8000 -p 9000:9000 \
-e ANTHROPIC_API_KEY= \
ghcr.io/litmusautomation/litmus-mcp-server:latest:9000--Web UI(聊天界面)。打开http://localhost:9000在浏览器中,通过配置页面添加一个Litmus Edge实例,然后开始聊天。:8000--外部MCP客户端的SSE端点(Claude Desktop、Cursor、VS Code等)仍然正常可用。
支持的LLM提供商: 克洛德、OpenAI和谷歌双子座。启动时提供一个或多个密钥(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 自动。管理以下实例 配置→ 石蕊边缘实例,或从中检查每个实例的状态 健康 页面。
MCP资源中的实时石蕊记录: 服务器暴露 litmus://docs/ 从中获取实时内容的URI docs.litmus.io 根据需求,MCP感知的客户端可以将当前的参考资料直接拉入模型的上下文中。
如果将MCP服务器和web客户端部署在单独的主机上,请设置 MCP_SSE_URL 将web客户端指向服务器:
-e MCP_SSE_URL=http://: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______________________________________________________________________
Claude 代码命令行工具
从包含配置文件的目录运行Claude ~/.claude/mcp.json:
{
"mcpServers": {
"litmus-mcp-server": {
"type": "sse",
"url": "http://localhost:8000/sse",
"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_USER": "${NATS_USER}",
"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}"
}
}
}
}______________________________________________________________________
光标IDE
添加 ~/.cursor/mcp.json 或 .cursor/mcp.json:
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://:8000/sse",
"headers": {
"EDGE_URL": "https://
",
"EDGE_API_CLIENT_ID": "",
"EDGE_API_CLIENT_SECRET": "",
"NATS_SOURCE": "
",
"NATS_PORT": "4222",
"NATS_USER": "",
"NATS_PASSWORD": "",
"INFLUX_HOST": "
",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "",
"INFLUX_PASSWORD": ""
}
}
}
}______________________________________________________________________
VS代码/GitHub副本
手动配置
在VS代码中: 打开用户设置(JSON)→ Add:
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://:8000/sse",
"headers": {
"EDGE_URL": "https://
",
"EDGE_API_CLIENT_ID": "",
"EDGE_API_CLIENT_SECRET": "",
"NATS_SOURCE": "
",
"NATS_PORT": "4222",
"NATS_USER": "",
"NATS_PASSWORD": "",
"INFLUX_HOST": "
",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "",
"INFLUX_PASSWORD": ""
}
}
}
}或使用 .vscode/mcp.json 在你的项目中。
______________________________________________________________________
帆板运动
添加 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"litmus-mcp-server": {
"url": "http://:8000/sse",
"headers": {
"EDGE_URL": "https://
",
"EDGE_API_CLIENT_ID": "",
"EDGE_API_CLIENT_SECRET": "",
"NATS_SOURCE": "
",
"NATS_PORT": "4222",
"NATS_USER": "",
"NATS_PASSWORD": "",
"INFLUX_HOST": "
",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "",
"INFLUX_PASSWORD": ""
}
}
}
}STDIO与克劳德桌面
此MCP服务器支持通过标准文件输入/输出(STDIO)与Claude Desktop和其他应用程序进行本地连接:https://modelcontextprotocol.io/legacy/concepts/transports
要使用STDIO:Clone,请编辑config.py以启用STDIO,将服务器作为本地进程运行,并更新Claude Desktop MCP服务器配置文件以使用服务器:
克隆
# Clone
git clone https://github.com/litmusautomation/litmus-mcp-server.git在/src/config.py中将ENABLE_STDIO设置为“true”:
ENABLE_STDIO = os.getenv("ENABLE_STDIO", "true").lower() in ("true", "1", "yes")运行服务器
# Run using uv
uv sync
cd /path/to/litmus-mcp-server
uv run python3 src/server.py
# Otherwise
cd litmus-mcp-server
pip install -e .
python3 src/server.py将json服务器定义添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%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": {
"PYTHONPATH": "/absolute/path/to/litmus-mcp-server/src",
"EDGE_URL": "https://
",
"EDGE_API_CLIENT_ID": "",
"EDGE_API_CLIENT_SECRET": "",
"NATS_SOURCE": "
",
"NATS_PORT": "4222",
"NATS_USER": "",
"NATS_PASSWORD": "",
"INFLUX_HOST": "
",
"INFLUX_PORT": "8086",
"INFLUX_DB_NAME": "tsdata",
"INFLUX_USERNAME": "",
"INFLUX_PASSWORD": ""
}
}
}
}提示
对于开发,使用Python 虚拟环境例如,弥合开发客户端(如“npx@modelcontextprotocol/inspector”和litmus mcp服务器)之间的mcp-lib版本差异
{
"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_env.example.json 对于完整的模板。
标题配置指南:
EDGE_URL:Litmus Edge基本URL(包括https://)EDGE_API_CLIENT_ID/EDGE_API_CLIENT_SECRET:Litmus Edge的OAuth2证书NATS_SOURCE:石蕊边缘IP(无http/https)NATS_USER/NATS_PASSWORD:来自的访问令牌凭据 系统→ 访问控制→ 代币INFLUX_HOST:石蕊边缘IP(无http/https)INFLUX_USERNAME/INFLUX_PASSWORD:DataHub用户凭据
______________________________________________________________________
可用工具
11个类别的57个工具。工具接受结构化参数并返回JSON。
| 类别 | 函数名称 | 描述 |
|---|---|---|
| DeviceHub,设备 | get_litmusedge_driver_list | 列出支持的Litmus Edge驱动程序(例如ModbusTCP、OPCUA、BACnet)。 |
get_devicehub_devices | 列出所有已配置的DeviceHub设备及其连接设置和状态。 | |
create_devicehub_device | 使用指定的驱动程序和默认配置创建新设备。 | |
get_device_connection_status \*\* | 检查设备是否正在通过InfluxDB心跳(已连接/过时/no_data)主动发布数据。 | |
| DeviceHub,标签 | get_devicehub_device_tags | 检索特定设备的所有标签(数据点/寄存器)。 |
get_current_value_of_devicehub_tag | 读取特定设备标签的当前实时值。 | |
create_devicehub_tag | 在设备上创建新标签(注册)。驱动程序所需的属性将从默认值自动填充。 | |
update_devicehub_tag | 更新现有标记的可变字段(显示名称、描述、属性)。 | |
delete_devicehub_tag | 从设备中删除标签。破坏性的。 | |
get_tag_status | 返回特定设备上标签的OK/ERROR状态。可选地过滤到单个标签。 | |
get_all_tags_status | 返回所有设备的标签状态。默认为非OK,因此问题首先出现。 | |
| 设备标识 | get_litmusedge_friendly_name | 获取分配给Litmus Edge设备的人类可读名称。 |
set_litmusedge_friendly_name | 更新Litmus Edge设备的友好名称。 | |
| 云/LEM激活 | get_cloud_activation_status | 检查云注册和Litmus边缘管理器(LEM)连接状态。 |
| Docker管理 | get_all_containers_on_litmusedge | 列出Litmus Edge Marketplace上运行的所有Docker容器。 |
run_docker_container_on_litmusedge | 在Litmus Edge Marketplace上部署并运行一个新的Docker容器。 | |
| NATS主题 * | 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 | 人工智能推理的复合有效载荷:设备元数据、所有标签、每个标签的统计数据和最近的样本。 | |
| 系统、事件 | get_system_events | 检索按时间范围、组件和严重性(信息/警告/警报/错误)过滤的系统事件。 |
get_system_event_stats | 事件管理器统计信息:队列大小、处理速率、内存、运行状况指标。 | |
| 系统、网络 | get_firewall_rules | 返回已配置的防火墙规则:端口、协议、允许/拒绝操作。 |
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列出所有Digital Twin实例或筛选器 | |
create_digital_twin_instance | 从现有模型创建新的Digital Twin实例。 | |
list_static_attributes | 列出模型或实例的静态属性(固定键值对)。 | |
list_dynamic_attributes | 列出模型或实例的动态属性(实时数据点)。 | |
list_transformations | 列出为数字孪生模型配置的数据转换规则。 | |
get_digital_twin_hierarchy | 获取数字孪生模型的层次结构配置。 | |
save_digital_twin_hierarchy | 将新的层次结构配置保存到数字孪生模型。 | |
| 石蕊边缘管理器(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网桥获取边缘的身份信息(友好名称、云激活)。 |
工具使用说明
**\*NATS主题工具要求:** 使用 get_current_value_from_topic 和 get_multiple_values_from_topic,您必须在Litmus Edge上配置访问控制:
- 导航到: 石蕊边缘→ 系统→ 访问控制→ 代币
- 创建或配置具有适当权限的访问令牌
- 在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端口访问:
- 导航到: 石蕊边缘->系统->网络->防火墙
- 添加防火墙规则以允许端口 8086 上 传输控制协议
- 确保InfluxDB可从MCP服务器主机访问
- 提供
INFLUX_HOST,INFLUX_PORT,INFLUX_DB_NAME,INFLUX_USERNAME,INFLUX_PASSWORD在MCP客户端标头中
**\*\*\*LEM工具要求: LEM工具与Litmus Edge Manager(云)租户而不是单个边缘进行通信。使用任何标有 `*`,在MCP客户端配置中提供以下标头:
EDGE_MANAGER_URL:Litmus边缘管理器基本URL(包括https://)EDGE_API_TOKEN:LEM发行的API代币EDGE_MANAGER_PROJECT_ID(可选):默认项目id,用于工具project_id省略参数EDGE_MANAGER_ADMIN_URL(可选):管理员URL,默认为端口上的EDGE_MANAGER_URL主机8446VALIDATE_CERTIFICATE(可选):true验证LEM网桥上的TLS证书(默认false)
lem_bridge_* 工具还需要通过LEM隧道到达特定边缘,并且两者都需要 project_id 和 device_id 作为呼叫参数。Web UI 配置->石蕊边缘管理器 该页面管理多个LEM连接,并自动写入这些标头。
______________________________________________________________________
石蕊中央
通过下载或尝试Litmus Edge 石蕊中央.
______________________________________________________________________
MCP服务器注册表
______________________________________________________________________
©2026 Litmus Automation,股份有限公司保留所有权利。
