Skip to main content
Glama
rhit-folayaod

systemlink-mcp

systemlink-mcp

Un servidor MCP que expone NI SystemLink a clientes de IA con herramientas nativas de prueba y medición: rendimiento por revisión de producto, pasos de DUT fallidos frente a límites de especificación, trazas de medición y activos con calibración pendiente.

Este es el compañero de capa de datos/flota de daq-mcp. daq-mcp habla con un único dispositivo DAQ. systemlink-mcp consulta y correlaciona resultados, activos y sistemas en todo un laboratorio.

Este es un proyecto personal con un único mantenedor. No es un producto de NI y no está afiliado, respaldado ni soportado por NI / Emerson.

Por qué herramientas específicas de pruebas en lugar de un envoltorio genérico

Un middleware comercial puede catalogar SystemLink entre miles de sistemas industriales y luego exponer una superficie tipo CMMS/ERP: órdenes de trabajo, sitios, espacios, órdenes de venta. Esa abstracción no puede responder lo que un ingeniero de pruebas pregunta de verdad:

  • tasas de aprobado/fallido para la revisión B del producto este trimestre

  • qué medición de un DUT fallido superó su límite

  • qué módulo PXI tiene la calibración vencida

Cada herramienta aquí está diseñada en torno a esas preguntas. Las respuestas son resúmenes con una vista previa acotada, no cargas completas de Test Monitor o DataFrame. Volcar miles de filas de resultados o una forma de onda de 2000 puntos en un contexto de modelo haría que el servidor fuera inutilizable, incluso aunque las llamadas a la API funcionaran.

Related MCP server: Auto-Manager MCP

Solo lectura por defecto

Las herramientas mutables (update_result_properties, execute_notebook) se niegan a funcionar a menos que SYSTEMLINK_MCP_ALLOW_WRITE=1. Las herramientas de lectura funcionan sin ninguna bandera adicional.

El AssetManagementClient actual de nisystemlink-clients tiene métodos de crear, consultar, eliminar, enlazar archivos y utilización, pero no tiene método de actualización de activos. Por lo tanto, la superficie de escritura habilitada actualiza metadatos de resultados de Test Monitor y pone en cola ejecuciones de notebooks, no registros de activos.

Stack

Python 3.11+, uv, FastMCP (stdio o Streamable HTTP), Pydantic v2 y el paquete oficial nisystemlink-clients. Las herramientas nunca importan el SDK; llaman a un SystemLinkBackend. Establece SYSTEMLINK_MCP_SIMULATE=1 para usar un simulacro en Python puro que no necesita ningún servidor SystemLink.

uv sync
SYSTEMLINK_MCP_SIMULATE=1 uv run server.py

PowerShell:

$env:SYSTEMLINK_MCP_SIMULATE="1"; uv run server.py

El backend simulado solo se usa cuando SYSTEMLINK_MCP_SIMULATE=1, o cuando falla la conexión en vivo y SYSTEMLINK_MCP_REQUIRE_REAL no está definido. Una respuesta en vivo tiene "backend": "systemlink" y "simulated": false.

  1. Crea una clave de API en SystemLink (Enterprise: primero una política, luego una clave de API; el encabezado HTTP que envía el SDK es x-ni-api-key). SLE no acepta nombre de usuario ni contraseña para acceso programático.

  2. Copia .env.example a .env (ignorado por git) y establece:

SYSTEMLINK_SERVER_URI=https://your-systemlink-host
SYSTEMLINK_API_KEY=...
SYSTEMLINK_MCP_REQUIRE_REAL=1

Deja SYSTEMLINK_MCP_SIMULATE sin definir. Un SystemLink Server local que aún permita autenticación básica puede usar SYSTEMLINK_USERNAME / SYSTEMLINK_PASSWORD en lugar de una clave. SystemLink Cloud puede usar solo la clave de API (sin URI); el backend entonces construye CloudHttpConfiguration.

  1. Prueba antes de MCP para que un inicio de sesión fallido no se convierta silenciosamente en la flota simulada:

uv run server.py --probe

Deberías ver "simulated": false y una vista previa breve de query_systems desde tu servidor. Luego lanza MCP sin la bandera de simulación, o apunta Cursor a .cursor/mcp.json.live.example.

Si --probe falla, el error JSON proviene del SDK (ApiException / connect), no de datos simulados.

Herramientas

Herramienta

Acceso

Qué responde

summarize_yield

lectura

