Claude-skill-registry localsend-mcp
LocalSend-based P2P transfer with MCP server design for NATS/Tailscale discovery and throughput tuning.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/localsend-mcp" ~/.claude/skills/majiayu000-claude-skill-registry-localsend-mcp && rm -rf "$T"
manifest:
skills/data/localsend-mcp/SKILL.mdsource content
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)
(Flox package) launches a GUI and does not exit forlocalsend
.--help- Discovery uses UDP multicast
(LAN only).224.0.0.167:53317 - Transfer runs HTTPS on port
; direct IPs are required across subnets.53317 - For headless automation, prefer a CLI client (e.g.,
) or a small protocol wrapper.jocalsend
Architecture: Advertise -> Negotiate -> Transfer -> Tune
- Advertise capabilities over NATS (or Tailscale if LAN multicast is blocked).
- Negotiate transport and parameters (LAN multicast vs direct IP).
- Transfer via LocalSend protocol/CLI.
- 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?
,capabilitiesspectral_gap_target
- Inputs:
:localsend_list_peers- Inputs:
=source
|localsend_multicast
|natstailscale
- Inputs:
Session Negotiation
:localsend_negotiate- Inputs:
,peer_id
,preferred_transport
,max_chunk_bytesmax_parallel - Output:
,session_id
,transport
,target_ipport
- Inputs:
Transfer
:localsend_send- Inputs:
,session_id
,file_path
,chunk_bytesparallelism
- Inputs:
:localsend_receive- Inputs:
,session_id
,dest_diraccept
- Inputs:
Throughput Tuning
:localsend_probe- Inputs:
,session_id
,probe_bytesprobe_parallelism - Output:
,throughput_bps
,rtt_msloss_rate
- Inputs:
:localsend_session_status- Inputs:
session_id - Output:
,bytes_sent
,bytes_received
,throughput_bpsspectral_gap
- Inputs:
Spectral Gap Heuristic (Practical)
Define:
spectral_gap = 1.0 - (observed_throughput / target_throughput)
Stop tuning when
spectral_gap <= 0.25.
Tuning Loop:
- Start
,chunk_bytes = 256KBparallelism = 1 - Increase parallelism to 2, 4, 8 while loss < 1%
- Increase chunk size up to 1MB while RTT stable
- 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
if installed.jocalsend --help - If multicast discovery fails (Tailscale), use NATS to exchange
+target_ip
.port - Keep tool outputs structured; avoid dumping large blobs through MCP.