slsk-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SLSK_PASSWORD | Yes | Auto-login password | |
| SLSK_USERNAME | Yes | Auto-login username | |
| SLSK_LISTEN_PORT | No | Soulseek listening port (default from aioslsk) | |
| SLSK_DOWNLOAD_DIR | No | Default download directory | ./downloads |
| SLSK_SEARCH_TIMEOUT | No | Seconds to wait for search results | 7 |
| SLSK_OBFUSCATED_PORT | No | Obfuscated port (default from aioslsk) | |
| SLSK_MAX_CONCURRENT_DL | No | Parallel download limit | 3 |
| SLSK_MAX_CONCURRENT_OPS | No | Max simultaneous socket operations | 1 |
| SLSK_MAX_CONCURRENT_SEARCH | No | Parallel search ticket limit | 4 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | Search the Soulseek network for files. Filters (applied post-search, like Nicotine+/sldl/Soularr):
|
| downloadA | Download a file from a Soulseek peer. Files are saved to the directory configured by SLSK_DOWNLOAD_DIR. IMPORTANT: After calling this, SLEEP for at least 30 seconds (or do other productive work) before calling download_status. P2P connections take time to establish — the peer must accept, negotiate, and begin sending data. Checking immediately wastes tokens and will always show 0%. The response includes wait_before_poll_secs — you MUST sleep/wait that many seconds before your first status poll. Do not live-poll in a loop. |
| download_statusA | Poll progress of an active or recent download. CRITICAL TIMING RULES:
|
| cancel_downloadA | Abort an in-progress download. ONLY cancel a download if:
Do NOT cancel just because progress is 0% — P2P connections take 1-3 minutes. |
| list_downloadsA | List all active/queued/recent downloads in the current session. Use this to recover state after context compaction or session resume. Returns all tracked downloads with their current status, progress, age_seconds, username, connection_state, and local_path. Each entry includes the download ID so you can call download_status or cancel_download on specific items. |
| connection_healthA | Check the MCP's Soulseek connection health before starting work. Call this at the start of every session and after any suspected restart. Returns: connected, passive_mode, session_id, listening_port, p2p_reachable, session_uptime_secs, active_downloads, and a note if something needs attention. Key fields:
|
| get_configA | Return the MCP's runtime configuration (no secrets). Use this to check where files are being downloaded, which ports are configured, concurrency limits, and the connected username. |
| peer_statusA | Check a peer's online status, speed, queue, and free slots before downloading. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_status | Current connection state, username, passive mode flag. |
| get_downloads | List of all tracked downloads with status/progress. |
| get_search_tips | Actionable search and download strategies for the Soulseek network. Sourced from Nicotine+, sldl, Soularr, SoulSync, and the Soulseek community. Every tip maps to a feature available in this MCP server. |
TDQS
Scored across 8 tools
Each tool targets a distinct capability: search finds files, download initiates transfers, download_status polls progress, cancel_download aborts, list_downloads enumerates active sessions, connection_health checks connectivity, peer_status inspects peer state, and get_config retrieves settings. There is no functional overlap between any two tools.
All names use lowercase_snake_case, but the pattern mixes single verbs (search, download) with verb_noun (get_config, cancel_download, list_downloads) and noun phrases (connection_health, peer_status, download_status). While readable and predictable, it is not a strict verb_noun convention throughout.
Eight tools is well within the ideal 3-15 range and is appropriate for a focused Soulseek client. Each tool earns its place, covering search, download lifecycle, session management, and health checks without unnecessary bloat.
The tool surface covers the full download workflow: search, initiate download, poll status, cancel, and list active/recent transfers. It also includes connection health, peer status, and config retrieval to address operational concerns. No obvious dead ends or missing core operations for a download-centric Soulseek MCP.