MCP server for Club Log — log search, DXCC status, most-wanted rankings, OQRS
Project description
clublog-mcp
MCP server for Club Log — DXCC entity resolution, expedition log search, propagation activity, Most Wanted rankings, and real-time callsign monitoring through any MCP-compatible AI assistant.
Part of the qso-graph project. Operated by Michael Wells, G7VJR.
Install
pip install clublog-mcp
Tools
| Tool | Auth | Description |
|---|---|---|
clublog_dxcc |
API key | Resolve callsign to DXCC entity (date-aware for prefix changes) |
clublog_search |
API key | Search expedition/public logs ("am I in the log?") |
clublog_activity |
API key | Hour-by-hour propagation between two DXCC entities |
clublog_most_wanted |
Public | Current Most Wanted DXCC entity list |
clublog_expeditions |
Public | Active/recent expedition list with QSO counts |
clublog_watch |
API key | Real-time 24h activity monitor for a callsign |
Quick Start
1. Get an API key
Request an application API key at clublog.org/requestapikey.php. This is a per-application key (40-character hex), not a per-user credential.
Important: API keys are auto-revoked if found in public repos (GitHub scanning active).
2. Set the environment variable
export CLUBLOG_API_KEY=your-40-char-hex-key
Two tools (clublog_most_wanted and clublog_expeditions) work without an API key.
3. Configure your MCP client
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
ChatGPT Desktop
{
"mcpServers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"clublog": {
"command": "clublog-mcp",
"env": {
"CLUBLOG_API_KEY": "your-40-char-hex-key"
}
}
}
}
4. Ask questions
"What DXCC entity is 3Y0J?"
"Am I in the 3Y0J expedition log? Search for KI7MT"
"Show me propagation activity between USA (291) and Japan (339)"
"What are the top 10 Most Wanted DXCC entities?"
"What expeditions are currently active on Club Log?"
"Is 3Y0J still on the air? Show me their 24-hour activity"
Rate Limiting
Club Log has no published rate limits, but enforcement is real and automatic. clublog-mcp protects you:
- 500ms minimum delay between all API calls
- Token bucket: 30 requests/minute
- 3600s freeze on HTTP 403 (IP ban detection)
- Response caching (DXCC: 1hr, Most Wanted: 24hr, Activity: 1hr, Watch: 5min)
Never loop over /dxcc for batch resolution — Club Log provides /bulkdxcc for that (future v2.0 feature).
Band Normalization
Club Log uses bare numbers for bands. clublog-mcp normalizes all responses to ADIF names:
| Club Log | clublog-mcp |
|---|---|
"20" |
"20m" |
"40" |
"40m" |
"C" |
"CW" |
"P" |
"Phone" |
"D" |
"Data" |
Testing Without an API Key
Set the mock environment variable to test all 6 tools:
CLUBLOG_MCP_MOCK=1 clublog-mcp
MCP Inspector
CLUBLOG_API_KEY=your-key clublog-mcp --transport streamable-http --port 8003
Development
git clone https://github.com/qso-graph/clublog-mcp.git
cd clublog-mcp
pip install -e .
License
GPL-3.0-or-later
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clublog_mcp-0.1.0.tar.gz.
File metadata
- Download URL: clublog_mcp-0.1.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3efe2bb313d3130039bfbf6d8faa6f8e5da1684a90e41df2ff315f08ed596f0
|
|
| MD5 |
04997efa882ff813156b46425222bcca
|
|
| BLAKE2b-256 |
9ec1485862156fba5db18db5335e12bf1184d2e18440e2cc4c739087756b94b8
|
Provenance
The following attestation bundles were made for clublog_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on qso-graph/clublog-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clublog_mcp-0.1.0.tar.gz -
Subject digest:
d3efe2bb313d3130039bfbf6d8faa6f8e5da1684a90e41df2ff315f08ed596f0 - Sigstore transparency entry: 1034576321
- Sigstore integration time:
-
Permalink:
qso-graph/clublog-mcp@181748c2a37ab4067f016d4f246a29eef916f2ff -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/qso-graph
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@181748c2a37ab4067f016d4f246a29eef916f2ff -
Trigger Event:
push
-
Statement type:
File details
Details for the file clublog_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: clublog_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1703d8bc578a329c848af3caf7c1961dce4bc80097a5cac210dd725c811605f
|
|
| MD5 |
9f6a9edc67539aafb87b5fca7b7c59e2
|
|
| BLAKE2b-256 |
00b25350e28d15ffd0b4fb1974870844f412af2d0328c43b512d3b708daaf231
|
Provenance
The following attestation bundles were made for clublog_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on qso-graph/clublog-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clublog_mcp-0.1.0-py3-none-any.whl -
Subject digest:
c1703d8bc578a329c848af3caf7c1961dce4bc80097a5cac210dd725c811605f - Sigstore transparency entry: 1034576374
- Sigstore integration time:
-
Permalink:
qso-graph/clublog-mcp@181748c2a37ab4067f016d4f246a29eef916f2ff -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/qso-graph
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@181748c2a37ab4067f016d4f246a29eef916f2ff -
Trigger Event:
push
-
Statement type: