daq-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DAQ_MCP_SIMULATE | No | Set to '1' to force the simulated backend; leave unset to try the real NI-DAQmx driver and fall back to simulation if unavailable. | 0 |
| DAQ_MCP_ALLOW_WRITE | No | Set to '1' to enable digital and analog output; leave unset to disable writes by default. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List NI DAQ devices visible to this machine. Returns the device name, product type, serial number, and which channel types it supports. Call this first — channel names are device-specific. |
| describe_deviceA | Describe one device's full channel inventory. Returns available analog input, analog output, digital input, and digital output channels, plus voltage ranges and max sample rates. Use this to pick valid channel names before reading or writing. |
| read_analogA | Read voltage samples from an analog input channel. channel: fully qualified, e.g. "Dev1/ai0" samples: how many samples to acquire (1 = single instantaneous reading) rate_hz: sample rate for multi-sample reads Returns the samples plus min/mean/max, so the model can reason about the signal without pulling thousands of raw floats into context. |
| read_digitalA | Read the current logic level of a digital input line. channel: e.g. "Dev1/port0/line0" Returns {"channel": ..., "value": true/false}. |
| write_digitalA | Set a digital output line high or low. Requires DAQ_MCP_ALLOW_WRITE=1. Returns the line's state after the write (read back from hardware, not echoed) so the model can confirm the effect. |
| write_analogA | Set an analog output channel to a DC voltage. Clamped to AO_VOLTAGE_LIMITS. Returns both the requested and the actual applied voltage, and flags whether clamping occurred — never silently changes the value the model asked for. |
| monitor_analogA | Acquire a finite analog waveform and return summary statistics. Built for the "is my sensor behaving?" question: returns mean, RMS, peak- to-peak, standard deviation, and a downsampled preview rather than the full sample array. Keeps large acquisitions out of the context window. |
| self_testB | Run the device's built-in self-test and report pass/fail. Useful as a first diagnostic when reads return unexpected values. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| current_config | The active safety configuration: allowlist, write status, voltage limits. |
TDQS
Scored across 8 tools
Most tools clearly target distinct resources/actions: device enumeration, channel description, analog read/write, digital read/write, waveform analysis, and self-test. The only potential overlap is between read_analog and monitor_analog—both acquire analog signals and return summary statistics—but their descriptions clarify different use cases (raw samples vs. battery of descriptive statistics).
All tool names follow a consistent snake_case verb_noun pattern (list_devices, describe_device, read_analog, write_analog, etc.). Even self_test fits the command-style, and there is no mixing of camelCase or inconsistent verb forms.
Eight tools cover the core tasks for a DAQ MCP server—device discovery, channel inventory, analog/digital I/O, waveform monitoring, and diagnostics. This is a well-scoped set that avoids bloat while providing all essential operations.
The surface provides a full CRUD-like lifecycle for basic DAQ interactions: enumerate, describe, read, write, and test. Minor gaps exist such as no arbitrary analog waveform generation (write_analog only outputs DC) and no continuous acquisition mode, but these are not critical for typical agent use.