Skip to main content
Glama

daq-mcp

An MCP server that lets an AI coding client talk to National Instruments DAQ hardware — with a safety model aimed at physical I/O, not just HTTP errors.

Not affiliated with, endorsed by, or supported by NI / Emerson. Licensed under the Apache License 2.0. See NOTICE for attribution.

Documentation: docs/ — architecture, safety, configuration, tool reference, devices, examples, limitations, troubleshooting, development history.

Portfolio-oriented stack notes: TECH_STACK.md.

Why this exists

Most MCP servers wrap APIs or filesystems. This one wraps data acquisition: list devices, read sensors, write digital/analog lines, stream a live signal. The protocol plumbing is straightforward; the interesting part is refusing unsafe writes, clamping analog output, and keeping agent and browser on the same allowlist.

Related MCP server: rigol-dho-mcp

Quick start (no hardware)

Requires Python 3.11+ and uv.

git clone https://github.com/rhit-folayaod/daq-mcp.git
cd daq-mcp
uv sync
DAQ_MCP_SIMULATE=1 uv run server.py
$env:DAQ_MCP_SIMULATE="1"; uv run server.py

Optional NI binding: uv sync --extra hardware (needs NI-DAQmx on the machine). If the driver is missing, the server falls back to simulation automatically.

Safety in one paragraph

Writes are off unless DAQ_MCP_ALLOW_WRITE=1. Only allowlisted channels are reachable; only channels marked as outputs are writable; analog output is clamped (±5 V by default). Configure channel roles with the dashboard picker or wiring tools — profiles stay local (gitignored). Details: docs/safety.md.

Tools (summary)

Area

Tools

Discovery

list_devices, describe_device, self_test

Analog in

read_analog, monitor_analog (measurement: voltage / strain / thermocouple / accelerometer)

Digital / AO

read_digital, write_digital, write_analog, animate_digital

Live

start_live, live_status, stop_live, save_capture, list_captures

Wiring

get_wiring, set_wiring, profile list / load / delete

Full parameter notes: docs/tools.md.

Live dashboard

DAQ_MCP_ALLOW_WRITE=1 uv run server.py --dashboard-only

Open http://127.0.0.1:8765/. For dashboard + MCP on one port (avoids two processes fighting over the device): uv run server.py --http → MCP at /mcp/. Remote access needs a token and/or a tunnel — docs/configuration.md.

Cursor

See .cursor/mcp.json.example and docs/configuration.md. Do not commit machine-local .cursor/mcp.json, tokens, or wiring profiles.

Tests

uv run pytest

Simulator-only; CI runs the same on main.

Layout

server.py              MCP tools + safety + entrypoint
src/daq_mcp/           backends, live, dashboard, wiring, captures, auth
docs/                  architecture, safety, config, tools, …
tests/                 pytest against the simulator

Contributing

See CONTRIBUTING.md.

Available Tools

8 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses return behavior: 'Returns available analog input, analog output, digital input, and digital output channels, plus voltage ranges and max sample rates.' This explains what the tool produces. It also implies a non-mutating, read-only nature through the verb 'describe,' though it does not explicitly address error cases or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The first sentence states the core purpose; the second adds return details and a practical usage tip. It is front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no annotations) and has an output schema, so the description need not restate output structure. It provides the essential context for selecting and invoking the tool—what it does and when to use it. The main gap is the under-specified 'device' parameter, but given the minimal complexity, the overall context is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%—the schema only lists 'device' as a required string with no description. The tool description does not compensate. It only mentions 'one device' in passing, which hints that the parameter identifies the device but offers no format guidance, source of valid values, or relationship to list_devices. The agent is left guessing how to populate the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Describe one device's full channel inventory.' This is a specific verb (describe) with a well-defined resource (device channel inventory). It distinguishes itself from sibling tools (read, write, monitor) by focusing on inventory discovery rather than data transfer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: 'Use this to pick valid channel names before reading or writing.' This tells the agent when to invoke it relative to other operations. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the disclosure burden. It clearly states that it lists visible devices and enumerates the fields returned, which is useful behavioral context. It does not explicitly state 'read-only' or mention error conditions, but the 'List' verb and focus on discovery make side effects unlikely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core purpose, the second adds return information and a usage hint. Every word is necessary, and it is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter discovery tool with an output schema, this description is complete. It states what devices are listed, what fields are returned, and the recommended invocation order. The 'call this first' guidance integrates it well with the tool family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description correctly focuses on output and usage, adding no unnecessary parameter details. It fully aligns with the schema's simplicity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List NI DAQ devices visible to this machine,' a specific verb and resource that clearly distinguishes it from siblings like describe_device. It also lists the returned fields (device name, product type, serial number, supported channel types), further clarifying scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context with 'Call this first — channel names are device-specific,' establishing it as the entry point for device discovery. However, it does not explicitly name alternatives or state when not to use it, so it stops short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
rate_hzNo
duration_sYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It reveals that the tool returns mean, RMS, peak-to-peak, standard deviation, and a downsampled preview rather than full data, and explains the rationale (keeping large acquisitions out of the context window). It does not mention auth, side effects, or error behavior, but for a monitoring read tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the first sentence states the core action, the second adds concrete return details and use case, and the third reinforces a key behavioral benefit. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has moderate complexity (3 params, output schema present). The description covers the main purpose, return contract, and design rationale. The main gap is parameter semantics, but the output schema likely covers return details. Overall it is a solid standalone description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives no specific explanation of channel, rate_hz, or duration_s beyond the overall waveform context. The parameter names are self-descriptive, but the description adds no meaningful semantics about units, bounds, or relationships, leaving the agent to infer too much.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Acquire'), the resource ('finite analog waveform'), and the result ('return summary statistics'). It explicitly differentiates from sibling tools by saying it returns summary statistics and a downsampled preview instead of the full sample array, which distinguishes it from read_analog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use the tool: 'Built for the "is my sensor behaving?" question' and emphasizes avoiding large context-window usage. However, it does not explicitly mention when not to use it or name alternatives like read_analog for raw samples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
rate_hzNo
samplesNo
terminal_configNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return aggregation (min/mean/max) and the single vs. multi-sample behavior, but does not explicitly mention non-destructive read-only nature, error conditions, or permissions. The word 'Read' implies safety, but no explicit statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core purpose, followed by parameter guidance and return-value rationale. No wasted words; each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description needn't detail return structures, but it does summarize the aggregation. It covers purpose, key parameters, and return value. Missing an explicit comparison to monitor_analog, but otherwise complete for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does for three of four parameters, giving concrete examples ('Dev1/ai0') and clarifying semantics ('1 = single instantaneous reading'). However, terminal_config is not explained, leaving a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read voltage samples from an analog input channel.' This clearly distinguishes it from sibling tools like read_digital and write_analog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does and parameter semantics, but does not explicitly state when to use it over alternatives like monitor_analog. It implies usage context via 'samples' and 'rate_hz', but no direct comparisons or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_digitalA

