Claude Code Plugins

Community-maintained marketplace

Feedback

localsend-mcp

@plurigrid/asi
0
0

LocalSend-based P2P transfer with MCP server design for NATS/Tailscale discovery and throughput tuning.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name localsend-mcp
description LocalSend-based P2P transfer with MCP server design for NATS/Tailscale discovery and throughput tuning.
source local
license UNLICENSED

LocalSend MCP Skill

Use This Skill When

  • The user mentions LocalSend, AirDrop-like transfer, or peer-to-peer file sharing.
  • The task asks for an MCP server or tool set around LocalSend.
  • Discovery/advertising needs to use NATS or Tailscale before transferring data.

Reality Check (LocalSend in This Repo)

  • localsend (Flox package) launches a GUI and does not exit for --help.
  • Discovery uses UDP multicast 224.0.0.167:53317 (LAN only).
  • Transfer runs HTTPS on port 53317; direct IPs are required across subnets.
  • For headless automation, prefer a CLI client (e.g., jocalsend) or a small protocol wrapper.

Architecture: Advertise -> Negotiate -> Transfer -> Tune

  1. Advertise capabilities over NATS (or Tailscale if LAN multicast is blocked).
  2. Negotiate transport and parameters (LAN multicast vs direct IP).
  3. Transfer via LocalSend protocol/CLI.
  4. Tune throughput until spectral gap <= 0.25 (>= 75% of target throughput).

MCP Tool Set (Draft)

Discovery / Advertising

  • localsend_advertise:
    • Inputs: agent_id, device_name, localsend_port, tailscale_ip?, capabilities, spectral_gap_target
  • localsend_list_peers:
    • Inputs: source = localsend_multicast | nats | tailscale

Session Negotiation

  • localsend_negotiate:
    • Inputs: peer_id, preferred_transport, max_chunk_bytes, max_parallel
    • Output: session_id, transport, target_ip, port

Transfer

  • localsend_send:
    • Inputs: session_id, file_path, chunk_bytes, parallelism
  • localsend_receive:
    • Inputs: session_id, dest_dir, accept

Throughput Tuning

  • localsend_probe:
    • Inputs: session_id, probe_bytes, probe_parallelism
    • Output: throughput_bps, rtt_ms, loss_rate
  • localsend_session_status:
    • Inputs: session_id
    • Output: bytes_sent, bytes_received, throughput_bps, spectral_gap

Spectral Gap Heuristic (Practical)

Define:

spectral_gap = 1.0 - (observed_throughput / target_throughput)

Stop tuning when spectral_gap <= 0.25.

Tuning Loop:

  1. Start chunk_bytes = 256KB, parallelism = 1
  2. Increase parallelism to 2, 4, 8 while loss < 1%
  3. Increase chunk size up to 1MB while RTT stable
  4. Recompute spectral gap each step

Integration Points in This Repo

  • NATS broadcast helpers: lib/synadia_broadcast.rb
  • Tailscale patterns: lib/tailscale_file_transfer_skill.rb
  • MCP server reference: mcp_unified_server.py

Implementation Notes

  • Avoid assuming LocalSend has a stable CLI; verify with jocalsend --help if installed.
  • If multicast discovery fails (Tailscale), use NATS to exchange target_ip + port.
  • Keep tool outputs structured; avoid dumping large blobs through MCP.