DAQiFi
NUGET · DAQIFI.MCP
Discover, configure and read DAQiFi Nyquist data-acquisition hardware from an AI agent
Available components
Last scanned (1 hour ago)
Scores higher than 88% of NuGet servers
Category IoT and Hardware
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
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
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 |
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to capture from. |
| durationMs | integer | – | How long to capture, in milliseconds (default 1000; clamped to 250..60000). |
| maxRows | integer | – | Most rows to return (default 500; clamped to 1..10000). A row is one sample tick across all enabled channels. |
| Name | Type | Req | Description |
|---|---|---|---|
| columns | array | yes | – |
| deviceClockRateHz | number | yes | – |
| deviceId | string | yes | – |
| droppedSampleCount | integer | yes | – |
| durationSeconds | number | yes | – |
| ignoredSampleCount | integer | yes | – |
| measuredRateHz | number | yes | – |
| rowCount | integer | yes | – |
| rowLimitReached | boolean | yes | – |
| rows | array | yes | – |
| sampleCount | integer | yes | – |
| sampleRateHz | integer | yes | – |
| startedStream | boolean | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to configure. |
| enabledChannels | array | yes | Analog channel numbers to enable, e.g. [0,1,2,3]. Channels not listed are disabled. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| enabledAnalogChannels | array | yes | – |
| sampleRateAdjustedFromHz | integer|null | yes | – |
| sampleRateHz | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to configure. |
| enabledChannels | array | yes | Digital channel numbers to enable, e.g. [0,1,2]. Channels not listed are disabled. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| enabledDigitalChannels | array | yes | – |
| sampleRateHz | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id from discover_devices. |
| Name | Type | Req | Description |
|---|---|---|---|
| analogChannelCount | integer | yes | – |
| analogOutputChannelCount | integer | yes | – |
| connected | boolean | yes | – |
| deviceId | string | yes | – |
| digitalChannelCount | integer | yes | – |
| name | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to delete from. |
| fileName | string | yes | The on-card file name, exactly as list_sd_files reports it. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| fileName | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The digital channel number to stop PWM on. |
| deviceId | string | yes | The device_id to control. |
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | – |
| deviceId | string | yes | – |
| dutyCyclePercent | integer|null | yes | – |
| enabled | boolean | yes | – |
| frequencyHz | integer|null | yes | – |
No examples provided.
disconnect_device ~30
Disconnect from a connected device and release it.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial | boolean | – | Include USB/serial discovery (default true). |
| timeoutMs | integer | – | Discovery timeout in milliseconds (default 2000; clamped to 1000..30000). Below the floor can return an empty list before a device could answer. |
| wifi | boolean | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to download from. |
| exportCsv | boolean | – | Also parse the download and write a CSV (default true). If the parse fails, the download still succeeds and csvError explains why. |
| fileName | string | yes | The on-card file name as list_sd_files reports it. A name that is not on the card is rejected. |
| Name | Type | Req | Description |
|---|---|---|---|
| csvError | string|null | yes | – |
| csvPath | string|null | yes | – |
| csvRowCount | integer|null | yes | – |
| deviceId | string | yes | – |
| durationSeconds | number | yes | – |
| fileName | string | yes | – |
| filePath | string | yes | – |
| sampleCount | integer|null | yes | – |
| sizeBytes | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to inspect. |
| Name | Type | Req | Description |
|---|---|---|---|
| connectionStatus | string | yes | – |
| deviceId | string | yes | – |
| enabledAnalogChannels | array | yes | – |
| enabledDigitalChannels | array | yes | – |
| loggingToSdCard | boolean | yes | – |
| name | string | yes | – |
| sampleRateHz | integer | yes | – |
| streaming | boolean | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to inspect. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| freeBytes | integer | yes | – |
| percentFree | number | yes | – |
| totalBytes | integer | yes | – |
| usedBytes | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| latestVersion | string|null | yes | – |
| message | string | yes | – |
| packageId | string | yes | – |
| updateAvailable | boolean | yes | – |
| version | string | yes | – |
| versionCheck | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to latch. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| outputs | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to list files on. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| fileCount | integer | yes | – |
| files | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The analog output channel number. |
| deviceId | string | yes | The device_id to query. |
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | – |
| deviceId | string | yes | – |
| volts | number | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to read. |
| timeoutMs | integer | – | How long to wait for every enabled channel, in milliseconds (default 2000; clamped to 500..30000). Reached only when a channel stays silent. |
| Name | Type | Req | Description |
|---|---|---|---|
| channels | array | yes | – |
| channelsReported | integer | yes | – |
| deviceId | string | yes | – |
| droppedSampleCount | integer | yes | – |
| durationSeconds | number | yes | – |
| ignoredSampleCount | integer | yes | – |
| sampleRateHz | integer | yes | – |
| startedStream | boolean | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The analog output channel number, as list_analog_outputs reports it. |
| deviceId | string | yes | The device_id to control. |
| latch | boolean | – | Apply the value now (default). Pass false to stage it without changing the pin; the next latch_analog_outputs applies it. |
| volts | number | yes | The output voltage in volts. Must lie inside the channel's range (commonly 0-10 V). |
| Name | Type | Req | Description |
|---|---|---|---|
| applied | boolean | yes | – |
| channel | integer | yes | – |
| deviceId | string | yes | – |
| rangeChecked | boolean | yes | – |
| requestedVolts | number | yes | – |
| state | object|null | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The digital channel number (e.g. 0-15 on Nyquist). |
| deviceId | string | yes | The device_id to configure. |
| direction | string | yes | 'input' or 'output'. |
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | – |
| deviceId | string | yes | – |
| direction | string | yes | – |
| outputValue | boolean | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The digital channel number (e.g. 0-15 on Nyquist). |
| deviceId | string | yes | The device_id to control. |
| high | boolean | yes | true to drive the pin high, false to drive it low. |
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | – |
| deviceId | string | yes | – |
| direction | string | yes | – |
| outputValue | boolean | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | The PWM-capable digital channel number. |
| deviceId | string | yes | The device_id to control. |
| dutyCyclePercent | integer | yes | Duty cycle in whole percent, 1-100. To stop the output use disable_pwm, not duty 0. |
| frequencyHz | integer | – | PWM frequency in Hz, 6-50000, applied device-wide. Pass 0 to keep the current session frequency (defaults to 1000 Hz until explicitly set). |
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | yes | – |
| deviceId | string | yes | – |
| dutyCyclePercent | integer|null | yes | – |
| enabled | boolean | yes | – |
| frequencyHz | integer|null | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to configure. |
| rateHz | integer | yes | Sample rate in Hz. The ceiling varies with the enabled analog channel count. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| requestedRateHz | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to log on. |
| fileName | string|null | – | Optional log file name. If omitted, the device auto-generates log_<timestamp>. |
| format | string | – | Log format: 'protobuf' (default), 'json', or 'csv'. |
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | – |
| enabledAnalogChannels | array | yes | – |
| fileName | string | yes | – |
| format | string | yes | – |
| sampleRateHz | integer | yes | – |
No examples provided.
stop_sd_logging ~34
Stop on-device SD-card logging on a device.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The device_id to stop logging on. |
Structured output declared, but exposes no named fields.
No examples provided.
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
claude mcp add daqifi-daqifi-mcp -- dnx Daqifi.Mcp@1.9.0 --yes
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.