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 整合