Skip to content

docs: AI-native MCP planning (RFC + v0.1 issue drafts)#231

Open
tylerkron wants to merge 1 commit into
mainfrom
claude/youthful-mclaren-c56954
Open

docs: AI-native MCP planning (RFC + v0.1 issue drafts)#231
tylerkron wants to merge 1 commit into
mainfrom
claude/youthful-mclaren-c56954

Conversation

@tylerkron
Copy link
Copy Markdown
Contributor

Summary

Proposes positioning DAQiFi as the AI-native DAQ by shipping a first-class MCP (Model Context Protocol) server for Nyquist devices. Lab researchers, test engineers, and educators would drive a device end-to-end through Claude, Cursor, Cline, or any MCP-aware agent — discovery, channel configuration, streaming, SD logging, alerts — without writing application code.

The strategic bet: every T&M competitor (NI, MCC, Dataq) will bolt LLM chat onto an aging GUI within 12 months. None can rewrite their core control surface to be agent-first without years of internal lift. DAQiFi has two SKUs, a clean cross-platform .NET SDK, and no installed-base baggage — we can ship in weeks and plant a flag in this position before it's contested.

What's in this PR

Three documents under docs/planning/mcp/, mirroring the docs/archive/simulator/ planning convention:

  • RFC.md — full proposal: motivation, stack decision rationale, architecture, MCP tool spec, safety model, distribution plan, phasing, launch plan, 8 open questions
  • GITHUB_ISSUES.md — ready-to-paste issue drafts: 1 epic + 12 implementation issues for v0.1, each with task list, acceptance criteria, effort estimate, file paths, and dependencies. Total: ~66h / 4-6 weeks part-time. Includes a dependency graph.
  • README.md — folder index with quick links into both docs

Key decisions captured in the RFC

  • Stack: stay in .NET, using the official ModelContextProtocol NuGet (co-maintained by Microsoft + Anthropic). Daqifi.Core is the asset — rewriting the wire protocol in Node or Python doubles maintenance forever. Distribution via AOT binary + dotnet tool + npx shim covers every audience without forking the protocol logic.
  • Differentiator: LLM-safe streaming. Agents reason on per-channel summaries (min/max/RMS/dominant frequency + ASCII sparkline) instead of raw sample dumps. This is the part most product MCPs shipping today miss — and the part competitors will be slowest to copy.
  • Safety model: three server modes (read-only / control / admin), parameter clamps for sample rate and voltage range, confirmation flags for destructive ops. ""Agent-safe by design"" doubles as marketing.
  • What ships in v0.1: discovery + connection + channel config + LLM-safe streaming + non-destructive SD ops + 5 recipe prompts + safety model + distribution + README rewrite. Firmware updates, WiFi reconfig, raw SCPI, destructive SD ops all deferred to v0.2.

Decisions that need an answer

