io.github.qso-graph/qsp-client

Official registry AI and agents

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

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

PYPI package qsp-client
Claude Code
claude mcp add qsp-client -- uvx qsp-client==0.5.1
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "qsp-client": {
            "command": "uvx",
            "args": [
                "qsp-client==0.5.1"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. qsp-client
  2. Install
  3. Quick Start
  4. Configuration
  5. CLI Options
  6. Interactive Commands
  7. ADIF tools
  8. Design
  9. Security
  10. Moving from qsp-mcp
  11. License
  12. Part of the qso-graph ecosystem

qsp-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

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:

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-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

GPL-3.0-or-later — see LICENSE.

Part of the qso-graph ecosystem

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

Frequently asked questions

What is io.github.qso-graph/qsp-client?

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

How do I install io.github.qso-graph/qsp-client?

It runs on your machine. In Claude Code: claude mcp add qsp-client -- uvx qsp-client==0.5.1. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.qso-graph/qsp-client need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.qso-graph/qsp-client open source?

Yes. Its code is on GitHub under the GPL-3.0 license.

Who maintains io.github.qso-graph/qsp-client?

It is published by qso-graph. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.