Skip to main content
Glama
daqmx-mcp

daqmx-mcp

daqmx-mcp

Independent community project. daqmx-mcp is not affiliated with, endorsed by, sponsored by, or supported by National Instruments. NI, NI-DAQmx, and related names are trademarks of National Instruments. This project includes no NI binaries, drivers, logos, or documentation. Users must obtain and license required NI software separately.

daqmx-mcp is a safety-bounded MCP server and Codex plugin for discovering data-acquisition devices and performing finite analog-voltage and digital-input reads through NI's supported nidaqmx Python package. Version 0.1.0 intentionally has no output, relay, reset, calibration, arbitrary property-write, continuous acquisition, shell, or Python-execution capability.

AI-generated hardware configurations require review by a qualified person. Tool results, including self-tests, are not proof that a connected system is electrically safe.

Quick start: mock mode

Requires Python 3.10 or newer.

python -m venv .venv
# Linux/macOS: source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
daqmx-mcp --check-config --config config.example.json
daqmx-mcp --config config.example.json

The final command is an STDIO MCP server and waits for an MCP client. To add the installed command to Codex:

codex mcp add daqmx-mcp --env DAQMX_MCP_CONFIG=/absolute/path/to/config.example.json -- daqmx-mcp

Do not copy the example absolute path literally. Codex desktop, CLI, and IDE extension share the same MCP configuration; the desktop and IDE settings also provide MCP servers → Add server → STDIO, followed by a restart.

Related MCP server: industrial-mcp

What works

  • get_server_status, discovery, details, channel listing, self-test

  • finite multi-channel analog-voltage acquisition with optional PFI digital start trigger

  • one-shot software-timed digital input

  • bounded statistics and sample previews

  • new-file-only TDMS (preferred) and CSV recording inside one approved directory

  • deterministic cross-platform mock backend

  • lazy local backend that reports missing Python package/driver rather than breaking mock mode

  • exact device/channel allowlists, structured errors, metadata-only audit events, and finally cleanup

No stop_acquisition tool is needed: every v0.1.0 acquisition is synchronous, finite, bounded, and owned by one tool transaction.

Documentation

Development

python -m pip install -e ".[dev]"
ruff format --check .
ruff check .
mypy src
pytest --cov=daqmx_mcp --cov-report=term-missing
python -m build
pip-audit

See CONTRIBUTING.md. Apache-2.0 is used for original project code; dependency and separately installed NI software licenses remain their own.

Available Tools

9 tools
acquire_analog_voltageA
Read-only

Perform one finite, bounded analog-voltage input transaction and return statistics plus a small preview.

Inputs: device (required), channels (required), sample_rate_hz (required), sample_count, +6 more. Returns: ok, error, units, device, +10 more

explain_daqmx_errorA
Read-only

Explain a DAQmx error while preserving the supplied numeric code and original message.

Inputs: message (required), code. Returns: ok, warning, category, explanation, +3 more

get_device_detailsB
Read-only

Get read-only capabilities for one explicit allowed device.

Inputs: device (required). Returns: ok, error, device

get_server_statusA
Read-only

Report backend readiness, enforced safety limits, allowlist state, and project warnings.

Inputs: no named parameters. Returns: ok, limits, backend, project, +4 more

list_devicesA
Read-only

List only devices visible through the configured device allowlist.

Inputs: no named parameters. Returns: ok, error, devices

list_physical_channelsA
Read-only

List allowed analog-input and/or digital-input physical channels for one device.

Inputs: device (required), channel_type. Returns: ok, error, channels

read_digital_inputsA
Read-only

Read one software-timed sample from explicit digital-input lines.

Inputs: lines (required), device (required). Returns: ok, error, device, values, +1 more

record_analog_voltageA

Perform one finite analog input and create a new TDMS or CSV file inside the approved directory.

Inputs: device (required), channels (required), filename (required), sample_rate_hz (required), +8 more. Returns: ok, path, error, format, +2 more

self_test_deviceA
Read-only

Run NI-DAQmx's brief device self-test; it does not establish electrical safety.

Inputs: device (required). Returns: ok, error, device, passed, +1 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 9 tools

    Disambiguation5/5

    Every tool targets a distinct resource or action: device discovery, server status, channel listing, self-test, analog input, digital input, recording, and error explanation. The two analog voltage tools are differentiated by output (in-memory statistics vs. file creation), so no agent confusion.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_devices, get_device_details, read_digital_inputs). Even compound verbs like self_test_device and record_analog_voltage adhere to the same pattern, making the API predictable.

    Tool Count5/5

    With 9 tools, the server is well-scoped for a DAQmx interface, covering device management, input operations, recording, and diagnostics. The count is neither sparse nor bloated, and each tool earns its place.

    Completeness4/5

    Core workflows are covered: device discovery, channel enumeration, analog/digital input, recording to file, self-test, and error handling. However, analog/digital output and continuous acquisition are absent, which may be intentional for safety but represents a notable gap for a DAQmx server.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server for seamless integration with peripheral devices connected to your computer. Control, monitor, and manage hardware devices through a unified API.
      5
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      An MCP server that gives Claude (or any MCP-compatible AI host) read access to industrial sensor data and safety-gated control over motors and actuators.
      4
      6
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      A local-first, read-only MCP server for vehicle diagnostics that exposes structured OBD-II tools for reading PIDs, DTCs, and ECU snapshots without raw protocol access.
      7
      1
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for reading and controlling an OWON SPE6103 programmable DC power supply over USB serial, with safety checks and verified SCPI commands.
      MIT