Rendimiento de aprobado/fallido, opcionalmente agrupado por parte, programa o número de serie

query_results

lectura

Conteos de resultados filtrados más una vista previa reciente acotada

get_failing_steps

lectura

Pasos fallidos de un resultado, con medición frente a límites

summarize_measurement

lectura

Estadísticas de tabla más una traza diezmada (diezmada en la API en vivo)

list_calibration_due

lectura

Activos con calibración vencida o próxima a vencer

query_assets

lectura

Inventario con presencia y estado de calibración

query_systems

lectura

Sistemas registrados y estado de conexión

query_products

lectura

Productos / números de parte / familias

query_specs

lectura

Límites de especificación de un producto

list_files

lectura

Metadatos de archivos de un resultado o activo (sin contenidos)

update_result_properties

escritura habilitada

Palabras clave/propiedades en un resultado de prueba

execute_notebook

escritura habilitada

Poner en cola una ejecución de notebook de Jupyter

MCP Inspector

Desde la raíz del repositorio, con la simulación forzada:

SYSTEMLINK_MCP_SIMULATE=1 npx -y @modelcontextprotocol/inspector uv run server.py

PowerShell:

$env:SYSTEMLINK_MCP_SIMULATE="1"
npx -y @modelcontextprotocol/inspector uv run server.py

Abre la URL impresa (normalmente http://127.0.0.1:6274). Confirma que aparecen las doce herramientas y luego llama a summarize_yield con group_by=part_number.

Streamable HTTP en lugar de stdio:

SYSTEMLINK_MCP_SIMULATE=1 uv run server.py --http

El endpoint de MCP es http://127.0.0.1:8000/mcp. No uses transport="sse"; ese transporte está obsoleto.

Cursor

Usa .cursor/mcp.json.example (simulador) o .cursor/mcp.json.live.example (servidor real). El archivo .cursor/mcp.json local de la máquina está ignorado por git.

{
  "mcpServers": {
    "systemlink-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "C:/Users/folayaod/personal/systemlink-mcp",
        "server.py"
      ],
      "env": {
        "SYSTEMLINK_MCP_SIMULATE": "1"
      }
    }
  }
}

Claude Desktop

El mismo bloque JSON, en claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Reinicia Claude Desktop después de guardar.

Prompts que ejercitan la flota simulada

  1. "¿Cuál es la tasa de aprobado/fallido para el número de parte PN-5164-B, agrupada por las otras revisiones?"

  2. "DUT-1000 falló en BoardFunctional.seq. ¿Qué paso falló y cómo se comparó Gain con sus límites? Resume la traza de medición adjunta."

  3. "¿Qué activos PXI tienen la calibración vencida o próxima a vencer, y está conectado PXI Rack 1?"

Pruebas

SYSTEMLINK_MCP_SIMULATE=1 uv run pytest

Las pruebas solo usan el backend simulado. No abren ninguna conexión de red con SystemLink.

Estado

Proyecto personal, un único mantenedor. El backend simulado es la ruta de uso diario compatible. El backend real está escrito contra las APIs 2.32.x de nisystemlink-clients, documentadas en python-docs.systemlink.io y el código fuente de ni/nisystemlink-clients-python. No se ha ejecutado contra una instancia en vivo de SystemLink Enterprise en el CI de este repositorio. Los nombres de propiedades de Asset Dynamic LINQ para el estado de calibración siguen el estilo PascalCase del ejemplo oficial de AssetIdentifier; si un servidor en vivo rechaza ese filtro, es un riesgo de integración conocido documentado en DEVLOG.md.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes enterprise KPIs, health scores, forecasting, and anomaly detection as MCP tools, resources, and prompts for use by any MCP-compatible agent.
    2
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language analysis of mechanical test data files (CSV, TDMS, MDF) by providing tools for channel statistics, spectrum analysis, rainflow fatigue counting, thermal state detection, and report generation.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to analyze plant-floor data using OEE, Pareto, SPC, and yield-loss calculations, providing continuous-improvement insights from manufacturing data.
    1

View all related MCP servers

Related MCP Connectors

  • A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud

  • A paid remote MCP for AI SDK benchmark dashboard, built to return verdicts, receipts, usage logs, an

  • A paid remote MCP for AI SDK eval dashboard, built to return verdicts, receipts, usage logs, and aud

View all MCP Connectors

Latest Blog Posts

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/rhit-folayaod/systemlink-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server