About Qsp Mcp
qsp-client connects local LLMs to MCP servers so models with function calling can use qso-graph tools. It supports OpenAI-compatible endpoints and relays tool calls as a stateless client.
Key features
- 01Connect to OpenAI-compatible LLM endpoints
- 02Relay calls to configured MCP servers
- 03Offer interactive and single-query modes
- 04Provide tool profile options
- 05Disable write-capable tools by default
Use cases
- 01Let a local LLM use amateur radio tools
- 02Run interactive sessions or one-off queries from the CLI
- 03Select available tools with a tool profile
MCP support
qsp-client is an MCP client that connects to MCP servers using Claude Desktop-compatible configuration and relays tool calls to a local LLM.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEqsp-client
QSP — relay MCP tools to any OpenAI-compatible local LLM endpoint.
Named after the Q-signal QSP ("Will you relay?"), qsp-client relays tool calls between a local LLM and MCP servers. It is an MCP client: any model with function calling gains access to the qso-graph servers' tools, from local weights, not from cloud.
Formerly qsp-mcp. See Moving from qsp-mcp.
Install
uv tool install qsp-client # the qsp-client command, on your PATH
pip install qsp-client # or into your own environment
Quick Start
# Interactive mode
qsp-client --config ~/.config/qsp-client/config.json
# Single query
qsp-client --query "What bands are open from DN13 to JN48 right now?"
# Direct endpoint (no config file needed if no MCP servers configured)
qsp-client --endpoint http://localhost:8000/v1/chat/completions --api-key sk-xxx
Configuration
The config format is Claude Desktop compatible — copy your existing mcpServers block directly:
{
"mcpServers": {
"ionis": {
"command": "ionis-mcp",
"env": { "IONIS_DATA_DIR": "/path/to/datasets/v1.0" }
},
"solar": {
"command": "solar-mcp"
},
"wspr": {
"command": "wspr-mcp"
}
},
"bridge": {
"endpoint": "http://localhost:8000/v1/chat/completions",
"model": "AstroSage-70B",
"temperature": 0.3,
"system_prompt": "You are an expert ham radio operator and RF engineer.",
"max_tool_calls_per_turn": 5,
"profiles": {
"contest": {
"servers": ["n1mm", "ionis", "solar", "wspr"],
"temperature": 0.2,
"system_prompt": "You are a contest advisor. Be concise."
},
"propagation": {
"servers": ["ionis", "solar", "wspr"],
"temperature": 0.3
},
"full": {
"servers": "*",
"temperature": 0.3
}
},
"server_timeouts": {
"ionis": 1,
"solar": 8,
"qrz": 5
}
}
}
The mcpServers block uses the exact same format as Claude Desktop. The bridge section is qsp-client specific (ignored by Claude Desktop).
CLI Options
qsp-client [OPTIONS]
Options:
-c, --config PATH Config file path (default: ~/.config/qsp-client/config.json)
-e, --endpoint URL LLM endpoint URL (overrides config)
-k, --api-key KEY API key for the LLM endpoint
-m, --model NAME Model name (overrides config)
-p, --profile NAME Tool profile (contest, dx, propagation, full)
-q, --query TEXT Single query mode — ask one question and exit
--enable-writes Enable write-capable tools (disabled by default)
--list-tools List available tools and exit
--version Show version
Interactive Commands
| Command | Action |
|---|---|
/tools | List available tools |
/help | Show help |
quit | Exit (also: exit, q, 73) |
ADIF tools
qsp-adif-convert converts an ADIF (.adi) log to JSON or NDJSON, with filters for band, mode,
callsign, date range and confirmed QSOs:
qsp-adif-convert -i mylog.adi -o mylog.json
qsp-adif-convert --help
It works on files on your own machine and opens no connection. It used to be adif-mcp convert;
adif-mcp is now only the MCP server.
Design
qsp-client is a strict, stateless pipe between an LLM and MCP tools:
- No caching, no shared state, no health polling
- All state lives in MCP servers
- All inference optimization lives in the inference server (prefix caching, KV-cache)
- qsp-client just connects the two sides
Works with any OpenAI-compatible endpoint: llama.cpp, Ollama, vLLM, SGLang.
Security
- Write-capable tools disabled by default (
--enable-writesopt-in) - Credentials stay inside MCP servers (OS keyring) — never exposed to qsp-client or the LLM
- No subprocess, no shell execution, no eval
- All external connections HTTPS only (LAN endpoints exempted)
Moving from qsp-mcp
qsp-client is qsp-mcp, renamed: in the MCP world, -mcp names mark servers, and this is a client.
- Install the new name:
pip uninstall qsp-mcp && pip install qsp-client. - Your config keeps working:
~/.config/qsp-mcp/config.jsonand~/.qsp-mcp.jsonare still read, after the new~/.config/qsp-client/config.jsonand~/.qsp-client.json. - The
qsp-mcpcommand still works, and says it has moved. Useqsp-client.
License
GPL-3.0-or-later — see LICENSE.
Part of the qso-graph ecosystem
qso-graph.io — MCP servers for amateur radio.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.