Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

SRS Lock-in Amplifier

PYPI · LABMCP-SRS-LOCKIN · SCANNED SEP 30

MCP server for Stanford Research Systems lock-in amplifiers (SR810/SR830, SR860/SR865A).

Available components

69 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security49
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 2 of 17 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to K-Dense-AI/lab-instrument-mcps). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 3 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 1582 tokens (~105/item across 15 items; 15 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
  • Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the SRS Lock-in Amplifier MCP server?

SRS Lock-in Amplifier runs locally as a PyPI package, launched with uvx labmcp-srs-lockin. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · labmcp-srs-lockin

# add to Claude Code
claude mcp add k-dense-ai-labmcp-srs-lockin -- uvx labmcp-srs-lockin
// .cursor/mcp.json
{
  "mcpServers": {
    "k-dense-ai-labmcp-srs-lockin": {
      "command": "uvx",
      "args": [
        "labmcp-srs-lockin"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "k-dense-ai-labmcp-srs-lockin": {
      "command": "uvx",
      "args": [
        "labmcp-srs-lockin"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add k-dense-ai-labmcp-srs-lockin -- uvx labmcp-srs-lockin
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "k-dense-ai-labmcp-srs-lockin": {
      "type": "local",
      "command": [
        "uvx",
        "labmcp-srs-lockin"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add k-dense-ai-labmcp-srs-lockin --command uvx --arg labmcp-srs-lockin
# ~/.hermes/config.yaml
mcp_servers:
  k-dense-ai-labmcp-srs-lockin:
    command: "uvx"
    args: ["labmcp-srs-lockin"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "k-dense-ai-labmcp-srs-lockin": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "labmcp-srs-lockin"
      ]
    }
  }
}
# add to Vellum
assistant mcp add k-dense-ai-labmcp-srs-lockin -t stdio -c uvx -a labmcp-srs-lockin
// mcp.json
{
  "mcpServers": {
    "k-dense-ai-labmcp-srs-lockin": {
      "command": "uvx",
      "args": [
        "labmcp-srs-lockin"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Sept 26 −4
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 0
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.1.2 → 0.1.3 functional
  • 26 Sept 26 72

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 30 Sept 2026 · Analysed pypi/labmcp-srs-lockin@0.1.3

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo K-Dense-AI/lab-instrument-mcps
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/K-Dense-AI/lab-instrument-mcps/.github/workflows/release.yml@refs/tags/labmcp-srs-lockin-v0.1.3
Rekor log index 2969518154
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:5b3d2260b3182cb1691f58a44de94a60e8aab197fe91a362194070c5e3aad1e4

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 17 packages
Packages resolved 17
Stale 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 15 exposed · ~1,188 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
auto_gain ~47

Pick the sensitivity automatically for the present signal (SR830 AGAN / SR86x ASCL). On the SR830 AGAN does nothing when the time constant is longer than 1 s.

Input schema present but exposes no named parameters.

NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

auto_phase ~51

Run Auto Phase (APHS): shift the reference phase so that Y ≈ 0 and X ≈ R. The outputs then need several time constants to settle. Does nothing if the phase is unstable.

Input schema present but exposes no named parameters.

NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

auto_range ~42

Optimise the input stage for the present signal: SR830 Auto Reserve (ARSV) or SR86x Auto Range of the voltage input range (ARNG).

Input schema present but exposes no named parameters.

NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

frequency_sweep ~211

Step the internal reference (and SINE OUT drive) from start_hz to stop_hz, waiting for the output filter to settle at each point, and record X/Y/R/θ vs frequency - e.g. a resonance or transfer-function measurement. The drive amplitude stays at its present value. Needs the internal reference. The estimated duration must be within `max_sweep_duration_s`; `set_amplitude_minimum` stops a running sweep. `save_path` must be a new .csv file.

NameTypeReqDescription
log_spacingboolean–Logarithmic instead of linear spacing
pointsinteger–Number of frequencies
restore_frequencyboolean–Return to the starting frequency afterwards
save_path––Optional CSV file for the full sweep
settle_time_constants––Wait per point in time constants (default: 99 % settling for the slope)
start_hznumberyesFirst frequency
stop_hznumberyesLast frequency
NameTypeReqDescription
amplitude_vnumberyesSine amplitude used for the whole sweep
completedbooleanyesFalse if stopped early (by `set_amplitude_minimum` or the time budget)
countintegeryes–
duration_snumberyes–
peak_frequency_hz–yesFrequency of the largest R (null if no point was measured)
peak_r–yes–
pointsarrayyes–
saved_to–––
settle_time_per_point_snumberyes–
startedstringyes–
time_constant_snumberyes–
unitstringyes–
warningsarrayyes–

No examples provided.

get_command_log ~46

Return the most recent raw commands sent to / replies received from the instrument (newest last). Useful for debugging and for recording what was done.

NameTypeReqDescription
limitinteger––
NameTypeReqDescription
resultarrayyes–

No examples provided.

get_connection_info ~40

Report which instrument is connected (identity, address, simulated or real), whether the server is read-only, and the active safety limits. Call this first.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_settings ~42

Report the reference (source, frequency, harmonic, phase), sine output, sensitivity, time constant/slope (with the 99 % settling time), and input configuration.

Input schema present but exposes no named parameters.

NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

read_outputs ~87

Read X, Y, R and θ as one coherent snapshot (SNAP?), with the reference frequency, sensitivity, fraction of full scale and any overloads latched since the last reading. Values are only meaningful once the output filter has settled (~5-10 time constants after a change).

NameTypeReqDescription
include_aux_inputsboolean–Also read Aux In 1-4 (V)
NameTypeReqDescription
aux_inputs_v––Aux In 1-4 (V), if requested
fraction_of_full_scalenumberyesr / sensitivity; above 1 means overload
harmonicintegeryes–
overloadsarrayyesOverload/unlock conditions latched since the last reading
rnumberyesMagnitude R (same unit as x)
reference_frequency_hznumberyes–
sensitivitynumberyesFull-scale sensitivity, in `unit`
theta_degnumberyesPhase θ in degrees
timestampstringyes–
unitstringyesUnit of x, y and r
xnumberyesIn-phase output X (V rms, or A rms on a current input)
ynumberyesQuadrature output Y (same unit as x)

No examples provided.

reconnect ~35

Close and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

set_amplitude ~64

Set the SINE OUT amplitude (V rms), which drives the sample or excitation circuit. Refused above the `max_amplitude_v` safety limit. Tell the user the new drive level first.

NameTypeReqDescription
amplitude_vnumberyesSine output amplitude in V rms
NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

set_amplitude_minimum ~86

Turn the sine output down to the instrument minimum (the lock-in's closest thing to 'output off') and stop any running frequency sweep. SR810/SR830: 4 mV rms (it cannot go to zero - disconnect the cable if the sample must see no drive). SR86x: 1 nV rms and DC level 0 V.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

set_input ~114

Configure the signal input: A / A-B / current, AC or DC coupling, shield float/ground and (SR86x) the voltage input range. Use DC coupling below ~160 mHz. Omitted parameters are left unchanged.

NameTypeReqDescription
configuration––Single-ended A, differential A-B, or current input with 1 MΩ / 100 MΩ gain
coupling––Input coupling
input_range_v––SR86x voltage input range
shield––Input shield grounding
NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

set_reference ~103

Set the reference: source (internal/external), internal frequency, detection harmonic and phase shift. Omitted parameters are left unchanged. Changing the frequency also changes the frequency of the SINE OUT drive (at the current amplitude).

NameTypeReqDescription
frequency_hz––Internal reference frequency (internal mode only)
harmonic––Detection harmonic n
phase_deg––Reference phase shift
source––internal = sine output oscillator; external = lock to REF IN
NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

set_sensitivity ~117

Set the sensitivity (full-scale range). The smallest available range that is at least `full_scale` is chosen, so a signal of that size does not overload. On SR810/SR830 the dynamic reserve can be set at the same time.

NameTypeReqDescription
dynamic_reserve––SR810/SR830 only: dynamic reserve mode
full_scalenumberyesLargest signal to measure without overload
unitstring–V for voltage inputs; A for current inputs (1 V <-> 1 µA)
NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

set_time_constant ~103

Set the output filter time constant (nearest available value), and optionally the filter slope and synchronous filter. The SR830 may raise a too-short time constant to its minimum for the current slope/reserve; the returned settings show the value actually used.

NameTypeReqDescription
filter_slope_db_oct––Low-pass filter slope in dB/octave
sync_filter––Synchronous filter on/off
time_constant_snumberyesOutput filter time constant
NameTypeReqDescription
couplingstringyes–
dynamic_reserve––SR810/SR830 only
filter_slope_db_octintegeryes–
harmonicintegeryes–
input_configurationstringyesA, A-B, I_1MOhm or I_100MOhm
input_range_v––SR86x voltage input range
modelstringyes–
phase_degnumberyes–
reference_frequency_hznumberyes–
reference_sourcestringyes–
sensitivitynumberyesFull-scale sensitivity (V, or A on a current input)
sensitivity_unitstringyes–
settle_time_snumberyesTime to settle to 99 % after a change (manual table)
shieldstringyes–
sine_amplitude_vnumberyesSine output amplitude, V rms
sine_dc_level_v––Sine output DC level (SR86x only)
sync_filterbooleanyes–
time_constant_snumberyes–
timestampstringyes–

No examples provided.

Common questions

What is the SRS Lock-in Amplifier MCP server?

SRS Lock-in Amplifier is an MCP server listed in the public MCP registry as io.github.K-Dense-AI/labmcp-srs-lockin. MCP server for Stanford Research Systems lock-in amplifiers (SR810/SR830, SR860/SR865A). This page covers its PyPI package (labmcp-srs-lockin).

Is the SRS Lock-in Amplifier MCP server safe to use?

SRS Lock-in Amplifier scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 30 September 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the SRS Lock-in Amplifier MCP server expose?

SRS Lock-in Amplifier exposes 15 tools: get_connection_info, get_command_log, reconnect, read_outputs, get_settings, and 10 more. Their descriptions and schemas cost roughly 1,188 tokens of context every time the server is loaded.

Is the SRS Lock-in Amplifier MCP server still maintained?

SRS Lock-in Amplifier is still listed as active in the MCP registry. We last reached this channel on 30 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the SRS Lock-in Amplifier MCP server under?

SRS Lock-in Amplifier declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.