systemlink-mcp
systemlink-mcp
NI SystemLink을 AI 클라이언트에 노출하는 MCP 서버로, 시험·계측(Test-and-Measurement) 특화 도구를 제공합니다: 제품 리비전별 수율(yield), 규격 한계 대비 불량 DUT 스텝, 측정 트레이스 요약, 교정 기한 도래 자산 등을 다룹니다.
이 프로젝트는 daq-mcp의 플릿(fleet)/데이터 계층 동반자입니다. daq-mcp는 단일 DAQ 장치와 통신하고, systemlink-mcp는 랩 전체의 결과, 자산, 시스템을 조회하고 상호 연관시킵니다.
이 프로젝트는 관리자 1인이 운영하는 개인 프로젝트입니다. NI 제품이 아니며, NI / Emerson과 제휴, 보증, 지원 관계가 없습니다.
일반 래퍼 대신 시험 도메인 도구를 사용하는 이유
상용 미들웨어 카탈로그는 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이 설정된 경우에만 작동합니다. 읽기 도구는 추가 플래그 없이 작동합니다.
현재 nisystemlink-clients의 AssetManagementClient에는 생성, 조회, 삭제, 파일 링크, 활용도 메서드가 있지만 자산 업데이트 메서드는 없습니다. 따라서 게이트된 쓰기 표면은 Test Monitor 결과 메타데이터를 업데이트하고 노트북 실행을 대기열에 넣는 역할만 하며, 자산 레코드는 다루지 않습니다.
스택
Python 3.11+, uv, FastMCP(stdio 또는 Streamable HTTP), Pydantic v2, 공식 nisystemlink-clients 패키지. 도구는 SDK를 직접 임포트하지 않고 SystemLinkBackend를 호출합니다. SYSTEMLINK_MCP_SIMULATE=1을 설정하면 SystemLink 서버가 필요 없는 순수 Python 페이크를 사용합니다.
빠른 시작 (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가 포함됩니다.
SystemLink에서 API 키를 생성합니다 (Enterprise: 정책 생성 후 API 키; SDK가 보내는 HTTP 헤더는
x-ni-api-key입니다). SLE는 프로그래매틱 액세스에 사용자 이름과 비밀번호를 허용하지 않습니다..env.example을.env(gitignore 대상)로 복사하고 다음을 설정합니다:
SYSTEMLINK_SERVER_URI=https://your-systemlink-host
SYSTEMLINK_API_KEY=...
SYSTEMLINK_MCP_REQUIRE_REAL=1SYSTEMLINK_MCP_SIMULATE는 설정하지 않은 채로 둡니다. 기본 인증을 여전히 허용하는 온프레미스 SystemLink Server는 키 대신 SYSTEMLINK_USERNAME / SYSTEMLINK_PASSWORD를 사용할 수 있습니다. SystemLink Cloud는 API 키만으로 사용할 수 있습니다(URI 불필요). 그러면 백엔드가 CloudHttpConfiguration을 구성합니다.
MCP 실행 전에 프로브를 수행하여 로그인 실패가 조용히 페이크 플릿으로 바뀌지 않도록 합니다:
uv run server.py --probe"simulated": false와 서버의 짧은 query_systems 미리보기가 표시되어야 합니다. 그런 다음 simulate 플래그 없이 MCP를 실행하거나 Cursor에서 .cursor/mcp.json.live.example을 가리킵니다.
--probe가 실패하면 JSON 오류는 더미 데이터가 아닌 SDK(ApiException / 연결)에서 온 것입니다.
도구
도구 | 액세스 | 답변하는 질문 |
| 읽기 | 합격/불합격 수율, 선택적으로 부품, 프로그램 또는 시리얼별 그룹화 |
| 읽기 | 필터링된 결과 개수 및 제한된 최근 미리보기 |
| 읽기 | 단일 결과의 실패 스텝, 측정값 대 한계 비교 |
| 읽기 | 테이블 통계 및 다운샘플링된 트레이스(라이브 API에서 decimate) |
| 읽기 | 교정 기한이 지났거나 임박한 자산 |
| 읽기 | 존재 상태 및 교정 상태를 포함한 인벤토리 |
| 읽기 | 등록된 시스템 및 연결 상태 |
| 읽기 | 제품 / 부품 번호 / 패밀리 |
| 읽기 | 제품의 규격 한계 |
| 읽기 | 결과 또는 자산의 파일 메타데이터(내용 제외) |
| 게이트된 쓰기 | 테스트 결과의 키워드/속성 |
| 게이트된 쓰기 | 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)을 엽니다. 12개 도구가 나타나는지 확인한 후 group_by=part_number로 summarize_yield를 호출합니다.
stdio 대신 Streamable HTTP:
SYSTEMLINK_MCP_SIMULATE=1 uv run server.py --httpMCP 엔드포인트는 http://127.0.0.1:8000/mcp입니다. transport="sse"는 사용하지 마십시오. 해당 전송 방식은 더 이상 사용되지 않습니다(deprecated).
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
claude_desktop_config.json에 동일한 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에 대한 네트워크 연결을 열지 않습니다.
상태
개인 프로젝트, 관리자 1인. 시뮬레이션 백엔드가 지원되는 일상 사용 경로입니다. 실제 백엔드는 python-docs.systemlink.io에 문서화된 nisystemlink-clients 2.32.x API와 ni/nisystemlink-clients-python 소스를 기준으로 작성되었습니다. 이 리포지토리의 CI에서는 라이브 SystemLink Enterprise 인스턴스에 대해 실행되지 않았습니다. 교정 상태에 대한 Asset Dynamic LINQ 속성 이름은 공식 AssetIdentifier 예제의 PascalCase 스타일을 따릅니다. 라이브 서버가 해당 필터를 거부하면 이는 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