业余无线电传播数据服务器

PSK Reporter MCP Server是一个通过Claude Desktop提供实时业余无线电传播数据的模型上下文协议服务器,支持高级过滤和DXCC实体映射。

  • by rokhmanov
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 rokhmanov/mcp-server-pskreporter

使用说明

PSK报告器MCP服务器

一种模型上下文协议(MCP)服务器,通过Claude Desktop从PSKReporter提供实时业余无线电传播数据。

特性

  • 实时传播数据:从世界各地的业余无线电台收集现场直播
  • 高级过滤:按频段、模式、呼号、位置和国家进行筛选
  • DXCC实体支持:具有智能名称变化的完整国家/地区地图
  • MCP资源:发现可用的国家及其常见变体
  • 线程架构:非阻塞MQTT收集以实现响应性能

安装

先决条件

  • Python 3.13或更高版本
  • uv包管理器
  • Claude桌面应用程序

设置

  1. 克隆或下载此存储库

    git clone <your-repo-url>
    cd mcp-server-pskreporter
    
  2. 使用uv安装依赖项

    uv sync
    
  3. 选择您的安装方法:

    选项A:开发模式(用于直接命令使用)

    uv pip install -e .
    

    这将在本地虚拟环境中以开发模式安装包,使 pskreporter-mcp-server 此项目环境中可用的命令。如果要直接从项目目录运行命令,请使用此选项。

    选项B:基于项目的执行(适用于Claude Desktop-无需安装)

    uv run --project . pskreporter-mcp-server
    

    这将直接从项目目录运行服务器,而无需安装。这是Claude Desktop默认使用的。

  4. 验证服务器是否正常工作

    如果您使用选项A(开发模式):

    # Make sure you're in the project directory
    pskreporter-mcp-server
    

    如果您使用选项B(基于项目):

    uv run --project . pskreporter-mcp-server
    

    服务器应启动并准备好接受MCP连接。

添加到Claude桌面

方法1:使用配置文件(推荐)

  1. 复制配置文件 到Claude Desktop的配置目录:

    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 更新路径 在……里面 claude_desktop_config.json 要匹配您的系统:

    {
      "mcpServers": {
        "pskreporter": {
          "command": "uv",
          "args": ["run", "--project", "C:\\Users\\rokhm\\git\\mcp-server-pskreporter", "pskreporter-mcp-server"],
          "env": {}
        }
      }
    }
    
  3. 重新启动克劳德桌面

备注:The claude_desktop_config.json 此存储库中的文件已针对当前路径进行了预配置。如果移动项目,请更新 --project 相应的论点。

方法2:使用Claude桌面UI

  1. 打开克劳德桌面
  2. 首选 设置 → MCP服务器
  3. 点击 添加服务器
  4. 配置服务器:
    • 名字: pskreporter
    • 命令: uv
    • 参数: run --project C:\Users\rokhm\git\mcp-server-pskreporter pskreporter-mcp-server
    • 工作目录: C:\Users\rokhm\git\mcp-server-pskreporter (您的项目文件夹)
  5. 点击 保存

方法3:替代命令

您还可以使用以下替代方法运行服务器:

直接执行Python:

python -m pskreporter_mcp_server

使用uv运行:

uv run pskreporter-mcp-server

开发模式:

uv run mcp dev pskreporter_mcp_server.py

用法

连接到Claude Desktop后,您可以使用以下工具和资源:

get_spots 工具

使用过滤选项收集实时业余无线电传播点。

