systemlink-mcp
systemlink-mcp
MCP-сервер, который открывает NI SystemLink для ИИ-клиентов с инструментами, ориентированными на измерения и тестирование: выход годных по редакции продукта, шаги отказавших DUT относительно пределов спецификаций, сводки по измерительным трейсам и активы с истёкшей калибровкой.
Это компаньон уровня парка/данных для daq-mcp.
daq-mcp работает с одним DAQ-устройством. systemlink-mcp запрашивает и
сопоставляет результаты, активы и системы по всей лаборатории.
Это личный проект с одним сопровождающим. Он не является продуктом NI и не связан с NI / Emerson, не одобрен и не поддерживается ими.
Почему инструменты предметной области вместо универсальной обёртки
Коммерческий каталог middleware может перечислить SystemLink среди тысяч промышленных систем, а затем предоставить поверхность в стиле CMMS/ERP: наряды на работы, площадки, помещения, заказы на продажу. Такая абстракция не может ответить на вопросы, которые реально задаёт инженер по тестированию:
доля прохождения/отказа для редакции B продукта в этом квартале
какое измерение на отказавшем DUT превысило свой предел
какой модуль PXI просрочил дату калибровки
Каждый инструмент здесь построен вокруг этих вопросов. Ответы — это сводки плюс ограниченный предпросмотр, а не сырые данные Test Monitor или DataFrame. Сброс тысяч строк результатов или 2000-точечной формы сигнала в контекст модели делает сервер непригодным, даже если вызовы API корректны.
Related MCP server: Auto-Manager MCP
Только чтение по умолчанию
Изменяющие инструменты (update_result_properties, execute_notebook)
отказываются работать, если не задано SYSTEMLINK_MCP_ALLOW_WRITE=1.
Инструменты чтения работают без дополнительных флагов.
Текущий AssetManagementClient из nisystemlink-clients имеет методы
создания, запроса, удаления, привязки файлов и использования, но не имеет
метода обновления активов. Поэтому ограниченная поверхность записи
обновляет метаданные результатов Test Monitor и ставит в очередь выполнение
ноутбуков, но не записи об активах.
Стек
Python 3.11+, uv, FastMCP (stdio или Streamable HTTP), Pydantic v2 и
официальный пакет nisystemlink-clients. Инструменты никогда не импортируют
SDK; они вызывают SystemLinkBackend. Установите SYSTEMLINK_MCP_SIMULATE=1
для чисто Python-имитации, которой не нужен сервер SystemLink.
Быстрый старт (без сервера SystemLink)
uv sync
SYSTEMLINK_MCP_SIMULATE=1 uv run server.pyPowerShell:
$env:SYSTEMLINK_MCP_SIMULATE="1"; uv run server.pyРеальный SystemLink
Имитационный бэкенд используется только когда задано SYSTEMLINK_MCP_SIMULATE=1,
или когда живое подключение не удаётся и SYSTEMLINK_MCP_REQUIRE_REAL не задан.
Живой ответ содержит "backend": "systemlink" и "simulated": false.
Создайте API-ключ в SystemLink (Enterprise: сначала политику, затем API-ключ; HTTP-заголовок, который отправляет SDK, —
x-ni-api-key). SLE не принимает имя пользователя и пароль для программного доступа.Скопируйте
.env.exampleв.env(в gitignore) и задайте:
SYSTEMLINK_SERVER_URI=https://your-systemlink-host
SYSTEMLINK_API_KEY=...
SYSTEMLINK_MCP_REQUIRE_REAL=1Оставьте SYSTEMLINK_MCP_SIMULATE незаданным. Локальный SystemLink Server,
который всё ещё разрешает базовую аутентификацию, может использовать
SYSTEMLINK_USERNAME / SYSTEMLINK_PASSWORD вместо ключа. SystemLink Cloud
может использовать только API-ключ (без URI); тогда бэкенд сам создаёт
CloudHttpConfiguration.
Сначала проверьте подключение до MCP, чтобы неудачный вход не превратился молча в имитацию парка:
uv run server.py --probeВы должны увидеть "simulated": false и короткий предпросмотр query_systems
с вашего сервера. Затем запустите MCP без флага имитации или укажите Cursor
на .cursor/mcp.json.live.example.
Если --probe завершается ошибкой, JSON-ошибка приходит от SDK
(ApiException / connect), а не от фиктивных данных.
Инструменты
Инструмент | Доступ | На какой вопрос отвечает |
| чтение | Доля прохождения/отказа, опционально с группировкой по детали, программе или серийнику |
| чтение | Количество отфильтрованных результатов плюс ограниченный предпросмотр последних |
| чтение | Шаги отказа для одного результата, с измерением и пределами |
| чтение | Статистика таблицы плюс прореженный трейс (децимация на живом API) |
| чтение | Активы с просроченной или приближающейся калибровкой |
| чтение | Инвентаризация со статусом наличия и калибровки |
| чтение | Зарегистрированные системы и состояние подключения |
| чтение | Продукты / номера деталей / семейства |
| чтение | Пределы спецификаций для продукта |
| чтение | Метаданные файлов для результата или актива (без содержимого) |
| запись с гейтом | Ключевые слова/свойства на результате теста |
| запись с гейтом | Постановка в очередь выполнения Jupyter-ноутбука |
MCP Inspector
Из корня репозитория, с принудительной имитацией:
SYSTEMLINK_MCP_SIMULATE=1 npx -y @modelcontextprotocol/inspector uv run server.pyPowerShell:
$env:SYSTEMLINK_MCP_SIMULATE="1"
npx -y @modelcontextprotocol/inspector uv run server.pyОткройте напечатанный URL (обычно http://127.0.0.1:6274). Убедитесь, что
появились все двенадцать инструментов, затем вызовите summarize_yield с
group_by=part_number.
Streamable HTTP вместо stdio:
SYSTEMLINK_MCP_SIMULATE=1 uv run server.py --httpКонечная точка MCP — http://127.0.0.1:8000/mcp. Не используйте
transport="sse"; этот транспорт устарел.
Cursor
Используйте .cursor/mcp.json.example (имитатор) или
.cursor/mcp.json.live.example (реальный сервер). Локальный
.cursor/mcp.json находится в gitignore.
{
"mcpServers": {
"systemlink-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"C:/Users/folayaod/personal/systemlink-mcp",
"server.py"
],
"env": {
"SYSTEMLINK_MCP_SIMULATE": "1"
}
}
}
}Claude Desktop
Тот же JSON-блок, в claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Перезапустите Claude Desktop после сохранения.
Подсказки для работы с имитационным парком
«Какова доля прохождения/отказа для номера детали PN-5164-B, в сравнении с другими редакциями?»
«DUT-1001 не прошёл BoardFunctional.seq. Какой шаг не прошёл и как Gain соотносится с пределами? Суммируй приложенный измерительный трейс.»
«Какие активы PXI просрочены или приближаются к калибровке, и подключена ли PXI Rack 1?»
Тесты
SYSTEMLINK_MCP_SIMULATE=1 uv run pytestТесты работают только с имитационным бэкендом. Они не открывают сетевое подключение к SystemLink.
Статус
Личный проект, один сопровождающий. Имитационный бэкенд — поддерживаемый
путь для повседневной работы. Реальный бэкенд написан против API
nisystemlink-clients 2.32.x, описанных на python-docs.systemlink.io
и в исходниках ni/nisystemlink-clients-python.
Он не запускался против живого экземпляра SystemLink Enterprise в CI этого
репозитория. Имена свойств Dynamic LINQ для активов, связанных со статусом
калибровки, следуют стилю PascalCase из официального примера AssetIdentifier;
если живой сервер отклоняет такой фильтр, это известный интеграционный риск,
описанный в 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