rigol-oscilloscope-mcp
rigol-oscilloscope-mcp
Un servidor MCP (Model Context Protocol) que permite a los LLM (Claude, Codex, etc.) controlar osciloscopios RIGOL a través de SCPI (LAN / USB) — conectar, configurar canales/base de tiempo/disparo, medir, capturar formas de onda y capturas de pantalla, decodificar protocolos seriales, ejecutar análisis FFT en el host y controlar el AFG integrado, todo a través de herramientas semánticas con una política de seguridad de cuatro niveles. Verificado en un RIGOL MHO98 real; otros modelos RIGOL funcionan con el mejor esfuerzo mediante perfiles de dispositivo. La documentación está actualmente en japonés.
Un servidor MCP para operar osciloscopios RIGOL desde un LLM.
Instrucciones en lenguaje natural como «haz visible la forma de onda de 1 kHz 3 V con una sonda x10» o «captura y guarda la forma de onda actual» son convertidas por el LLM (Claude / Codex, etc.) en llamadas a herramientas MCP, y este servidor controla el instrumento mediante SCPI (LAN / USB). No se utiliza la operación automática de GUI.
Verificado en hardware real con RIGOL MHO98 (→ docs/verification/mho98-mvp.md)
Otros modelos RIGOL se manejan con el mejor esfuerzo mediante perfiles de dispositivo (los modelos desconocidos funcionan con el perfil genérico y se indica explícitamente)
Los proveedores que no sean RIGOL no están soportados (se devuelve una advertencia al conectar, pero no se rechaza)
Características
Conexión basada en conversación — La conexión se indica principalmente mediante conversación del usuario (
connect(address="...")). Los valores predeterminados de las variables de entorno son un respaldo opcional.26 herramientas MCP — Conexión / identificación / obtención de estado / medición / forma de onda / análisis (estadísticas y FFT) / captura de pantalla / configuración de canal, base de tiempo y disparo / Run, Stop, Single y Autoset / configuración de decodificación serial y obtención de resultados / configuración del generador de señales (AFG), obtención de estado y control de salida (la activación de salida incluye un flujo de confirmación). No se le pide al LLM que escriba cadenas SCPI; solo se exponen herramientas semánticas.
Política de seguridad de 4 clases + token de confirmación — Todas las operaciones se clasifican en READ_ONLY / SAFE_WRITE / RESTRICTED_WRITE / DANGEROUS_WRITE. La entrada de 50 Ω y Auto Setup requieren una confirmación de dos pasos independiente de la UI del host (token de confirmación).
Guardado de capturas de pantalla — Se guardan en la ruta especificada en png / jpg / bmp / webp y la imagen también se devuelve al LLM (la ubicación de escritura está restringida por rutas permitidas).
Perfiles de dispositivo — Se declaran en YAML incluido el dialecto SCPI, la disponibilidad de funciones y los rangos de parámetros, y se resuelven en tres capas: coincidencia exacta del modelo → familia → RIGOL genérico.
Devolución de valores solicitados / aplicados — Dado que el instrumento puede ajustar los valores de configuración según el modelo, se devuelven tanto el valor solicitado como el valor leído.
Registro de auditoría — Las operaciones de escritura se registran en JSONL con Before / Action / After.
Related MCP server: Rigol DHO824 MCP Server
Instalación y arranque
Se utiliza como estándar el arranque con uvx desde el repositorio de GitHub.
uvx --from git+https://github.com/zinntikumugai/rigol-oscilloscope-mcp@v0.1.0 rigol-oscilloscope-mcpPor defecto, la versión está fijada a la etiqueta (@v0.1.0). Si se quiere usar la última versión de desarrollo (main), quitar @v0.1.0.
Claude Code — Plugin (recomendado)
Este repositorio también funciona como plugin de Claude; además del servidor MCP, se instalan simultáneamente las habilidades de flujo de trabajo de medición (configuración recomendada por tipo de señal, procedimientos de medición para UART/señales desconocidas y avisos de seguridad). Se instala después de agregar el marketplace (después de @ va el nombre del marketplace):
/plugin marketplace add zinntikumugai/rigol-oscilloscope-mcp
/plugin install rigol-oscilloscope@rigol-oscilloscope-mcpClaude Code (.mcp.json o claude mcp add)
{
"mcpServers": {
"rigol-oscilloscope": {
"command": "uvx",
"args": ["--from", "git+https://github.com/zinntikumugai/rigol-oscilloscope-mcp@v0.1.0", "rigol-oscilloscope-mcp"],
"env": { "RIGOL_MCP_SCREENSHOT_DIR": "~/scope-captures" }
}
}
}Codex — Plugin
También se incluye un plugin de Codex (.codex-plugin/ + definición de marketplace), que permite instalar de una vez el servidor MCP y las habilidades de flujo de trabajo de medición.
codex plugin marketplace add zinntikumugai/rigol-oscilloscope-mcp
codex plugin install rigol-oscilloscope(Si no se usa el plugin, solo las habilidades se pueden copiar skills/measurement-workflows a ~/.agents/skills/ y serán reconocidas. Si solo se necesita el servidor MCP, basta con la siguiente configuración de config.toml)
Codex (~/.codex/config.toml)
[mcp_servers.rigol-oscilloscope]
command = "uvx"
args = ["--from", "git+https://github.com/zinntikumugai/rigol-oscilloscope-mcp@v0.1.0", "rigol-oscilloscope-mcp"]
[mcp_servers.rigol-oscilloscope.env]
RIGOL_MCP_SCREENSHOT_DIR = "~/scope-captures"Al iniciar desde un clon local
Cuando se clona el repositorio localmente y se usa la versión de desarrollo, se inicia con uv run --directory.
{
"mcpServers": {
"rigol-oscilloscope": {
"command": "/path/to/uv",
"args": ["run", "--directory", "/path/to/rigol-oscilloscope-mcp", "rigol-oscilloscope-mcp"],
"env": { "PYTHONDONTWRITEBYTECODE": "1" }
}
}
}commandse escribe con ruta absoluta siuvno está en el PATH del host GUI (aplicación de escritorio). La ruta se verifica conwhich uv(omise which uvsi se usa mise).Se especifica explícitamente
PYTHONDONTWRITEBYTECODE=1. Al iniciar desde fuera del proyecto, el[env]demise.tomlno se aplica, por lo que se evita que se escriba__pycache__dentro del clon.El directorio de guardado predeterminado de capturas de pantalla es el directorio de ejecución donde se inició el servidor, no el directorio al que se movió con
--directory. Si se quiere fijar, especificarRIGOL_MCP_SCREENSHOT_DIR.Si se pasa una ruta relativa a
path, también se toma como base este directorio de guardado predeterminado. No se puede guardar fuera del directorio predeterminado,RIGOL_MCP_ALLOWED_DIRSo el directorio temporal (se rechaza).
Configuración (variables de entorno)
Toda la configuración se puede especificar mediante variables de entorno (también se puede usar opcionalmente un archivo de configuración TOML). El orden de prioridad es argumentos de herramienta (instrucciones del usuario en la conversación) > variables de entorno > archivo de configuración > valores predeterminados integrados.
Variable de entorno | Contenido | Predeterminado |
| Dirección de conexión predeterminada (IP / recurso VISA) | Ninguno (se requiere indicación en la conversación) |
|
| Se deduce de la dirección |
| Puerto SCPI LAN | Predeterminado del perfil (5555) |
| Tiempo de espera de una sola consulta (segundos) | 5 |
| Directorio de guardado predeterminado de capturas de pantalla | Directorio de ejecución ( |
| Rutas raíz permitidas para escritura (varias separadas por separador de ruta) | Directorio de guardado predeterminado + directorio temporal |
| Límite superior predeterminado para la adquisición de formas de onda | 100000 |
| Habilitación de la herramienta | false |
| Nivel de registro (error / warn / info / debug) | info |
| Destino del registro de auditoría | Habilitado ( |
| Ruta del archivo de configuración TOML | Ninguno |
Los detalles están en el capítulo 9 de docs/Requirements.md.
Probar sin hardware real
Si se inicia con RIGOL_MCP_FAKE=1, se conecta al FakeScope integrado en lugar del hardware real. Se puede verificar la configuración MCP del host y el flujo de conversación sin preparar un osciloscopio.
RIGOL_MCP_FAKE=1 uvx --from git+https://github.com/zinntikumugai/rigol-oscilloscope-mcp@v0.1.0 rigol-oscilloscope-mcpDesarrollo
La versión de Python se gestiona con mise, y las dependencias y el entorno virtual con uv.
mise install # Python + uv
uv sync # 依存の解決
uv run pytest # ユニットテスト(実機不要)
uv run rigol-oscilloscope-mcp # stdioで起動Las pruebas con hardware real solo se ejecutan cuando se pasa la dirección de conexión mediante variables de entorno (si no se configura, se omiten automáticamente). Nunca escribir la dirección IP del hardware real en el repositorio (tests/test_ip_guard.py lo verifica mecánicamente).
# read-only スイート(機器の設定を変更しない)
RIGOL_TEST_ADDRESS=<あなたのオシロのIP> uv run pytest -m device
# write スイート(設定変更 → read-back → 必ず復元)。二重ゲート
RIGOL_TEST_ADDRESS=<あなたのオシロのIP> RIGOL_TEST_ALLOW_WRITE=1 uv run pytest -m device_writeEn <IP de tu osciloscopio> se coloca la dirección de tu propio instrumento (si se necesita un ejemplo, usar 192.0.2.x (TEST-NET-1), reservado para documentación).
Solución de problemas
Síntoma | Solución |
|
|
Las capturas de pantalla se guardan en un lugar no deseado | Por defecto es el directorio de ejecución donde se inició el servidor. Especificar explícitamente el destino con |
Precauciones de seguridad
Muchos osciloscopios RIGOL, incluido el MHO98, no están aislados (el GND de cada entrada es común con el GND del chasis, USB, etc., categoría de medición Category I). Este servidor previene cambios de configuración peligrosos, pero no garantiza la seguridad eléctrica en sí.
Actor | Responsabilidad |
IA (LLM) | Apoyo en la decisión de configuración de medición y análisis de resultados |
Servidor MCP | Control del instrumento, verificación de parámetros, garantía de la política de seguridad, registro de operaciones |
Humano | Garantía de la conexión física (DUT, sondas, tierra, etc.) y de la seguridad eléctrica |
La conexión de la sonda, la conexión del clip de tierra, el voltaje real del DUT, la tensión máxima de la sonda y el estado de aislamiento no se pueden verificar desde MCP.
La medición de la red eléctrica comercial (100 V CA, tomacorrientes, lado primario, AC mains) está fuera de alcance. No se ejecutan automáticamente procedimientos de medición con sondas pasivas normales. Se asume que un humano confirma el uso de sondas diferenciales o aisladas.
Actualización de firmware / calibración / operaciones de servicio de fábrica / cambios de configuración de red están fuera de alcance.
Los detalles están en el capítulo 6 (requisitos de seguridad) de docs/Requirements.md.
Modelo de confianza del flujo de confirmación: La confirmación de dos pasos (token de confirmación) es un mecanismo para prevenir errores de operación y conclusiones precipitadas del LLM, no una defensa contra hosts MCP maliciosos (el token se devuelve al mismo llamador, por lo que si el host tiene intenciones maliciosas, basta con llamar dos veces para pasarlo). La seguridad física solo puede ser garantizada por el humano que gestiona «qué está cableado». Además, el token de enable_afg también está vinculado a la configuración del AFG en el momento de la emisión; si se cambia la configuración (amplitud, etc.) después de la emisión, el token se invalida.
Descargo de responsabilidad: Este software se proporciona sin garantía (LICENSE). El autor no se hace responsable de daños al instrumento, al dispositivo bajo prueba (DUT) o a los periféricos, errores en los resultados de medición, ni de cualquier daño que surja de ellos, causados por el uso de este software.
Licencia
MIT License — Copyright (c) 2026 zinntikumugai
Documentación
En docs/README.md se resume la lista de documentos y el orden de lectura.
docs/Requirements.md — Documento de definición de requisitos (normativo)
docs/tools.md — Catálogo de herramientas MCP
docs/device-profiles.md — Especificación de perfiles de dispositivo
docs/verification/ — Registro de verificación con hardware real
docs/roadmap.md — Planes futuros
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables LLMs like Claude to interact with PicoScope oscilloscopes for signal acquisition, measurement, and analysis. Supports device management, data capture, triggering, and signal generation through natural language commands.245
- AlicenseNot gradedqualityDmaintenanceEnables control and querying of Rigol DHO824 oscilloscopes, allowing users to capture waveforms, take screenshots, and interact with oscilloscope settings through natural language.3MIT
- AlicenseAqualityCmaintenanceEnables remote control of LeCroy oscilloscopes via SCPI commands over LAN to perform waveform capture, screenshots, measurements, channel configuration, and triggering through natural language. Supports multiple LeCroy models including WaveSurfer, HDO, WaveRunner, and WavePro series with automatic model detection.4811AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to directly control NI oscilloscopes (e.g., PXIe-5160/5164/5110) through the Model Context Protocol, including waveform acquisition, measurement, and configuration.MIT
Related MCP Connectors
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zinntikumugai/rigol-oscilloscope-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server