Two of the open questions in the RFC are blocking or near-blocking:

  1. Default safety mode for the npx @daqifi/mcp distribution: read-only (safer; the launch demo doesn't work until users pass a flag) or control (works on first try; an agent could mis-configure on first contact). Blocks #mcp-9.
  2. Pricing strategy. Does the AI story support a higher ASP or a SaaS tier (managed recipes, hosted dashboard)? Doesn't block code, but needs an answer before launch copy is written.

The other six open questions (buyer segmentation, telemetry, MCP stability contract, LabVIEW interop, hosted recipe library, Desktop alignment) are flagged for discussion but don't block v0.1.

Test plan

This PR is documentation-only; nothing to run.

  • Read RFC.md top-to-bottom
  • Skim the 12 issue drafts; sanity-check they map to coherent units of work
  • Answer the two blocking decisions above (inline comments work)
  • Approve to create issues, or request changes

🤖 Generated with Claude Code

Adds docs/planning/mcp/ with three documents proposing a first-class
Model Context Protocol server for Nyquist devices, positioning DAQiFi
as the "AI-native DAQ" before T&M competitors bolt LLM chat onto
existing GUIs. Mirrors the docs/archive/simulator/ planning convention:
RFC.md for review, GITHUB_ISSUES.md for ready-to-paste issue drafts,
README.md as folder index. Open for feedback before issues are created.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tylerkron tylerkron requested a review from a team as a code owner May 27, 2026 04:09
@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

RFC and v0.1 issue drafts for AI-native DAQiFi MCP server

📝 Documentation

Grey Divider

Walkthroughs

Description
• Proposes AI-native MCP server for DAQiFi Nyquist devices
• Positions product as agent-first control surface vs. legacy T&M competitors
• Includes RFC with stack rationale, architecture, safety model, and launch plan
• Provides 12 ready-to-paste GitHub issues with effort estimates and dependencies
• Establishes LLM-safe streaming as key differentiator (summaries vs. raw samples)
Diagram
flowchart LR
  A["Strategic Position<br/>AI-native DAQ"] --> B["MCP Server<br/>Daqifi.Mcp"]
  B --> C["LLM-Safe Streaming<br/>Summaries + Sparklines"]
  B --> D["Safety Model<br/>read-only/control/admin"]
  B --> E["Distribution<br/>AOT + dotnet tool + npx"]
  C --> F["5 Recipe Prompts<br/>Demo + Marketing"]
  D --> F
  E --> F
  F --> G["v0.1 Launch<br/>~66h effort"]

Loading

Grey Divider

File Changes

1. docs/planning/mcp/RFC.md 📝 Documentation +348/-0

Strategic RFC for AI-native MCP positioning

• Comprehensive proposal for AI-native positioning via MCP server
• Justifies .NET stack choice and in-process architecture over Node/Python rewrites
• Specifies complete tool surface (discovery, streaming, SD card, network, firmware)
• Defines three safety modes (read-only/control/admin) with parameter clamps
• Outlines phased delivery (v0.1 core, v0.2 power features, v0.3+ ecosystem)
• Includes marketing strategy and eight open questions requiring decisions

docs/planning/mcp/RFC.md


2. docs/planning/mcp/GITHUB_ISSUES.md 📝 Documentation +752/-0

v0.1 implementation roadmap with 12 detailed issues

• Ready-to-paste issue drafts for v0.1 epic and 12 implementation issues
• Each issue includes objective, tasks, acceptance criteria, effort estimate, and dependencies
• Dependency graph shows parallelization opportunities (scaffold/streaming/safety can start in
 parallel)
• Total estimated effort ~66 hours across 4–6 calendar weeks part-time
• Issues span project scaffold, discovery/connection, channel config, streaming infrastructure, SD
 card ops, safety model, recipes, distribution, and documentation
• Includes milestone and label suggestions for GitHub organization

docs/planning/mcp/GITHUB_ISSUES.md


3. docs/planning/mcp/README.md 📝 Documentation +28/-0

Planning folder index and navigation guide

• Folder index and quick-start guide for the MCP planning effort
• Directs readers to RFC for strategic review and GITHUB_ISSUES for implementation roadmap
• Provides quick links to key sections (stack decision, tool spec, safety model, launch plan, open
 questions)
• Establishes archival convention (move to docs/archive/mcp-v0.1/ after v0.1 ships)
• Mirrors existing docs/archive/simulator/ planning pattern

docs/planning/mcp/README.md


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented May 27, 2026

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0)

Grey Divider


Action required

1. WiFi recipe scope mismatch 🐞 Bug ⚙ Maintainability
Description
Issue #mcp-10 requires each prompt to be runnable end-to-end but includes
wifi_provision_new_device, while the RFC scopes all network provisioning tools (configure_wifi,
configure_static_ip) to v0.2, creating an inconsistency that will block implementing that prompt
as written in v0.1.
Code

docs/planning/mcp/GITHUB_ISSUES.md[R559-569]

