Skip to main content

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

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)

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: pip uninstall qsp-mcp && pip 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

MIT — see LICENSE.

Part of the qso-graph ecosystem

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

Metadata

Release files for qsp-client 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qsp-client 0.3.1
File Size Uploaded
qsp_client-0.3.1.tar.gz 97.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qsp-client 0.3.1
File Interpreter ABI Platform
qsp_client-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 125.1 kB

Release files / qsp_client-0.3.1.tar.gz

Download URL qsp_client-0.3.1.tar.gz
Size 97.0 kB
Tags Source
SHA-256 checksum
How to use checksums
383d59b4a654132b5a2bf845fa4fd2900e9137525f66dbd52f983fef9715b332
BLAKE2b-256 checksum
How to use checksums
20460bf14dd78ec59a1f4ca1e8a123a21897f21891f36b479a4565db24428342
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / qsp_client-0.3.1-py3-none-any.whl

Download URL qsp_client-0.3.1-py3-none-any.whl
Size 28.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f1e20a722d5c1b2a1c38c3e19908ae71313d3dbd1768fb9ea0929efd877f4e76
BLAKE2b-256 checksum
How to use checksums
6feca01a3838a937ec4d1522fa17ff30393cbd1855b954ae05cb330e803ab28c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page