Mellow Tapir Radio Spectrum Guide

io.github.guycole由 GitHub 账号 guycole 发布v1.0.2更新于 Nov 3, 2026

Explore likely radio services, channels, and emissions from 108 MHz to 1 GHz.

发布方自己的服务:Mellow Hub

已验证STDIO仅桌面数据库AI 与机器学习

概览

AI 生成的概览

只读无线电频谱目录服务器,让助手在 108 MHz 至 1 GHz 范围内识别频率、列出频道并检索业务。

可以做什么
  • 将单个频率归类到匹配的频段与已知频道,支持 Hz、MHz 字符串或带单位写法
  • 按频率范围列出已知频道,含标签、业务与发射类别
  • 按文本检索业务名称与用途名称,并返回范围摘要
  • 对 SQLite 目录执行临时只读 SQL(SELECT 或 WITH),写操作会被拒绝
  • 向本地 Ollama 参考模型发送提示,可附带系统提示与温度参数
  • 读取暴露目录元数据以及种子与模式源文件的资源
适用场景
适合需要解读某个无线电频率、查询某频段由哪种业务或频道占用,或浏览 108 MHz 至 1 GHz 之间频段、发射类别与频道目录的场景。更偏向频谱规划、监测或业余无线电问答,而非通用网络或数据分析工作。
运行要求
以本地进程(stdio)或 Docker 镜像的 streamable HTTP 方式运行。需要由种子 JSON 与模式 SQL 构建的 SQLite 目录,以及 TAPIR_DB_PATH、TAPIR_SEED_PATH、TAPIR_SCHEMA_PATH 环境变量。参考模型工具需要可访问的 Ollama 端点(OLLAMA_BASE_URL)和 REFERENCE_LLM_MODEL 指定的模型(默认 gpt-oss:20b)。
安装前请注意
目录为只读且 SQL 写操作会被拒绝,但参考模型工具会把提示发送到 OLLAMA_BASE_URL 指向的端点,应确保其为可信的本地主机。README 的 HTTP 示例绑定 0.0.0.0,会把服务暴露到本机之外,建议改用 127.0.0.1。数据来自仓库内的种子文件,结果反映该数据集而非实时频谱数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mellow Tapir Radio Spectrum Guide,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Tapir MCP Server

This directory contains an MCP server with both stdio and streamable HTTP transports. The server uses data from src/tapir_schema/seed.json and source schema text from src/tapir_schema/schema.sql, then serves a read-only SQLite catalog.

Python environment

Use the existing local virtual environment:

bash
cd src/tapir_mcp_server./venv/bin/python -m pip install -r requirements.txt

Build the SQLite database

bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_server./venv/bin/python -m mcp_server.build_db \  --db-path data/tapir.sqlite \  --seed-path ../tapir_schema/seed.json \  --schema-path ../tapir_schema/schema.sql

Run in stdio mode

bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_serverTAPIR_DB_PATH=data/tapir.sqlite \TAPIR_SEED_PATH=../tapir_schema/seed.json \TAPIR_SCHEMA_PATH=../tapir_schema/schema.sql \./venv/bin/python -m mcp_server --transport stdio

Run in HTTP mode

bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_serverTAPIR_DB_PATH=data/tapir.sqlite \TAPIR_SEED_PATH=../tapir_schema/seed.json \TAPIR_SCHEMA_PATH=../tapir_schema/schema.sql \REFERENCE_LLM_MODEL=gpt-oss:20b \OLLAMA_BASE_URL=http://127.0.0.1:11434 \./venv/bin/python -m mcp_server \  --transport http --host 0.0.0.0 --port 8000 --path /mcp

Local testing with Ollama gpt-oss:20b

Start Ollama and ensure the reference model is available:

bash
ollama serve

In another terminal:

bash
ollama pull gpt-oss:20bollama run gpt-oss:20b "Summarize the purpose of this MCP server in one sentence."

Run the MCP server with the same local Ollama endpoint:

bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_serverTAPIR_DB_PATH=data/tapir.sqlite \TAPIR_SEED_PATH=../tapir_schema/seed.json \TAPIR_SCHEMA_PATH=../tapir_schema/schema.sql \REFERENCE_LLM_MODEL=gpt-oss:20b \OLLAMA_BASE_URL=http://127.0.0.1:11434 \./venv/bin/python -m mcp_server --transport http --host 127.0.0.1 --port 8000 --path /mcp

When connected with an MCP client, call ask_reference_model with a test prompt. If Ollama is reachable and the model is present, the tool returns a response body and metadata including model and done status.

Sample local MCP session (with Ollama)

This sample session verifies end-to-end behavior:

  1. Build or refresh the SQLite catalog.
  2. Start Ollama and pull gpt-oss:20b.
  3. Start the MCP server over HTTP.
  4. Connect with a client and call tools.

Terminal 1: start Ollama

bash
ollama serve

Terminal 2: pull model and optional sanity prompt

