プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Generic SCPI Instrument

作者:K-Dense-AIバージョン 0.1.3i★ –iパソコンで動く
レジストリ名io.github.K-Dense-AI/labmcp-scpi

インストール

概要

作者による説明(英語の原文)

Generic MCP server for any SCPI instrument over VISA, TCP or serial, with command allow/deny lists.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: LABMCP_ADDRESS, LABMCP_SIMULATE, LABMCP_READ_ONLY, LABMCP_LIMITS

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "labmcp-scpi": {
      "command": "uvx",
      "args": [
        "labmcp-scpi"
      ],
      "env": {
        "LABMCP_ADDRESS": "your-value",
        "LABMCP_SIMULATE": "your-value",
        "LABMCP_READ_ONLY": "your-value",
        "LABMCP_LIMITS": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add labmcp-scpi --env LABMCP_ADDRESS=your-value --env LABMCP_SIMULATE=your-value --env LABMCP_READ_ONLY=your-value --env LABMCP_LIMITS=your-value -- uvx labmcp-scpi

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "labmcp-scpi": {
      "command": "uvx",
      "args": [
        "labmcp-scpi"
      ],
      "env": {
        "LABMCP_ADDRESS": "your-value",
        "LABMCP_SIMULATE": "your-value",
        "LABMCP_READ_ONLY": "your-value",
        "LABMCP_LIMITS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "labmcp-scpi": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "labmcp-scpi"
      ],
      "env": {
        "LABMCP_ADDRESS": "your-value",
        "LABMCP_SIMULATE": "your-value",
        "LABMCP_READ_ONLY": "your-value",
        "LABMCP_LIMITS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • LABMCP_ADDRESS env
    Instrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
  • LABMCP_SIMULATE env
    Set to 1 to use the built-in simulator (no hardware)
  • LABMCP_READ_ONLY env
    Set to 1 to disable all state-changing tools
  • LABMCP_LIMITS env
    Safety limit overrides, e.g. max_temperature_c=80

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント K-Dense-AI で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

その他のほかのサーバーとの比較i

  • このカテゴリのほかの18513件のうち0%よりスターが多い
  • このカテゴリのほかの18513件のうち52%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの18513件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Generic SCPI Instrumentは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.1.3)がレジストリに届いたのは42 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Cape Winelands Visit Planner

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry初期↓ 66/週★ 44014 か月前更新

パソコンで動く

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander成長中★ 2113 日前更新

クラウドで動く✓ desktopcommander.app

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Generic SCPI Instrument — MCP Server

Let an AI agent talk to any IEEE 488.2 / SCPI instrument: multimeters, oscilloscopes, source-measure units, power supplies, electronic loads, function generators, spectrum analyzers and counters. It works over GPIB, USBTMC, LAN (VXI-11, HiSLIP, raw socket) and RS-232. Because the agent writes raw SCPI, the server puts the safety in the plumbing. The read path accepts only single queries. Anything that changes the instrument goes through tools the MCP client asks you to confirm. You can give the server command allow and deny lists and a safe-state command of your own.

Keysight or Rohde & Schwarz instrument? Use the vendor's official MCP server instead: Keysight MCP Server for Instrument Control or the MCP server that ships with RsInstrument (python -m RsInstrument.mcp). labmcp-scpi covers everything else: Tektronix/Keithley, Rigol, Siglent, SRS, Aim-TTi, B&K Precision, GW Instek, older HP/Agilent GPIB gear, and more.

Packagelabmcp-scpi
InstrumentsAny instrument that speaks SCPI or IEEE 488.2 common commands
InterfacesGPIB, USBTMC, LAN VXI-11 / HiSLIP (all via VISA), LAN raw socket (e.g. port 5025), RS-232 / USB-serial
ProtocolSCPI-99 / IEEE 488.2 (SCPI-99 standard, IVI Foundation); VISA via PyVISA
Status🧪 simulated: tested against a wire-level SCPI simulator, not yet verified on hardware. Report a hardware test

Try it without hardware

uvx labmcp-scpi --simulate --check

The simulator is a small, generic bench instrument (*IDN? → LabMCP,SIM-DMM-PSU,SIM000001,1.0.0). It is a 0–30 V / 3 A supply driving a 100 Ω load, with a built-in DMM across the load. It supports MEASure:VOLTage:DC?, CONFigure + READ?/FETCh?, [SOURce:]VOLTage/CURRent, OUTPut[:STATe], TRIGger:COUNt, FORMat[:DATA] REAL,32|64 binary blocks, FORMat:BORDer, *ESR?/*STB?, and a 10-entry SYSTem:ERRor? queue (overflow gives -350). In --simulate mode, the safe state is OUTP OFF.

Connect your instrument

  1. Instrument setup: enable the remote interface you want to use.
  • LAN: set a fixed IP address. Enable VXI-11/HiSLIP (for VISA) or the SCPI raw-socket server. Many instruments use port 5025 for the socket; check the LAN settings page or the manual.
  • USB: select USBTMC / "USB device (TMC)", not "USB mass storage" or a virtual COM port.
  • GPIB: note the instrument's GPIB address.
  • RS-232: set the baud rate, parity and handshake, and select SCPI as the language if the instrument asks.
  1. Find it: uvx labmcp ports, or ask the agent to run list_visa_resources. That tool works without --address and lists VISA resources through pyvisa-py; pass backend=@ivi to use NI-VISA or another vendor VISA library.
  2. Test the connection:
   uvx labmcp-scpi --address visa://TCPIP0::192.168.1.50::inst0::INSTR --check      # LAN, VXI-11

uvx labmcp-scpi --address visa://TCPIP0::192.168.1.50::hislip0::INSTR --check # LAN, HiSLIP uvx labmcp-scpi --address tcp://192.168.1.50:5025 --check # raw socket uvx labmcp-scpi --address "visa://USB0::0x1AB1::0x0588::DS1ZA000000::INSTR" --check uvx labmcp-scpi --address "visa://GPIB0::22::INSTR?backend=@ivi" --check # NI-VISA uvx labmcp-scpi --address "serial:///dev/ttyUSB0?baudrate=9600&read_termination=CRLF" --check

   `--check` prints the parsed `*IDN?` reply. If it times out, check the terminator: SCPI uses LF by default, and some serial instruments need `read_termination=CRLF`. Also check the baud rate, and that the instrument is set to SCPI rather than an emulation language.

Add to your MCP client

Claude Code

claude mcp add scope -- uvx labmcp-scpi --address visa://TCPIP0::192.168.1.50::inst0::INSTR

Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)

{

"mcpServers": { "psu": { "command": "uvx", "args": [ "labmcp-scpi", "--address", "tcp://192.168.1.50:5025", "--option", "safe_state=OUTP OFF", "--option", "write_denylist=^OUTP\\d*(:STAT)? (?!OFF\\b)" ] } } }

Add --read-only to allow only queries. In read-only mode scpi_write, scpi_batch and reset_instrument disappear. device_clear and apply_safe_state stay available. Run one server per instrument, each with its own key (scope, psu, dmm, …).

Tools

ToolKindDescription
apply_safe_state🛑 safetyPut the instrument into the lab's configured safe state (the --option safe_state program message, e.g. 'OUTP OFF'), then read the error queue. Only listed when a safe state is configured. Call it immediately if anything looks wrong.
device_clear🛑 safetyRecover a stuck or confused instrument: VISA device clear (or discard unread input on socket/serial links), report the error queue, optionally ABORt, then *CLS. This does NOT make an arbitrary instrument safe (outputs stay as they are): use apply_safe_state if the lab configured one, or the instrument's own controls.
get_command_log👁 readReturn the most recent raw commands sent to / replies received from the instrument (newest last). Useful for debugging and for recording what was done.
get_connection_info👁 readReport which instrument is connected (identity, address, simulated or real), whether the server is read-only, and the active safety limits. Call this first.
get_errors👁 readRead and clear the instrument's error/event queue (SYSTem:ERRor? until 0,"No error"). Entries are returned oldest first; each can only be read once. An empty list means no errors.
identify👁 readAsk the instrument who it is (*IDN?): manufacturer, model, serial number, firmware.
list_visa_resources👁 readList GPIB / USBTMC / LAN (VXI-11, HiSLIP) instruments visible to VISA on this computer. Works without --address. Raw-socket instruments (tcp://host:5025) are not discoverable.
query_binary_block👁 readRead an IEEE 488.2 definite-length binary block (waveforms, trace data, screenshots, FORMat REAL/INTeger readings). The query must pass the same read-only checks as scpi_query. Returns length, SHA-256 and (optionally) decoded values with summary statistics, downsampled to max_points; use save_path for the full data. Blocks larger than the max_block_bytes limit are discarded.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
reset_instrument⚠️ hazardReset the instrument to its default settings (*RST, then *CLS), wait for completion and check errors. SCPI requires outputs OFF after *RST, but every other setting (levels, ranges, triggers, limits) returns to its default and some instruments differ: check the manual before resetting anything connected to a device under test.
scpi_batch⚠️ hazardRun a short sequence of SCPI commands and queries in order, checking the error queue after every step. Every step is checked against the command policy BEFORE the first one is sent, so a refused step means nothing was sent. Returns per-step replies and errors. Steps not started within ~14 minutes are not sent (status not_run).
scpi_primer👁 readConcise SCPI syntax guide (long/short forms, queries, compound commands, common commands, error queue, binary blocks) plus this server's active command policy. Works without a connection.
scpi_query👁 readSend ONE read-only SCPI query and return the instrument's text reply.
scpi_write⚠️ hazardSend any SCPI program message (settings, compound 'A;B' messages, queries with side effects) and then read the error queue. If the message contains a query, its reply is returned. This can change the instrument's state, including switching outputs on; say what the command does before calling it. Commands in the lab's denylist, or outside its allowlist, are refused before anything is sent.
wait_operation_complete👁 readWait until the instrument has finished all pending operations (*OPC? returns 1), e.g. after starting a sweep, an acquisition or a settling source.

get_connection_info, get_command_log and reconnect are built into every LabMCP server. apply_safe_state is listed only when a safe state is configured.

Command policy

A generic server cannot know which SCPI commands are dangerous on *your* instrument. It enforces what it can and lets you add the rest:

RuleWhereWhat happens
Single query onlyscpi_query, query_binary_block (READ, allowed in read-only mode)The header must end in ? (parameters such as VOLT? MAX are fine). Messages with ;, line breaks or control characters are refused.
Built-in side-effect queriesscpi_query, query_binary_block*TST? (self-test), *CAL?, CALibration…? and DIAGnostic…? are refused here. They must go through scpi_write.
--option query_denylist=REGEXscpi_query, query_binary_blockExtra queries that your lab treats as having side effects, e.g. `^(MEAS\READ) on an SMU. They then need scpi_write`.
--option write_denylist=REGEX (alias denylist)every raw toolNo tool ever sends a matching command. Setting both names to different patterns is a configuration error.
--option write_allowlist=REGEXscpi_write, scpi_batch, reset_instrumentIf set, these tools may only send commands that match (queries that scpi_query accepts are always allowed). Any message containing ; is refused, even inside quotes.
--option safe_state=MESSAGEapply_safe_state (SAFETY)The program message that makes *your* instrument safe, e.g. OUTP OFF. It is sent as-is and never blocked by the lists.
--option error_query=QUERYall writesError-queue query, default SYST:ERR?.

Matching rules:

  • Patterns are Python regular expressions, matched case-insensitively.
  • Each ;-separated message unit is checked in two forms. The first is the unit as sent, upper-cased, with collapsed whitespace and no leading colon. The second reduces every mnemonic to its SCPI short form (SCPI-99 Vol. 1 §6.2.1): :OUTPut1:STATe ON becomes OUTP1:STAT ON. So ^OUTP\d*(:STAT)? (?!OFF\b) catches OUTP ON, outp:stat 1, VOLT 5;:OUTPut:STATe ON and OUTPut2 ON.
  • SCPI booleans accept any number (it is rounded, and anything non-zero means ON), so OUTP 2, OUTP 1.0 and OUTP #H1 also switch an output on. Deny "everything except OFF", as above, rather than listing (ON|1).
  • The denylist uses re.search. It also resolves relative headers (OUTP:POL NORM;STAT ON is checked as OUTP:STAT ON) and splits at every ;, even inside quotes. The allowlist must match a whole unit.
  • Every step of scpi_batch is checked before the first step is sent.

Examples:

# Power supply: the agent may set levels and switch the output OFF, but only a human switches it on

--option 'write_denylist=^OUTP\d*(:STAT)? (?!OFF\b)' --option 'safe_state=OUTP OFF'

DMM: allow measurement configuration only

--option 'write_allowlist=(CONF|SENS|TRIG|INIT|FORM|ABOR)(:\S+)*( .*)?'

SMU: measuring can switch the output on, so require confirmation for it

--option 'query_denylist=^(MEAS|READ)' --option 'safe_state=OUTP OFF'

The environment variable LABMCP_OPTIONS splits on commas. For regular expressions that contain commas, pass t

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く