Read the current logic level of a digital input line.

channel: e.g. "Dev1/port0/line0" Returns {"channel": ..., "value": true/false}.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return format ({channel, value}), which is useful. However, with no annotations provided, it does not cover error behavior, whether the line must be configured as input, or any side effects. The description carries the full burden and offers only basic information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences: the first states the purpose clearly, the second provides parameter format and return value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (single parameter, output schema existing), the description covers the channel format and return value well. It lacks details on invalid channels or configuration requirements, but these are not critical for a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only says 'channel' is a required string (0% coverage), but the description adds an example format ('Dev1/port0/line0'), providing meaning beyond the bare schema. This compensates for missing schema descriptions, though it could be more exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read the current logic level of a digital input line,' which is a specific verb+resource construction that distinguishes it from siblings like read_analog and write_digital.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example channel format ('Dev1/port0/line0') provides clear context for when to use the tool, but it does not explicitly mention alternatives or exclusions, such as using read_analog for analog signals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

self_testB

Run the device's built-in self-test and report pass/fail.

Useful as a first diagnostic when reads return unexpected values.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It states the tool 'runs' the self-test and 'reports' pass/fail, but does not disclose whether the operation is read-only, has side effects, or requires device state conditions. This is insufficient for a tool that likely interacts with hardware.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, focused sentences. The first sentence states the action and outcome, and the second provides usage context. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and an output schema exists, so return values are covered. However, the description omits parameter semantics and behavioral details (e.g., is the self-test non-invasive?), which are important for an agent deciding to invoke it. The usage tip adds some context, but the overall completeness is only adequate given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'device' with no description, and schema description coverage is 0%. The tool description does not explain what 'device' means or how it should be formatted, leaving the agent to infer from sibling tools like list_devices. With no parameter guidance, the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs the device's built-in self-test and reports pass/fail, which is a specific verb and resource. However, it does not explicitly differentiate from sibling tools like read_analog or read_digital, though the action is distinct in context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance: 'Useful as a first diagnostic when reads return unexpected values.' This gives a concrete scenario but does not mention alternatives or exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
voltageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explicitly discloses clamping behavior, the fact that both requested and actual voltages are returned, that clamping is flagged, and that the tool 'never silently changes the value the model asked for' — excellent transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every sentence adds meaningful behavioral detail. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 parameters) and has an output schema, so the description covers the main behavioral aspects well. The lack of parameter-specific details (units, channel format) is a minor gap, but overall the description is complete for a model to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds 'DC voltage' semantics to the voltage parameter but does not explain units, channel format, or the actual AO_VOLTAGE_LIMITS values. The channel parameter receives no additional meaning beyond its name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('set') and resource ('analog output channel') plus the action ('to a DC voltage'). It distinguishes itself from sibling tools like read_analog and write_digital.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context is provided: this tool is for setting analog output channels. However, there are no explicit exclusions or alternative tool references, though the action is unambiguous enough that an agent can infer when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and does well: it discloses the non-obvious read-back behavior ('read back from hardware, not echoed') and explains why it returns the state. The environment-variable requirement is another important behavioral context. This goes beyond the schema and gives the agent confidence about side effects and verification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences. The first is the core action; the second adds a crucial behavioral note. No wasted words, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only two parameters and an output schema. The description explains the action, the prerequisite, and the return value semantics. It doesn't detail channel syntax, but given the simplicity and the presence of an output schema, the description is sufficiently complete for most agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and no parameter descriptions exist. The description implicitly maps value to 'high or low' (true/false) but does not explain the channel parameter format or possible values. This is partial compensation; the value semantics are clear, but channel remains ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Set a digital output line high or low.' This clearly distinguishes the tool from siblings like read_digital (read vs. write) and write_analog (digital vs. analog). The purpose is unequivocal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a key usage condition: 'Requires DAQ_MCP_ALLOW_WRITE=1.' This tells the agent when the tool can be used (when write access is enabled). It doesn't explicitly list alternatives, but the context of setting a digital output is clear enough for a simple write operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

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).

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server for controlling and reading Rigol DHO800/DHO900 oscilloscopes over LAN via SCPI commands.
    11
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A safety-bounded MCP server for discovering data-acquisition devices and performing finite analog-voltage and digital-input reads through NI's nidaqmx Python package.
    9
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rhit-folayaod/daq-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server