Qsp Client

io.github.qso-graphPublished by GitHub account qso-graphv0.5.2Updated Nov 11, 2026

QSP — relay MCP tools to any OpenAI-compatible local LLM (llama.cpp, Ollama, vLLM)

VerifiedSTDIODesktop onlyDeveloper ToolsAI & ML

Overview

AI-generated overview

A command-line MCP client that relays tool calls between a local OpenAI-compatible LLM endpoint and configured MCP servers.

What you can do
  • Connect to any OpenAI-compatible endpoint (llama.cpp, Ollama, vLLM, SGLang) and relay MCP tool calls to it
  • Run interactive sessions or single queries from the command line, with configurable model, temperature and system prompt
  • Group MCP servers into named tool profiles and set per-server timeouts
  • List available tools and optionally enable write-capable tools
  • Convert ADIF amateur-radio logs to JSON or NDJSON with band, mode, callsign and date filters
When to use it
Use it when you run a local model with function calling and want that model to reach MCP servers' tools without a cloud provider. It suits amateur-radio and qso-graph workflows, or any setup where you already have a Claude Desktop style mcpServers configuration to reuse.
Requirements
Python package installed with uv (or added to a project). A running OpenAI-compatible LLM endpoint URL and model name, plus an API key for that endpoint if it requires one. A JSON config file listing MCP servers, by default under the user's config directory; a config file is not needed when no MCP servers are configured.
Before you install
Write-capable tools are off unless explicitly enabled, so enabling them lets the model change data in connected servers. The API key for the LLM endpoint is passed on the command line or in config, so keep it out of shared files and shell history. Tool calls and their results pass through the local model endpoint, so anything the tools return is sent there.

Installation

In SourceWeft

  1. Open Qsp Client in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

qsp-client

[PyPI] [MCP Registry]

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

bash
uv tool install qsp-client   # the qsp-client command, on your PATHuv add qsp-client            # or into your own project

Quick Start

bash
# Interactive modeqsp-client --config ~/.config/qsp-client/config.json
# Single queryqsp-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:

json
{  "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

CommandAction
/toolsList available tools
/helpShow help
quitExit (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:

bash
qsp-adif-convert -i mylog.adi -o mylog.jsonqsp-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-writes opt-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: uv tool uninstall qsp-mcp && uv tool install qsp-client.
  • Your config keeps working: ~/.config/qsp-mcp/config.json and ~/.qsp-mcp.json are still read, after the new ~/.config/qsp-client/config.json and ~/.qsp-client.json.
  • The qsp-mcp command still works, and says it has moved. Use qsp-client.

License

GPL-3.0-or-later—see LICENSE.

Part of the qso-graph ecosystem

qso-graph.io—MCP servers for amateur radio.

Source: README.md at commit 61a795d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

9
  1. v0.5.2LatestNov 11, 2026
  2. v0.5.1Oct 29, 2026
  3. v0.4.1Oct 26, 2026
  4. v0.4.0Oct 12, 2026
  5. v0.3.5Oct 11, 2026
  6. v0.3.4Oct 11, 2026
  7. v0.3.3Oct 7, 2026
  8. v0.3.2Oct 6, 2026
  9. v0.3.0Sep 29, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts