
Keithley SourceMeter SMU
io.github.K-Dense-AI由 GitHub 账号 K-Dense-AI 发布v0.1.2更新于 Oct 28, 2026
MCP server for Keithley SourceMeter SMUs (2400 series SCPI, 2450 family SCPI, 2600B TSP).
发布方自己的服务:Source
概览
让 AI 助手驱动 Keithley SourceMeter SMU 的 MCP 服务器:输出源电压或电流、测量并运行带安全限值的 IV 扫描。
- 可以做什么
- 配置源功能、电平、合规限值、量程与测量速度,并在两线/四线感测间切换
- 开启或关闭输出、修改运行中源的电平,以及断电重启后重新连接
- 进行单次源-测量读数,返回电压、电流、功率与合规状态
- 运行阶梯式 IV 扫描(线性、对数、双向),结束时必定关闭输出,返回曲线、线性拟合及可选 CSV
- 查看连接信息、设备身份、状态与原始命令日志以便调试
- 适用场景
- 适用于实验室或测试台上由助手操作 Keithley SMU 进行器件表征:二极管、LED、忆阻器、光电二极管的 IV 曲线,电阻测量或脚本化测量流程。也可先用内置模拟器在无硬件的情况下试用。
- 运行要求
- 以 Python 包(uvx 或 pip)通过 stdio 在本机运行,仅限桌面端。需要通过 GPIB、USB(USBTMC)、以太网或 RS-232 连接仪器,GPIB/USBTMC 需 VISA 库。用 LABMCP_ADDRESS 指定仪器地址;LABMCP_LIMITS、LABMCP_READ_ONLY、LABMCP_SIMULATE 为可选项。2450 系列需设为 SCPI 命令集模式。
安装
在 SourceWeft 中
- 打开 控制台中的 Keithley SourceMeter SMU,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Keithley SourceMeter SMU — MCP Server
Let an AI agent source voltage or current with a compliance limit, measure V and I, and run bounded IV sweeps (linear, log, dual) on Keithley (Tektronix) SourceMeter SMUs. Every sweep ends with the output switched off, even when something goes wrong. The server speaks all three Keithley remote dialects: 2400-series SCPI, 2450-family SCPI, and 2600B TSP.
Try it without hardware
The simulated DUT is a resistor (1 kΩ by default) or a 1N4148-like diode (Shockley equation, I_s = 2.52 nA, n = 1.752, R_s = 0.568 Ω). Compliance clamping behaves as on a real SMU.
Connect your SMU
- Instrument side.
- 2400 series: GPIB (default address 24) or RS-232. For RS-232 set MENU > COMMUNICATION > RS-232: 9600 baud, 8 data bits, no parity, TERMINATOR LF, no flow control.
- 2450 / 2460 / 2461 / 2470: use the SCPI command set (MENU > System > Settings > Command Set > SCPI, then reboot). If the instrument is in TSP mode the server stops with instructions. In
SCPI2400emulation mode it is driven with the 2400 dialect. Above ±21 V the 2450 needs its safety interlock closed. - 2600B: works as shipped (TSP). Leave
localnode.promptsdisabled (the default); prompts would be mixed into replies.
- Find the address:
uvx labmcp ports(orpython -m pyvisa info). GPIB and USBTMC need a VISA library with GPIB support. NI-VISA works everywhere; pyvisa-py covers USBTMC/LAN (and GPIB withgpib-ctypes/linux-gpib). - Test the connection:
The dialect is detected from
*IDN?(and*LANG?on the 2450 family). Force it with--option dialect=2400|2450|2600.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow status and measurements but block configuration, output-on and sweeps (output_off stays available). For other clients, generate the snippet with uvx labmcp config keithley-smu --address <resource> --client vscode (also cursor, codex, claude-code).
Tools
get_connection_info, get_command_log and reconnect are built into every LabMCP server.
Safety limits
The limits are checked before anything is sent: by configure_source and set_source_level, by run_iv_sweep (on the largest |start|, |stop|), and by output_on, which reads the programmed level and compliance back from the instrument. A level set on the front panel is therefore caught too. Requests beyond the model's own maximum (e.g. 40 V on a 2602B) are also refused. Override at launch: --limit max_voltage_v=60 --limit max_power_w=10. Tighten the defaults for fragile DUTs.
Example prompts
- "Measure the IV curve of this LED from 0 to 3 V in 61 steps with a 20 mA compliance, then tell me the turn-on voltage at 1 mA."
- "Source 1 mA through the sample in 4-wire mode and give me its resistance; then turn the output off."
- "Run a dual sweep from −1 V to +1 V on the memristor with 1 mA compliance and 0.1 s per point, and save it to ~/data/memristor_run3.csv."
- "Do a log current sweep from 1 nA to 10 mA on the photodiode with a 2 V limit and fit the ideality factor."
- "What is the SMU doing right now? If the output is on, turn it off."
Notes
-
Simple, verifiable commands. Sweeps are stepped loops: set the level, wait
delay_s, take one reading, check compliance. Built-in instrument sweeps and trigger models are not used, so every point shows up inget_command_log. The output is switched off in atry/finallyat the end of every sweep. Callingoutput_offwhile a sweep runs (even while it is still configuring) sets an abort flag and switches the output off at once; the sweep then stops without switching the output on again and reportsaborted: true. -
Sweep duration. Besides
max_sweep_duration_s, one sweep can take at most 1740 s (the tool's 30-minute timeout minus a margin): longer estimates are refused, and a sweep that runs slower than estimated stops early with the output off and returns the points measured so far (stop_reasonsays why). -
save_pathmust end in.csvand must not exist yet (an existing file is never overwritten); missing folders are created. It is checked before the output is switched on. -
Overflow readings (the SMU's +9.9E37 marker) are returned as
nullin the sweep curve, counted inoverflow_pointsand left out of the statistics and the fit;measurereports them as an error. -
What is measured.
- 2400: concurrent V and I (
:SENS:FUNC:CONC ON,:SENS:FUNC "VOLT","CURR"), read with:READ?(:FORM:ELEM VOLT,CURR,STAT). Compliance comes from status-word bit 3. - 2450: the measure function is the non-sourced quantity, source readback is on, and
:READ? "defbuffer1",SOUR,READreturns both. Compliance comes from:SOUR:VOLT:ILIM:TRIP?/:SOUR:CURR:VLIM:TRIP?. - 2600B:
print(smuX.measure.iv())andprint(smuX.source.compliance).
In compliance, the reported V and I are the measured values, not the programmed level.
- 2400: concurrent V and I (
-
The 2400's
:MEAS?turns the output on by itself (manual p. 18-72), so it is never used.measurerefuses to run when the output is off. -
Reconfiguration happens with the output off.
configure_sourceandset_4wirerefuse while the output is on. Useset_source_level(a hazard tool) to change a running source. -
Output-off state (normal / zero / high-Z / guard) is left as configured on the instrument. With the default normal state, a current source turned off becomes a 0 V source. For batteries, charged capacitors or solar cells, select high-impedance first (2450 manual p. 6-40).
-
The 2460/2461/2470 maxima are not built in (their manuals weren't reviewed). The safety limits still apply, and the instrument rejects anything beyond its range. The 2430 pulse mode and the 2600B's
limitppower compliance are not used. -
Timing: NPLC sets the integration time (1 PLC = 16.7 ms at 60 Hz, 20 ms at 50 Hz). Source auto-delay stays at the instrument default (on), and
delay_sadds settling time per point. -
Simulator error replies follow the manuals' error lists (
+802 "Not permitted with OUTPUT off",-222,-113; 2600B1101 "Parameter too big",-285/-286). The exact message wording on real firmware may differ.
Hardware verification
来源:servers/physics/keithley-smu/README.md,提交 46545ea
工具
0版本历史
2- v0.1.2最新Sep 27, 2026
- v0.1.0Sep 26, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Source 集成
Source
app.source官方发布者
Source 提供的远程 MCP 端点,让助手访问已接入 Source 的网站的营销归因与分析数据。

ArxSource
由 GitHub 账号 nicolaiprodromov 发布
本地 MCP 服务器,让助手检索 arXiv 论文、按章节或 LaTeX 原文阅读、追踪引用,并找到论文对应的代码。
SourceMed
io.sourcemed
SourceMed 为助手提供经来源核验的临床证据库:可提出证据问题、浏览书架并按关键词检索。

Spree Commerce: open-source B2B and marketplace ecommerce
由 GitHub 账号 spree 发布
Spree 的 MCP 服务器让 AI 助手用自然语言管理 Spree 商店的商品目录、回答报表问题并完成店铺设置。

PlushSource
由 GitHub 账号 quickman924 发布
本地 MCP 服务器,内置定制毛绒玩具制造商名录,让助手搜索、筛选、比较并引用厂商条目。