参数:

  • band业余无线电频段(例如,“20m”、“40m”、”80m“、”160m“、”10m“、
  • mode:操作模式(例如,“FT8”、“FT4”、“CW”、“SSB”、“PSK31”、“RTTY”)
  • sendercall:特定车站呼号(例如“W9KM”、“JA1ABC”)
  • receivercall:接收站呼号
  • senderlocator:发送站梅登黑德网格定位器(例如“EN51”、“JO20”)
  • receiverlocator:接收站梅登黑德网格定位器
  • sendercountry:发件人所在国家的国家名称(例如,“日本”、“美国”、“德国”)
  • receivercountry:接收方所在国家的国家名称
  • duration:收集时间(秒)(5-30,默认值:10)

国家名称特征:

  • 不区分大小写:“日本”、“japan”、“japan”都是一样的
  • 部分匹配:“swains”匹配“swains I.”,“korea”匹配“Republic of korea”
  • 常见变化:“美国”、“英国”、“德国”会自动映射到它们的全名
  • 340+实体:DXCC实体全面支持全球覆盖

示例:

  • “向我展示距离日本20米的FT8活动”
  • “在40米处查找美国车站”
  • “W9KM在哪些频段上运行?”
  • “向我展示80米长的德国车站”

dxcc_entities 资源

发现可用的国家及其变体,以更好地过滤。

资源特性:

  • 完整实体列表:所有340个具有正式名称的DXCC实体
  • 名称变化:每个国家的常见变体(例如,“美国”代表“美利坚合众国”)
  • 使用示例:现成的示例 get_spots 工具
  • 搜索提示:有效使用国名指南

如何使用:

  • 浏览所有可用的国家和地区
  • 查看每个国家的常见变化
  • 获取要在中使用的确切名称 get_spots 参数
  • 发现您可能不知道的新DXCC实体

示例资源数据:

{
  "code": "291",
  "name": "United States of America",
  "name_variations": ["United States", "USA", "US", "America"]
}

国家名称发现

这 dxcc_entities 资源提供了全面的国家信息:

  • 官方名称:使用精确的DXCC实体名称以获得最佳结果
  • 常见变化:常用缩写和替代名称
  • 案例灵活性:所有名称都有效,无论大小写
  • 部分匹配:查找名称不完整的国家

常见示例:

  • 美国:“美国”、“US”、“America”、“美利坚合众国”
  • 英国:“英国”、“大不列颠”、“不列颠”、“英格兰”
  • 德国:“德国”、“德意志”、“DE”
  • 日本:“日本”(无常见变体)
  • 斯温斯岛:“沼泽”、“沼泽一号”、“斯温斯岛”

数据源

此服务器连接到PSKReporter MQTT源 mqtt.pskreporter.info 从世界各地的业余无线电台检索实时传播数据。

故障排除

常见问题

  1. 服务器无法启动

    • 确保已安装Python 3.13+
    • 确保安装了紫外线: curl -LsSf https://astral.sh/uv/install.sh | sh
    • 检查是否安装了依赖项: uv sync
  2. 未收集到斑点

    • 增加 duration 参数(最多30秒)
    • 使用更宽的过滤器(更少的参数)
    • 检查您的互联网连接
  3. 未找到国家名称

    • 使用 dxcc_entities 查找确切国家名称的资源
    • 尝试常见的变体(例如,用“美国”代替“美利坚合众国”)
    • 检查拼写错误并尝试部分匹配
  4. Claude Desktop无法连接

    • 验证中的路径 claude_desktop_config.json 是正确的
    • 确保手动运行时服务器成功启动: uv run pskreporter-mcp-server
    • 检查Claude Desktop日志中的错误消息
  5. “找不到文件”错误

    • 确保工作目录指向包含以下内容的文件夹 pskreporter_mcp_server.py
    • 验证所有项目文件是否在同一目录中
  6. “找不到程序”或“生成失败”错误

    • 如果您在直接运行命令时收到“无法生成‘pskreporter mcp server’,原因是:找不到程序”,则需要在开发模式下安装该包:
      uv pip install -e .
      
    • 安装后 pskreporter-mcp-server 命令将在项目的虚拟环境中可用
    • 备注:克劳德桌面使用 uv run --project 不需要安装-提供 claude_desktop_config.json 无需任何额外设置即可工作

调试信息

服务器创建调试日志文件 mcp_server_debug.log 详细信息如下:

  • MQTT连接状态
  • 现场采集进度
  • 国家名称解析
  • 错误消息和堆栈跟踪

发展

此项目使用 uv 用于依赖性管理。关键命令:

  • uv sync -安装依赖项
  • uv run pskreporter-mcp-server -运行服务器
  • uv run --project C:\Users\rokhm\git\mcp-server-pskreporter pskreporter-mcp-server -从任何目录运行
  • python -m pskreporter_mcp_server -以Python模块运行

配置

Claude桌面配置

这 claude_desktop_config.json 文件已预先配置为使用 uv run --project:

{
  "mcpServers": {
    "pskreporter": {
      "command": "uv",
      "args": ["run", "--project", "C:\\Users\\rokhm\\git\\mcp-server-pskreporter", "pskreporter-mcp-server"],
      "env": {}
    }
  }
}

要点:

  • 用途 uv run --project 直接项目执行命令
  • --project 参数指向本地项目目录
  • 无需预安装(uv会自动处理依赖关系)
  • 可执行文件名为 pskreporter-mcp-server (带连字符)

DXCC实体配置

服务器对DXCC实体使用基于YAML的配置(dxcc_entities.yaml)它提供:

  • 易于维护:国家名称和变体存储在人类可读的YAML文件中
  • 灵活的更新:在不接触代码的情况下添加或修改国家/地区变化
  • 结构化数据:规范名称和常见变体之间的明确区分

文件结构:

dxcc_entities:
  "291":
    canonical_name: "United States of America"
    name_variations: ["USA", "US", "United States", "America"]
  "339":
    canonical_name: "Japan"
    name_variations: []

添加国家差异: 要为某个国家添加变体,只需编辑 dxcc_entities.yaml 文件:

  1. 通过DXCC代码查找国家
  2. 添加变体 name_variations 数组
  3. 重新启动服务器以应用更改

例子:

"339":
  canonical_name: "Japan"
  name_variations: ["Nippon", "Nihon"]

服务器在启动时自动加载这些更改,使维护和扩展国家名称支持变得容易。


73! 安德里 w9公里