DX群集MCP服务器
基于FastMCP的模型上下文协议(MCP)服务器,用于Ham Radio DX集群操作。此服务器使Claude Desktop和其他MCP客户端能够与DX Clusters交互,以读取点、发布点和分析传播数据。
特性
- 阅读DX热点:通过可选的波段或呼号过滤检索最近的DX点
- 后DX点:向集群提交新的DX点
- 分析斑点:对地点进行统计分析(波段活动、国家分布、模式分析)
- 连接管理:检查和管理DX群集连接状态
- 苏格兰和南方能源公司运输:用于远程访问的服务器发送事件传输
- API密钥验证:基于API密钥的安全身份验证
- Docker支持:使用Docker和Docker compose轻松部署
建筑
┌─────────────────────┐
│ Claude Desktop │
│ (Windows) │
└──────────┬──────────┘
│ MCP Protocol (SSE + API Key)
│
┌──────▼──────────┐
│ MCP Proxy │
│ (Windows) │
└──────┬──────────┘
│ HTTP/SSE
│
┌──────▼──────────┐
│ DX Cluster │
│ MCP Server │
│ (Docker) │
└──────┬──────────┘
│ Telnet
│
┌──────▼──────────┐
│ DX Cluster │
│ (e.g. NC7J) │
└─────────────────┘先决条件
- Docker和Docker Compose
- 有效的火腿无线电呼号
- DX群集的网络访问(默认值:dxc.nc7j.com.7373)
- 克劳德桌面(适用于Windows客户端)
- MCP代理(用于远程连接)
安装
1.克隆存储库
git clone
cd dx_cluster_mcp2.配置环境
复制示例环境文件并使用您的设置进行编辑:
cp .env.example .env编辑 .env 根据您的配置:
# Your ham radio callsign (required)
CALLSIGN=EA1RFI
# DX Cluster connection (default is NC7J)
DX_CLUSTER_HOST=dxc.nc7j.com
DX_CLUSTER_PORT=7373
# API Key for authentication (generate a secure random string)
API_KEY=your-very-secure-random-api-key-here-change-me重要:更改 API_KEY 转换为安全的随机字符串!
3.创建外部网络
服务器使用一个名为的外部Docker网络 ea1rfi-network.在运行docker compose之前创建它:
docker network create ea1rfi-network4.启动服务器
docker-compose up -d检查日志:
docker-compose logs -f服务器将在以下时间可用 http://localhost:8000 (或您服务器的IP地址)。
克劳德桌面配置(Windows)
选项1:使用MCP代理(建议用于远程访问)
- 安装MCP代理 在您的Windows计算机上
- 配置MCP代理 要连接到服务器,请执行以下操作:
使用服务器URL和API密钥创建或编辑MCP代理配置文件:
{
"dx-cluster": {
"url": "http://your-server-ip:8000/sse",
"headers": {
"Authorization": "Bearer your-very-secure-random-api-key-here-change-me"
}
}
}- 配置Claude桌面 使用MCP代理
编辑Claude Desktop配置文件(通常位于 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"dx-cluster": {
"command": "mcp-proxy",
"args": ["dx-cluster"]
}
}
}选项2:直接SSE连接(如果支持)
如果您的MCP客户端支持直接SSE连接,请按如下方式配置:
{
"mcpServers": {
"dx-cluster": {
"url": "http://your-server-ip:8000/sse",
"transport": "sse",
"headers": {
"Authorization": "Bearer your-very-secure-random-api-key-here-change-me"
}
}
}
}可用工具
1. read_spots
从集群中读取最近的DX点。
参数:
count(int,可选):要检索的点数(默认值:10,最大值:100)band(字符串,可选):带通滤波器(例如,“20m”、“40m”和“15m”)callsign(字符串,可选):用于搜索特定电台的呼号过滤器
例子:
{
"count": 20,
"band": "20m"
}2. post_spot
将DX点发布到集群。
参数:
frequency(浮动):频率单位为MHz(例如,20米FT8为14.074)dx_callsign(string):被发现车站的呼号comment(字符串,可选):关于现场的评论(模式、信号报告等)
例子:
{
"frequency": 14.074,
"dx_callsign": "EA1RFI",
"comment": "FT8 +10dB"
}3. analyze_spots
分析DX点以提供见解和统计数据。
参数:
hours(int,可选):要分析的小时数(默认值:1,最大值:24)analysis_type(string):分析类型
- "summary":总体统计 - "bands":每个频段分布的点 - "countries":每个国家前缀的位置 - "modes":每种操作模式的点
例子:
{
"hours": 2,
"analysis_type": "bands"
}4. check_connection
检查与DX群集的连接状态。
参数: 无
返回连接状态、集群信息和配置。
使用示例
配置后,您可以通过Claude Desktop与DX集群交互:
示例提示:
- “显示20米上的最后20个DX点”
- “用FT8在14.074 MHz上发布EA1RFI的位置”
- “分析过去3小时的乐队活动”
- “在过去的一个小时里,发现了哪些国家?”
- “检查我们是否已连接到DX群集”
故障排除
连接问题
- 检查服务器日志:
docker-compose logs -f- 验证网络连接:
docker exec dx-cluster-mcp-server ping dxc.nc7j.com- 测试与群集的telnet连接:
telnet dxc.nc7j.com 7373身份验证错误
- 验证API密钥在
.env文件和Claude桌面配置 - 检查一下
Authorization标头格式正确:Bearer
Docker网络问题
- 确保外部网络存在:
docker network ls | grep ea1rfi-network- 如果需要,重新创建网络:
docker network rm ea1rfi-network
docker network create ea1rfi-network发展
本地测试
对于没有Docker的本地开发:
- 安装依赖项:
pip install -r requirements.txt- 设置环境变量:
export CALLSIGN=N0CALL
export DX_CLUSTER_HOST=dxc.nc7j.com
export DX_CLUSTER_PORT=7373
export API_KEY=test-key- 运行服务器:
python server.py测试工具
您可以使用FastMCP CLI或MCP检查器测试MCP工具:
# Using FastMCP CLI
fastmcp dev server.py
# Or test with curl (SSE endpoint)
curl -H "Authorization: Bearer your-api-key" \
http://localhost:8000/sse安全注意事项
- API密钥:在生产过程中始终使用随机生成的强API密钥
- 网络安全:考虑使用HTTPS和反向代理(nginx、traefik)
- 防火墙:将端口8000的访问限制为受信任的IP地址
- 呼号:确保您使用自己的授权呼号
- 群集规则:遵守您所连接的DX集群的规则和礼仪
DX集群资源
此服务器与标准DX Cluster软件兼容,包括:
- DXSpider
- AR集群
- CC集群
热门公共DX集群:
- NC7J:dxc.NC7J.com.7373
- HamQTH:HamQTH.com:7300
- W6CUA:W6CUA.无知识产权组织:7373
许可证
有关详细信息,请参阅LICENSE文件。
贡献
欢迎投稿!请随时提交拉取请求或未决问题。
参考文献
支持
有关问题和疑问,请在GitHub上打开问题。
73 de EA1RFI
