subspace-api について
subspace-api は subtype.space と TRMNL ユーザー向けの Express API および MCP サーバーです。README では TRMNL プラグインサービス、OAuth 設定、地下鉄・フライト追跡プラグインに必要な設定を説明しています。
主な機能
- 01TRMNL プラグイン向けサービス
- 02Docker または手動ビルド
- 03TRMNL OAuth 認証情報の設定
- 04地下鉄プラグイン用 WMATA 設定
- 05フライト追跡プラグインの設定
活用シーン
- 01TRMNL プラグインサービスのデプロイ
- 02地下鉄の到着予測と運行情報の設定
- 03フライト追跡プラグインの設定
MCP 対応
入力では MCP サーバーとされていますが、MCP クライアントに提供する具体的なツールやリソースは記載されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
subspace-trmnl
subspace-trmnl は、subtype が作成した TRMNL プラグインを実行するサービスです。
このサービスは、すべての TRMNL デバイス所有者に無料で提供されています。
はじめに
Docker を使用する場合(できれば compose)
独自のイメージをビルドする
docker compose build && docker compose up -d
安定版リリースからプルする
docker compose pull && docker compose up -d
手動でビルドする
npm run build && npm run start
環境変数
コア(任意)
| 環境変数 | デフォルト | 目的 |
|---|---|---|
PORT | 9595 | サーバーがリッスンするポート |
LOG_LEVEL | info | ログの詳細度(debug、info、warn、error) |
ACTIVE_VERSION | v1 | API のバージョンプレフィックス(実装は未完了) |
TZ | - | ログのタイムスタンプに使用するコンテナーのタイムゾーン(例:America/New_York) |
PUBLIC_BASE_URL | - | 静的リソースを配信するための絶対 URL の生成に使用 |
TRMNL プラグインの設定
TRMNL プラグイン(metro または flight tracker)を実行する場合は、以下が必要です。
| 環境変数 | 必須 | 目的 |
|---|---|---|
TRMNL_CLIENT_ID | はい | TRMNL がプラグイン用に提供する OAuth 2.0 クライアント ID |
TRMNL_CLIENT_SECRET | はい | TRMNL_CLIENT_ID に対応する OAuth 2.0 クライアントシークレット |
WMATA_PRIMARY_KEY | metro プラグインの場合 | DC Metro の到着予測とインシデント情報を取得する WMATA API キー |
TRMNL_FLIGHTS_CLIENT_ID | flight プラグインの場合 | TRMNL flight tracker プラグイン用の OAuth 2.0 クライアント ID |
TRMNL_FLIGHTS_CLIENT_SECRET | flight プラグインの場合 | TRMNL_FLIGHTS_CLIENT_ID に対応する OAuth 2.0 クライアントシークレット |
AERODATABOX_API_KEY | flight プラグインの場合 | AeroDataBox 用の RapidAPI キー(リアルタイムのフライト状況データ) |
TRMNL_DB_PATH | いいえ | SQLite データベースファイルへのパス(デフォルト:./trmnl.sqlite) |
TRMNL_IP_ALLOW_PRIVATE | いいえ | true に設定すると、TRMNL worker の IP 許可リストチェックを回避します(ローカル開発に便利です) |
リリース
注:リリースは CLAUDE.md の指示に従うエージェントによって実施されます。タグの管理やクリーンアップも含めて任せる方が簡単です。
開発者による更新はすべて dev ブランチで行ってください。プルリクエストは、現在有効なバージョン(v1 など)に対して作成してください。有効なバージョンのブランチにマージした後、そのブランチにタグをプッシュしてリリースを「カット」する必要があります。
AI に関する開示
このプロジェクトの一部では、実装例の提供に Claude Code を活用しました。 コードベースの一部は、効率向上のための Claude Code による提案をもとにリファクタリングされました。 特に記載のない限り、コードベースの大部分は手作業で書かれています。OAuth 2.0 仕様の実装の一部では LLM の支援を受けました。 TRMNL Flight Tracker の計算ロジックの一部、および情報表示にも LLM の支援を受けましたが、何もないところから生成したわけではありません。
これらの LLM の出力の正確性、実装の詳細、方向性を確認する責任は subspace にあります。
付録
コードのスタイル(特にコメントのスタイル)は統一されていません。これは AI によるものではなく、Intellisense を使った怠慢と /** ドキュメントを楽しみすぎたことが原因です。
免責事項とフェアユース
この flight tracker には、さまざまな航空会社や航空事業者のロゴとバナーが含まれています。
フェアユースに関する通知: これらの画像は、それぞれの所有者(航空会社および事業者)の所有物です。ここでは、教育および識別のみを目的として提供しています(例:フライト追跡アプリケーションで航空会社を識別するため)。
- この使用は、非商用であり、変形的な利用(識別のために集約)で、所有者がブランドから利益を得る機会を妨げないため、著作権法上のフェアユースとみなされます。
- このリポジトリは、商標や著作物の所有権を主張しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。