Skip to main content

Persona and credential management for qso-graph MCP servers

Project description

qso-graph-auth

PyPI Python License: GPL v3

Persona and credential management for qso-graph MCP servers.

Provides a shared identity layer so that authenticated MCP servers (eqsl-mcp, qrz-mcp, lotw-mcp, hamqth-mcp) can retrieve credentials from the OS keyring without embedding secrets in configuration files.

Install

pip install qso-graph-auth

Quick Start

# Create a persona
qso-auth persona add --name default --callsign YOUR_CALL --start 2020-01-01

# Enable providers
qso-auth provider enable default eqsl
qso-auth provider enable default qrz
qso-auth provider enable default lotw
qso-auth provider enable default hamqth
qso-auth provider enable default qrz_logbook

# Set credentials (stored in OS keyring)
qso-auth creds set default eqsl --username YOUR_CALL --password YOUR_PASS
qso-auth creds set default qrz --username YOUR_CALL --password YOUR_PASS
qso-auth creds set default lotw --username YOUR_CALL --password YOUR_PASS
qso-auth creds set default hamqth --username YOUR_CALL --password YOUR_PASS
qso-auth creds set default qrz_logbook --username YOUR_CALL --api-key YOUR_API_KEY

# Check credential health
qso-auth creds doctor

Providers

Provider Auth Type Description
eqsl username + password eQSL.cc electronic QSL
lotw username + password ARRL Logbook of The World
qrz username + password QRZ.com XML subscription
qrz_logbook username + API key QRZ.com Logbook API
hamqth username + password HamQTH.com callsign lookup

Security

  • Credentials are stored only in the OS keyring (macOS Keychain, GNOME Keyring, Windows Credential Locker)
  • Credentials are never written to config files, logs, tool results, or error messages
  • The persona index (~/.config/adif-mcp/personas.json) stores only non-secret metadata (callsign, provider names)
  • All external connections use HTTPS only

For MCP Server Authors

from qso_graph_auth.identity import PersonaManager

pm = PersonaManager()
username, secret = pm.require("default", "eqsl")

The require() method raises typed exceptions (PersonaNotFound, ProviderRefMissing, SecretMissing) with actionable error messages pointing users to the correct qso-auth creds set command.

CLI Reference

qso-auth persona add      Create a new persona
qso-auth persona list     List all personas
qso-auth persona show     Show persona details
qso-auth persona remove   Remove a persona
qso-auth provider list    List supported providers
qso-auth provider enable  Enable a provider for a persona
qso-auth provider disable Disable a provider for a persona
qso-auth creds set        Save credentials to OS keyring
qso-auth creds get        Show redacted credentials
qso-auth creds delete     Delete stored credentials
qso-auth creds doctor     Check credential health
qso-auth creds reset      Factory reset (delete all)

Part of QSO-Graph

This package is part of the qso-graph MCP server suite for amateur radio. See qso-graph.io for documentation.

License

GPLv3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qso_graph_auth-0.1.0.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qso_graph_auth-0.1.0-py3-none-any.whl (33.3 kB view details)

Uploaded Python 3

File details

Details for the file qso_graph_auth-0.1.0.tar.gz.

File metadata

  • Download URL: qso_graph_auth-0.1.0.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qso_graph_auth-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eb19a079cc057ed641e371cff558e641b6b34ac1c3b3c3e4ff73d755e67e97a5
MD5 0f0fe7a466a0f880fdc0bccbb8fd693e
BLAKE2b-256 c7753400fd07a2e83c0805cc1520cd2cde8188292fd6c28fc548d027be8d7fda

See more details on using hashes here.

Provenance

The following attestation bundles were made for qso_graph_auth-0.1.0.tar.gz:

Publisher: publish.yml on qso-graph/qso-graph-auth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qso_graph_auth-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: qso_graph_auth-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 33.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qso_graph_auth-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 938847d3a205ad2b347fa6a0058d90d4382a09627e64052af63cff593217421c
MD5 c5d1b002adb8ce55aca3f4b6a3affecb
BLAKE2b-256 43bc0a87096b72a2f86577e11aa383d9681ab9cd4279dd1a616ad59eecafe015

See more details on using hashes here.

Provenance

The following attestation bundles were made for qso_graph_auth-0.1.0-py3-none-any.whl:

Publisher: publish.yml on qso-graph/qso-graph-auth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page