bash
ollama pull gpt-oss:20bollama run gpt-oss:20b "Reply with: Ollama ready"

Terminal 3: start Tapir MCP server

bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_server./venv/bin/python -m mcp_server.build_db \  --db-path data/tapir.sqlite \  --seed-path ../tapir_schema/seed.json \  --schema-path ../tapir_schema/schema.sql
TAPIR_DB_PATH=data/tapir.sqlite \TAPIR_SEED_PATH=../tapir_schema/seed.json \TAPIR_SCHEMA_PATH=../tapir_schema/schema.sql \REFERENCE_LLM_MODEL=gpt-oss:20b \OLLAMA_BASE_URL=http://127.0.0.1:11434 \./venv/bin/python -m mcp_server --transport http --host 127.0.0.1 --port 8000 --path /mcp

Terminal 4: sample client requests

bash
cd /Users/gsc/github/mellow-tapir/Users/gsc/github/mellow-tapir/src/tapir_mcp_server/venv/bin/python - <<'PY'import anyiofrom mcp.client.session import ClientSessionfrom mcp.client.streamable_http import streamable_http_client

async def main() -> None:    async with streamable_http_client("http://127.0.0.1:8000/mcp") as (        read_stream,        write_stream,    ):        session = ClientSession(read_stream, write_stream)        async with session:            await session.initialize()
            classify = await session.call_tool(                "classify_frequency", {"frequency": "121.5"}            )            print("classify_frequency:")            print(classify.content[0].text)
            llm = await session.call_tool(                "ask_reference_model",                {                    "prompt": "Explain 121.5 MHz in one sentence.",                    "temperature": 0.1,                },            )            print("ask_reference_model:")            print(llm.content[0].text)

anyio.run(main)PY

Expected outcome:

  • classify_frequency returns aviation emergency channel data around 121.5 MHz.
  • ask_reference_model returns a completion from local Ollama model gpt-oss:20b.

Available tools

  • classify_frequency
    • Purpose: classify a single frequency into matching bands and exact known channels.
    • Input: frequency as numeric Hz, MHz string (121.5), or explicit unit (121.5MHz).
    • Output: frequency metadata, channel matches, and band matches with emissions.
  • query_channels
    • Purpose: list known channels in a frequency range.
    • Input: lower_hz, upper_hz, optional limit.
    • Output: ordered channel rows with labels, services, and emissions.
  • search_services
    • Purpose: text search across service names and use names.
    • Input: service_query, optional limit.
    • Output: matching service/use combinations with range summaries.
  • execute_readonly_sql
    • Purpose: ad hoc read-only analysis over the SQLite catalog.
    • Input: SQL SELECT or WITH query and optional limit.
    • Output: column list, row list, and row count.
    • Guardrails: write operations are rejected.
  • ask_reference_model
    • Purpose: query local reference LLM through Ollama.
    • Input: prompt, optional system_prompt, optional temperature.
    • Output: model response text and completion metadata.
    • Default model: gpt-oss:20b (override with REFERENCE_LLM_MODEL).

Available resources

  • tapir://metadata
  • tapir://sources/seed-json
  • tapir://sources/schema-sql

Docker

Build locally:

bash
cd /Users/gsc/github/mellow-tapirdocker build -f src/tapir_mcp_server/Dockerfile -t tapir-mcp:local .

Run:

bash
docker run --rm -p 8080:8080 \  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \  tapir-mcp:local

The GitHub Actions workflow in .github/workflows/tapir-mcp-server-image.yml publishes images to GitHub Container Registry.

SQLite data lineage and refresh

The SQLite database in data/tapir.sqlite is generated from two source files:

  • src/tapir_schema/seed.json: canonical editable catalog of bands, emissions, and channels.
  • src/tapir_schema/schema.sql: source PostgreSQL schema retained for provenance and parity checks.

Generation is handled by mcp_server.build_db, which:

  • creates SQLite tables (band, band_emission, channel, dataset_metadata),
  • reloads records from seed.json,
  • stores source provenance metadata (including source paths and schema SQL text),
  • produces a read-ready file used in read-only mode by the MCP server.

When updating the dataset in the future:

  1. Edit src/tapir_schema/seed.json.
  2. Optionally update src/tapir_schema/schema.sql if source-schema intent changed.
  3. Rebuild SQLite:
bash
cd /Users/gsc/github/mellow-tapir/src/tapir_mcp_server./venv/bin/python -m mcp_server.build_db \  --db-path data/tapir.sqlite \  --seed-path ../tapir_schema/seed.json \  --schema-path ../tapir_schema/schema.sql
  1. Restart the MCP server so it uses the refreshed SQLite file.

The container image build also runs this same build step during docker build, so image contents stay aligned with the latest checked-in seed.json and schema.sql.

来源:src/tapir_mcp_server/README.md,提交 629c3be

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.2最新Sep 22, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Mellow 集成