Skip to content

feat(clients): add Witsy MCP client support - #366

Merged
btsouth merged 5 commits into
btsouth:mainfrom
amitvijapur:feat/client-witsy
Jul 21, 2026
Merged

btsouth merged 5 commits into
btsouth:mainfrom
amitvijapur:feat/client-witsy

Conversation

@amitvijapur

Copy link
Copy Markdown
Contributor

What and why

Adds support for Witsy MCP configuration detection and management.

Changes made:

  • Added a Witsy config path resolver: <userData>/settings.json
    (~/Library/Application Support/Witsy on macOS, %APPDATA%\Witsy on
    Windows, ~/.config/Witsy on Linux)
  • Added a Witsy client definition using Format::JsonMcpServers
  • Registered witsy in the new_json_clients_are_registered fixture test
  • Added a witsy case to client_config_paths_are_stable_across_platforms
    verifying the resolved path on all three platforms

Closes #296

Config path sources

  • Witsy's own source: src/main/mcp.ts reads/writes config.mcpServers
    (a top-level Record<string, {command, args, env, cwd, headers}>)
    directly, confirming this is the live MCP server list, not just an
    import/export buffer. src/main/config.ts resolves settingsFilePath
    to <userData>/settings.json.
  • Witsy's official wiki, "Witsy Files Location"
    (https://github.com/nbonamy/witsy/wiki/Witsy-Files-Location): confirms
    ~/Library/Application Support/Witsy/settings.json (macOS),
    %APPDATA%\Witsy\settings.json (Windows),
    ~/.config/Witsy/settings.json (Linux).
  • package.json productName is "Witsy", confirming the userData folder
    name Electron resolves to on every OS.

Testing

  • cargo test --manifest-path src-tauri/Cargo.toml clients — 79 passed
  • new_json_clients_are_registered / client_config_paths_are_stable_across_platforms pass, exercising Witsy specifically
  • cargo fmt -- --check — no new diffs vs. main
  • cargo clippy --lib --no-default-features — 0 warnings in clients.rs
  • Ran the app (npm run tauri dev) by hand — not done; local disk
    space couldn't sustain a full desktop/Tauri build in my environment

Notes

  • Reused the existing JsonMcpServers format and shared JSON writers —
    no changes to write/edit logic.
  • No secrets, keys, or personal paths in the diff.

Witsy keeps MCP servers in a top-level mcpServers object inside its main
settings.json (Claude-compatible {command, args, env} shape), alongside
all other app settings. Add a path resolver and ClientDef using the
existing JsonMcpServers format, plus a registration test and a
cross-platform path-stability case.

Confirmed against Witsy's own source (src/main/mcp.ts reads/writes
config.mcpServers directly) and the project's file-location wiki page.

Closes btsouth#296

Signed-off-by: Amit Vijapur <[email protected]>
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 188c7ac6-137d-4955-875d-769fdb070f05

📥 Commits

Reviewing files that changed from the base of the PR and between 0cadf58 and 6433082.

📒 Files selected for processing (1)
  • src-tauri/src/clients.rs

📝 Walkthrough

Walkthrough

Witsy is added as a supported MCP JSON client. The change resolves its platform-specific settings.json path, registers it in the client definitions, and extends tests for registration and path stability.

Changes

Witsy MCP support

Layer / File(s) Summary
Witsy configuration resolution
src-tauri/src/clients.rs
Resolves Witsy’s settings.json under the roaming configuration root on supported platforms and the Linux configuration root, then exposes the path through witsy_path().
Client registration and validation
src-tauri/src/clients.rs
Registers Witsy with Format::JsonMcpServers and updates registration and cross-platform configuration-path tests.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related issues

Possibly related PRs

  • tsouth89/toolport#213 — Analogously adds a JsonMcpServers client, platform-specific paths, and corresponding tests.

Suggested reviewers: tsouth89, bharadwajkanneveti

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: adding Witsy MCP client support.
Description check ✅ Passed The description is directly related to the Witsy client support changes in this PR.
Linked Issues check ✅ Passed The PR addresses the issue by adding Witsy's config path, JsonMcpServers definition, and fixture coverage.
Out of Scope Changes check ✅ Passed The changes appear scoped to Witsy client support and related tests only.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@btsouth

btsouth commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Thanks for this, and nice work digging up the config paths from Witsy's own source instead of guessing. That's exactly the kind of verification that makes these easy to merge.

One heads-up: I pushed a small commit to your branch adding Witsy to the supported-clients table in the README and bumping the count, since every other client is listed there. Left it authored under your name. Nothing needed from you.

Approving once CI finishes. Appreciate the contribution.

@btsouth
btsouth merged commit 8069dc3 into btsouth:main Jul 21, 2026
4 checks passed
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.

Add MCP client support: Witsy

2 participants