Evidence
The #mcp-10 issue draft explicitly sets an end-to-end runnable requirement while listing a WiFi
provisioning recipe; the RFC’s tool table explicitly marks network configuration tooling as v0.2,
leaving no v0.1 tool surface to execute that recipe end-to-end.

docs/planning/mcp/GITHUB_ISSUES.md[559-570]
docs/planning/mcp/RFC.md[130-141]
docs/planning/mcp/RFC.md[160-169]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The v0.1 recipe prompt list includes `wifi_provision_new_device(ssid, password)` and states prompts are runnable end-to-end, but the RFC explicitly defers network tools (`configure_wifi`, `configure_static_ip`) to v0.2. As written, v0.1 cannot satisfy the “runnable end-to-end” requirement for this recipe without expanding v0.1 scope.

### Issue Context
This doc is “ready-to-paste issue drafts”; any scope mismatch here is likely to become real scheduling/implementation churn.

### Fix Focus Areas
- docs/planning/mcp/GITHUB_ISSUES.md[559-570]
- docs/planning/mcp/RFC.md[130-141]
- docs/planning/mcp/RFC.md[160-169]

### Suggested fix options (pick one)
1. **Move the WiFi provisioning recipe to v0.2**, and replace it in v0.1 with a recipe that is supported by v0.1 tools (e.g., an SD-download-and-summary flow).
2. **Promote minimal WiFi provisioning support into v0.1** (add a v0.1 network tool and update the v0.1 tool table accordingly).
3. If you want to keep it as a “marketing preview,” **remove the “runnable end-to-end” guarantee** for that specific prompt and label it explicitly as “v0.2 placeholder / requires manual step.”

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Broken issue section links 🐞 Bug ≡ Correctness
Description
RFC.md links to sections in GITHUB_ISSUES.md using anchors like GITHUB_ISSUES.md#mcp-1, but the
actual headings include additional text (e.g., ## #mcp-1: Project scaffold and CI) so those
anchors will not exist and the links won’t navigate.
Code

docs/planning/mcp/RFC.md[R209-222]

Evidence
RFC.md references #mcp-* anchors, but the referenced headings in GITHUB_ISSUES.md contain
additional words; GitHub-style anchors include the full heading text, so #mcp-1 won’t match the
generated anchor for that heading.

docs/planning/mcp/RFC.md[209-222]
docs/planning/mcp/GITHUB_ISSUES.md[102-106]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`docs/planning/mcp/RFC.md` links to issue draft sections using short anchors (e.g., `GITHUB_ISSUES.md#mcp-1`) that won’t match GitHub’s generated heading anchors for headings like `## #mcp-1: Project scaffold and CI`, breaking intra-doc navigation.

### Issue Context
The issue drafts are meant to be navigated quickly from the RFC; broken links will frustrate reviewers and anyone using the plan.

### Fix Focus Areas
- docs/planning/mcp/RFC.md[209-222]
- docs/planning/mcp/GITHUB_ISSUES.md[102-106]

### Suggested fix
Update the RFC links to the full, generated anchors (e.g., `GITHUB_ISSUES.md#mcp-1-project-scaffold-and-ci`, etc.), or change the issue headings to simplified forms whose anchors match (e.g., add explicit HTML anchors like `<a id="mcp-1"></a>` above each issue header).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

3. Sparkline description ambiguous 🐞 Bug ⚙ Maintainability
Description
RFC.md calls the sparkline a “40-character ASCII sparkline,” but the implementation issue draft
specifies Unicode block characters (▁▂▃▄▅▆▇█), which could lead to inconsistent
implementation/client expectations.
Code

docs/planning/mcp/RFC.md[R147-148]

Evidence
RFC describes the sparkline as ASCII, while the issue draft explicitly calls for Unicode block
characters; aligning wording prevents confusion about the expected output format.

docs/planning/mcp/RFC.md[145-149]
docs/planning/mcp/GITHUB_ISSUES.md[310-322]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The RFC uses the term “ASCII sparkline,” while the issue draft for the summarizer specifies Unicode block characters. This is likely just terminology drift, but it’s worth making explicit so implementers and client consumers know exactly what to expect.

### Issue Context
The sparkline is called out as a key differentiator; clarity here reduces back-and-forth during implementation and testing.

### Fix Focus Areas
- docs/planning/mcp/RFC.md[145-148]
- docs/planning/mcp/GITHUB_ISSUES.md[310-322]

### Suggested fix
Update RFC wording to match the intended output, e.g., “40-character Unicode block-character sparkline (▁▂▃▄▅▆▇█)”, and optionally note a fallback policy for ASCII-only environments if that matters (e.g., `.-:=+*#%@`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment on lines +559 to +569
### Objective

Ship 5 MCP prompts that double as in-product onboarding and marketing artifacts. Each prompt is parameterized and runnable end-to-end against a real Nyquist device.

### Prompts

- `setup_thermocouple_sweep(channels, sample_rate_hz, threshold_c, log_to_sd?)`
- `battery_soak_test(channels, duration_h, summary_interval_min, log_to_sd?)`
- `vibration_capture_fft(channel, duration_s, sample_rate_hz)`
- `multi_channel_pressure_test(channels, sample_rate_hz, threshold_v, log_to_sd?)`
- `wifi_provision_new_device(ssid, password)`
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Wifi recipe scope mismatch 🐞 Bug ⚙ Maintainability

Issue #mcp-10 requires each prompt to be runnable end-to-end but includes
wifi_provision_new_device, while the RFC scopes all network provisioning tools (configure_wifi,
configure_static_ip) to v0.2, creating an inconsistency that will block implementing that prompt
as written in v0.1.
Agent Prompt
### Issue description
The v0.1 recipe prompt list includes `wifi_provision_new_device(ssid, password)` and states prompts are runnable end-to-end, but the RFC explicitly defers network tools (`configure_wifi`, `configure_static_ip`) to v0.2. As written, v0.1 cannot satisfy the “runnable end-to-end” requirement for this recipe without expanding v0.1 scope.

### Issue Context
This doc is “ready-to-paste issue drafts”; any scope mismatch here is likely to become real scheduling/implementation churn.

### Fix Focus Areas
- docs/planning/mcp/GITHUB_ISSUES.md[559-570]
- docs/planning/mcp/RFC.md[130-141]
- docs/planning/mcp/RFC.md[160-169]

### Suggested fix options (pick one)
1. **Move the WiFi provisioning recipe to v0.2**, and replace it in v0.1 with a recipe that is supported by v0.1 tools (e.g., an SD-download-and-summary flow).
2. **Promote minimal WiFi provisioning support into v0.1** (add a v0.1 network tool and update the v0.1 tool table accordingly).
3. If you want to keep it as a “marketing preview,” **remove the “runnable end-to-end” guarantee** for that specific prompt and label it explicitly as “v0.2 placeholder / requires manual step.”

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

cptkoolbeenz added a commit that referenced this pull request May 27, 2026
Three additions to the RFC (#231):

1. Safety: send_scpi v0.2 design — two-tier net (destructive deny-list per-call allowDestructive, wiki-pattern hallucination warn with edit-distance suggestions). Mode-interaction matrix. Wiki snapshot strategy. Non-blocking — firmware response is ground truth.

2. Structured error response contract (v0.1 work) — drain SYST:ERR? before/after, optional SYST:LOG? scrape, readback failures as structured errors. Uniform {success,response,errors[],warnings[]} shape across all SCPI tools so the model never has to grep free text.

3. v0.2 fast-follow priority note — per chat: ship v0.2 quickly so the MCP becomes the primary firmware-feature-testing harness, replacing the per-feature Python harness pattern.

Tool table phasing, marketing, open questions, tech stack untouched. send_scpi stays in v0.2 per original RFC.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant