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.1.tar.gz (26.3 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.1-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qso_graph_auth-0.1.1.tar.gz
  • Upload date:
  • Size: 26.3 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.1.tar.gz
Algorithm Hash digest
SHA256 f478439c7a24eabf28bee947df0f672ae60bd80e00647b4ad14886c043c46374
MD5 d9c4c8ec0e509312964e4fe511f697a1
BLAKE2b-256 9faa0086491ba18ad75c52cd8090cbdcadb6b38da954632e4f27dd4370e2fa22

See more details on using hashes here.

Provenance

The following attestation bundles were made for qso_graph_auth-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: qso_graph_auth-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 33.4 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 154f94fb508335ade4eb3b383d986648d05efe5f2be10dc6630ebbf8049c896f
MD5 ed730f9741b2548708e84ba6338fb0c5
BLAKE2b-256 e4ac72365760b55e4b655e307fb365dc41a61edb42f3aceec847a0c9cbac9a04

See more details on using hashes here.

Provenance

The following attestation bundles were made for qso_graph_auth-0.1.1-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