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.
Inicio rápido (sin servidor SystemLink)
uv sync
SYSTEMLINK_MCP_SIMULATE=1 uv run server.pyPowerShell:
$env:SYSTEMLINK_MCP_SIMULATE="1"; uv run server.pySystemLink real
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.
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.Copia
.env.examplea.env(ignorado por git) y establece:
SYSTEMLINK_SERVER_URI=https://your-systemlink-host
SYSTEMLINK_API_KEY=...
SYSTEMLINK_MCP_REQUIRE_REAL=1Deja 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.
Prueba antes de MCP para que un inicio de sesión fallido no se convierta silenciosamente en la flota simulada:
uv run server.py --probeDeberí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 |
| lectura | Rendimiento de aprobado/fallido, opcionalmente agrupado por parte, programa o número de serie |
| lectura | Conteos de resultados filtrados más una vista previa reciente acotada |
| lectura | Pasos fallidos de un resultado, con medición frente a límites |
| lectura | Estadísticas de tabla más una traza diezmada (diezmada en la API en vivo) |
| lectura | Activos con calibración vencida o próxima a vencer |
| lectura | Inventario con presencia y estado de calibración |
| lectura | Sistemas registrados y estado de conexión |
| lectura | Productos / números de parte / familias |
| lectura | Límites de especificación de un producto |
| lectura | Metadatos de archivos de un resultado o activo (sin contenidos) |
| escritura habilitada | Palabras clave/propiedades en un resultado de prueba |
| 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.pyPowerShell:
$env:SYSTEMLINK_MCP_SIMULATE="1"
npx -y @modelcontextprotocol/inspector uv run server.pyAbre 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 --httpEl 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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Reinicia Claude Desktop después de guardar.
Prompts que ejercitan la flota simulada
"¿Cuál es la tasa de aprobado/fallido para el número de parte PN-5164-B, agrupada por las otras revisiones?"
"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."
"¿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 pytestLas 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.
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
- AlicenseNot gradedqualityCmaintenanceExposes enterprise KPIs, health scores, forecasting, and anomaly detection as MCP tools, resources, and prompts for use by any MCP-compatible agent.2AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables 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
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to analyze plant-floor data using OEE, Pareto, SPC, and yield-loss calculations, providing continuous-improvement insights from manufacturing data.1
- FlicenseNot gradedqualityCmaintenanceExposes product analytics metrics from an internal data warehouse via MCP, enabling agents to query metrics, product summaries, and event breakdowns.
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
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/rhit-folayaod/systemlink-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server