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.

DAQiFi

NUGET · DAQIFI.MCP

Discover, configure and read DAQiFi Nyquist data-acquisition hardware from an AI agent

Available components

+1 this week 85 Trust /100

Last scanned (1 hour ago)

Scores higher than 88% of NuGet servers

Category IoT and Hardware

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 Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Build provenance not yet verified. View diagnostics → Unverified
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 2273 tokens (~87/item across 26 items; 26 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • 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
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 27 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
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.

  • 5 Nov 26 +14
    • Malware scan: unverified → pass ▲ security
    • Stability: pass → 0.90 functional
  • 4 Nov 26 −14
    • Malware scan: pass → unverified ▼ security
    • Schema quality: fail → pass ▲ functional
    • First check of Tool coverage: 100 functional
    • Destructive annotations: All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
    • Package version: 1.8.0 → 1.9.0 functional
  • 30 Oct 26 +1
    • Stability: 0.97 → pass security
  • 28 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 22 Oct 26 +1
    • Stability: 0.97 → pass security
  • 21 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +3
    • Stability: 0.80 → pass security
  • 16 Oct 26 −3
    • Stability: pass → 0.80 functional
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 5 Nov 2026 · Analysed nuget/Daqifi.Mcp@1.9.0

Provenance Inconclusive

We could not complete the check, so nothing is claimed either way. This is a gap on our side, not a finding about the package.

Result Inconclusive
Ecosystem nuget
Reason Signature present, unverified

Signer

Signed as Repository signature, names nuget.org
Subject CN=NuGet.org Repository by Microsoft,O=NuGet.org Repository by Microsoft,L=Redmond,ST=Washington,C=US
Issuer CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1,O=DigiCert\, Inc.,C=US
Valid from 23 Feb 2024
Valid until 18 May 2027
Service index https://api.nuget.org/v3/index.json
Owners DAQiFi

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

Registry declarations For information only

What the registry and the package's own manifest say about this version. The publisher or the registry writes these, nothing here is verified, and none of it affects the score.

Repository https://github.com/daqifi/daqifi-core
Repository type git
Commit 18a7a8b2994d55b98e242942733dd04969f80de0
Project URL https://github.com/daqifi/daqifi-core
MCP tools · 26 exposed · ~2,149 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
capture_samples ~173

Capture live data as rows (one per sample tick, columns named AI0/DIO0). Configure channels and the sample rate first. Ends at duration or maxRows, whichever first. Starts the stream if idle (refused in --read-only); holds the device exclusively. measuredRateHz is this machine's clock, deviceClockRateHz the device's own timestamps — compare both with sampleRateHz to see what actually arrived.

NameTypeReqDescription
deviceIdstringyesThe device_id to capture from.
durationMsinteger–How long to capture, in milliseconds (default 1000; clamped to 250..60000).
maxRowsinteger–Most rows to return (default 500; clamped to 1..10000). A row is one sample tick across all enabled channels.
NameTypeReqDescription
columnsarrayyes–
deviceClockRateHznumberyes–
deviceIdstringyes–
droppedSampleCountintegeryes–
durationSecondsnumberyes–
ignoredSampleCountintegeryes–
measuredRateHznumberyes–
rowCountintegeryes–
rowLimitReachedbooleanyes–
rowsarrayyes–
sampleCountintegeryes–
sampleRateHzintegeryes–
startedStreambooleanyes–

No examples provided.

configure_analog_channels ~107

Enable exactly the given analog input channels and disable the rest. Pass an empty list to disable all. Widening the set can lower the sample-rate ceiling; if the current rate no longer fits it is lowered and sampleRateAdjustedFromHz reports the old rate.

NameTypeReqDescription
deviceIdstringyesThe device_id to configure.
enabledChannelsarrayyesAnalog channel numbers to enable, e.g. [0,1,2,3]. Channels not listed are disabled.
NameTypeReqDescription
deviceIdstringyes–
enabledAnalogChannelsarrayyes–
sampleRateAdjustedFromHzinteger|nullyes–
sampleRateHzintegeryes–

No examples provided.

configure_digital_channels ~81

Enable exactly the given digital channels and disable the rest. Enabling any digital channel powers the whole port; pass an empty list to disable all.

NameTypeReqDescription
deviceIdstringyesThe device_id to configure.
enabledChannelsarrayyesDigital channel numbers to enable, e.g. [0,1,2]. Channels not listed are disabled.
NameTypeReqDescription
deviceIdstringyes–
enabledDigitalChannelsarrayyes–
sampleRateHzintegeryes–

No examples provided.

connect_device ~55

Connect to a previously-discovered device by device_id. If that physical device is already connected, the existing connection is returned — use the device_id from the result.

NameTypeReqDescription
deviceIdstringyesThe device_id from discover_devices.
NameTypeReqDescription
analogChannelCountintegeryes–
analogOutputChannelCountintegeryes–
connectedbooleanyes–
deviceIdstringyes–
digitalChannelCountintegeryes–
namestringyes–

No examples provided.

delete_sd_file ~77

Permanently delete a file from the device's SD card. No undo — download first if the data matters. Refused in --read-only mode and while logging.

NameTypeReqDescription
deviceIdstringyesThe device_id to delete from.
fileNamestringyesThe on-card file name, exactly as list_sd_files reports it.
NameTypeReqDescription
deviceIdstringyes–
fileNamestringyes–

No examples provided.

disable_pwm ~78

Stop PWM on a digital channel and leave the pin high-impedance. Allowed on any digital channel (recovery for a half-armed firmware state); firmware rejection of an unarmed channel is not surfaced.

NameTypeReqDescription
channelintegeryesThe digital channel number to stop PWM on.
deviceIdstringyesThe device_id to control.
NameTypeReqDescription
channelintegeryes–
deviceIdstringyes–
dutyCyclePercentinteger|nullyes–
enabledbooleanyes–
frequencyHzinteger|nullyes–

No examples provided.

disconnect_device ~30

Disconnect from a connected device and release it.

NameTypeReqDescription
deviceIdstringyesThe device_id to disconnect.

Structured output declared, but exposes no named fields.

No examples provided.

discover_devices ~106

Discover DAQiFi devices on USB/serial and WiFi. Returns device_id values used by the other tools; call this first.

NameTypeReqDescription
serialboolean–Include USB/serial discovery (default true).
timeoutMsinteger–Discovery timeout in milliseconds (default 2000; clamped to 1000..30000). Below the floor can return an empty list before a device could answer.
wifiboolean–Include WiFi/network discovery (default true).

Structured output declared, but exposes no named fields.

No examples provided.

download_sd_file ~147

Download an SD-card log file and by default parse it to CSV. Unless the device reports firmware 3.7.3 or later, retrieve before any live stream on the same connection — on older firmware streaming collapses the SD buffer (firmware #703) and later downloads come back empty.

NameTypeReqDescription
deviceIdstringyesThe device_id to download from.
exportCsvboolean–Also parse the download and write a CSV (default true). If the parse fails, the download still succeeds and csvError explains why.
fileNamestringyesThe on-card file name as list_sd_files reports it. A name that is not on the card is rejected.
NameTypeReqDescription
csvErrorstring|nullyes–
csvPathstring|nullyes–
csvRowCountinteger|nullyes–
deviceIdstringyes–
durationSecondsnumberyes–
fileNamestringyes–
filePathstringyes–
sampleCountinteger|nullyes–
sizeBytesintegeryes–

No examples provided.

get_device_status ~50

Get a live status snapshot for a connected device: connection state, streaming/logging flags, sample rate, and enabled analog and digital channels.

NameTypeReqDescription
deviceIdstringyesThe device_id to inspect.
NameTypeReqDescription
connectionStatusstringyes–
deviceIdstringyes–
enabledAnalogChannelsarrayyes–
enabledDigitalChannelsarrayyes–
loggingToSdCardbooleanyes–
namestringyes–
sampleRateHzintegeryes–
streamingbooleanyes–

No examples provided.

get_sd_storage ~48

Report free, used, and total space on the device's SD card. Refused while logging — call stop_sd_logging first.

NameTypeReqDescription
deviceIdstringyesThe device_id to inspect.
NameTypeReqDescription
deviceIdstringyes–
freeBytesintegeryes–
percentFreenumberyes–
totalBytesintegeryes–
usedBytesintegeryes–

No examples provided.

get_server_info ~50

Report this server's version and whether a newer Daqifi.Mcp is on NuGet. Call it when a tool you expected is missing — an out-of-date server lacks capabilities, not the hardware.

Input schema present but exposes no named parameters.

NameTypeReqDescription
latestVersionstring|nullyes–
messagestringyes–
packageIdstringyes–
updateAvailablebooleanyes–
versionstringyes–
versionCheckstringyes–

No examples provided.

latch_analog_outputs ~53

Apply every analog output voltage staged with set_analog_output latch=false. Harmless with nothing staged — the device re-applies what it already holds.

NameTypeReqDescription
deviceIdstringyesThe device_id to latch.
NameTypeReqDescription
deviceIdstringyes–
outputsarrayyes–

No examples provided.

list_analog_outputs ~74

List analog output (DAC) channels with range, resolution, and the volts this server last wrote or read. An empty list means none are modelled — not necessarily that writes are impossible; a null volts is untouched this session, not 0 V.

NameTypeReqDescription
deviceIdstringyesThe device_id to inspect.

Structured output declared, but exposes no named fields.

No examples provided.

list_channels ~38

List all channels on a connected device with their type, enabled state, and direction.

NameTypeReqDescription
deviceIdstringyesThe device_id to inspect.

Structured output declared, but exposes no named fields.

No examples provided.

list_connected_devices ~25

List the devices currently connected to this server. Cheap; safe to call often.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_sd_files ~52

List the log files on the device's SD card. An empty list means an empty card; a device that fails to answer raises instead.

NameTypeReqDescription
deviceIdstringyesThe device_id to list files on.
NameTypeReqDescription
deviceIdstringyes–
fileCountintegeryes–
filesarrayyes–

No examples provided.

read_analog_output ~59

Ask the device what voltage a DAC channel was last told to drive — not a pin measurement. Refused while streaming.

NameTypeReqDescription
channelintegeryesThe analog output channel number.
deviceIdstringyesThe device_id to query.
NameTypeReqDescription
channelintegeryes–
deviceIdstringyes–
voltsnumberyes–

No examples provided.

read_channel_values ~124

Read the latest value on every enabled channel (volts or 0/1) with its sample timestamp. Enable channels first — none enabled is refused. Starts the stream if idle (refused in --read-only); a running stream is left running. Silent channels come back null, not zero.

NameTypeReqDescription
deviceIdstringyesThe device_id to read.
timeoutMsinteger–How long to wait for every enabled channel, in milliseconds (default 2000; clamped to 500..30000). Reached only when a channel stays silent.
NameTypeReqDescription
channelsarrayyes–
channelsReportedintegeryes–
deviceIdstringyes–
droppedSampleCountintegeryes–
durationSecondsnumberyes–
ignoredSampleCountintegeryes–
sampleRateHzintegeryes–
startedStreambooleanyes–

No examples provided.

set_analog_output ~158

Drive an analog output (DAC) channel to a voltage. Nyquist 3 only — other boards are refused. Out-of-range voltages are rejected before send; latch=false stages instead. The latch is device-wide: latch=true also applies anything staged earlier on other channels.

NameTypeReqDescription
channelintegeryesThe analog output channel number, as list_analog_outputs reports it.
deviceIdstringyesThe device_id to control.
latchboolean–Apply the value now (default). Pass false to stage it without changing the pin; the next latch_analog_outputs applies it.
voltsnumberyesThe output voltage in volts. Must lie inside the channel's range (commonly 0-10 V).
NameTypeReqDescription
appliedbooleanyes–
channelintegeryes–
deviceIdstringyes–
rangeCheckedbooleanyes–
requestedVoltsnumberyes–
stateobject|nullyes–

No examples provided.

set_digital_direction ~87

Set a digital channel's direction: 'input' or 'output'. Rejected while PWM is enabled on the channel — call disable_pwm first.

NameTypeReqDescription
channelintegeryesThe digital channel number (e.g. 0-15 on Nyquist).
deviceIdstringyesThe device_id to configure.
directionstringyes'input' or 'output'.
NameTypeReqDescription
channelintegeryes–
deviceIdstringyes–
directionstringyes–
outputValuebooleanyes–

No examples provided.

set_digital_output ~94

Drive a digital channel high or low, switching it to output if needed. Rejected while PWM is enabled on the channel — call disable_pwm first.

NameTypeReqDescription
channelintegeryesThe digital channel number (e.g. 0-15 on Nyquist).
deviceIdstringyesThe device_id to control.
highbooleanyestrue to drive the pin high, false to drive it low.
NameTypeReqDescription
channelintegeryes–
deviceIdstringyes–
directionstringyes–
outputValuebooleanyes–

No examples provided.

set_pwm_output ~160

Start PWM on a PWM-capable digital channel (Nyquist: 0, 3, 4, 5, 6, 7). Frequency is shared by all PWM channels; digital writes on the channel are rejected until disable_pwm.

NameTypeReqDescription
channelintegeryesThe PWM-capable digital channel number.
deviceIdstringyesThe device_id to control.
dutyCyclePercentintegeryesDuty cycle in whole percent, 1-100. To stop the output use disable_pwm, not duty 0.
frequencyHzinteger–PWM frequency in Hz, 6-50000, applied device-wide. Pass 0 to keep the current session frequency (defaults to 1000 Hz until explicitly set).
NameTypeReqDescription
channelintegeryes–
deviceIdstringyes–
dutyCyclePercentinteger|nullyes–
enabledbooleanyes–
frequencyHzinteger|nullyes–

No examples provided.

set_sample_rate ~80

Set the device sample rate in Hz for streaming and SD logging. Requests above the enabled-channel ceiling (or --max-sample-rate-hz) are rejected, not silently lowered.

NameTypeReqDescription
deviceIdstringyesThe device_id to configure.
rateHzintegeryesSample rate in Hz. The ceiling varies with the enabled analog channel count.
NameTypeReqDescription
deviceIdstringyes–
requestedRateHzintegeryes–

No examples provided.

start_sd_logging ~109

Start on-device SD-card logging using the currently enabled channels and sample rate. Requires a USB/serial connection (the SD card and WiFi share a bus). Configure channels and sample rate first.

NameTypeReqDescription
deviceIdstringyesThe device_id to log on.
fileNamestring|null–Optional log file name. If omitted, the device auto-generates log_<timestamp>.
formatstring–Log format: 'protobuf' (default), 'json', or 'csv'.
NameTypeReqDescription
deviceIdstringyes–
enabledAnalogChannelsarrayyes–
fileNamestringyes–
formatstringyes–
sampleRateHzintegeryes–

No examples provided.

stop_sd_logging ~34

Stop on-device SD-card logging on a device.

NameTypeReqDescription
deviceIdstringyesThe device_id to stop logging on.

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the DAQiFi MCP server?

DAQiFi runs locally as a NuGet package, launched with dnx Daqifi.Mcp@1.9.0 --yes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

nuget · Daqifi.Mcp

# add to Claude Code
claude mcp add daqifi-daqifi-mcp -- dnx Daqifi.Mcp@1.9.0 --yes
Common questions

What is the DAQiFi MCP server?

DAQiFi is an MCP server listed in the public MCP registry as io.github.daqifi/daqifi-mcp. Discover, configure and read DAQiFi Nyquist data-acquisition hardware from an AI agent. This page covers its NuGet package (Daqifi.Mcp).

Is the DAQiFi MCP server safe to use?

DAQiFi scores 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. 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 DAQiFi MCP server expose?

DAQiFi exposes 26 tools: get_server_info, discover_devices, connect_device, disconnect_device, list_connected_devices, and 21 more. Their descriptions and schemas cost roughly 2,149 tokens of context every time the server is loaded.

Is the DAQiFi MCP server still maintained?

DAQiFi is still listed as active in the MCP registry. We last reached this channel on 5 November 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 DAQiFi MCP server under?

DAQiFi declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.