Skip to main content
Glama
emsnicket

raptio-mcp

by emsnicket

免責事項: これは独立したコミュニティ構築のプロジェクトであり、 KegLand または RAPT.io とは提携しておらず、その承認も支援も受けていません。 RAPT、RaptPill、KegLand はそれぞれの所有者の商標であり、互換性を説明するためにのみここで言及されています。 本ソフトウェアは保証なしで現状のまま提供されます。正式な条件は LICENSE を参照してください。このライセンスには、このプロジェクトが サポートされていないサードパーティ API を使用することに関する追加の平易な免責事項も含まれます。

RAPT.io MCP Server

KegLand RAPT デバイス(Fermentation Chamber および RaptPill 比重計)を RAPT.io API 経由で監視・制御するための MCP(Model Context Protocol)サーバーです。

⚠️ デフォルトでは読み取り専用です。 RAPT.io API は、ほとんどの変更系操作に対してサポートされておらずドキュメントもありません(詳細は下記の セキュリティと API 利用に関する注意 を参照)。このサーバーは、オペレーターが RAPTIO_MCP_READ_ONLY=false で明示的にオプトインしない限り、RAPT.io API への POST リクエストをすべて拒否します。

機能

Fermentation Chamber(発酵槽)

  • すべての発酵槽を一覧表示

  • ステータスの取得(温度、加熱/冷却、PID、稼働時間)

  • テレメトリ履歴の取得

  • (当 RAPTIO_MCP_READ_ONLY=false) 目標温度の設定、PID の有効/無効化、PID パラメータの設定

RaptPill(比重計)

  • IRA のRaptPill を一覧表示

  • ステータス取得(比重、温度、バッテリー残量)

  • テレメトリ履歴の取得

全般

  • バインド済みデバイスの一覧表示

  • 発酵プロファイルの管理・表示

以前利用可能だった一部の制御ツール(加熱/冷却/ファン/ライトの切り替え、ヒステリシス、 コンプレッサー/モード切替遅延)は、関連する API エンドポイントの確認が完了するまで削除されています。詳細は 削除されたツール を参照してください。

Related MCP server: RAPT.io MCP Server

インストール

必要条件

  • Python 3.11 以上

  • uv (推奨)または pip

uv を使用

uv sync --frozen

pip を使用

pip install -e .

認証

このサーバーは、RAPT.io のユーザー名とAPI Secret(アカウントのパスワードではありません)を使用して RAPT.io API に認証します。

  1. RAPT Portal にログインします。

  2. My Account → API Secrets ページに移動します。

  3. Add API Secret をクリックし、値をすぐに記録します。値はサーバーサイドでハッシュ化され、後から再取得することはできません。

RAPT_API_SECRET には実際のアカウントパスワードを使用しないでください。API Secret は独立して失効させることができる認証情報です。漏洩した場合でも、実際のアカウントログインに触らわずにポータルからローテーションできます。

設定

次の環境変数を設定します。

変数

必須

デフォルト

説明

RAPT_USERNAME

必須

—

RAPT.io アカウントのメールアドレス

RAPT_API_SECRET

必須

—

app.rapt.io/account/apisecrets で生成されたAPI Secret

RAPTIO_MCP_AUTH_TOKEN

必須

—

MCP クライアントが Authorization: Bearer <token> として送信する必要がある共通シークレットベアラートークン

RAPTIO_MCP_READ_ONLY

任意

true

true(デフォルト)の場合、すべての変更を伴う(set_*)ツール呼び出しは RAPT.io API に到達する前に拒否されます。false にすると、文書化された変更系エンドポイントを許可します(セキュリティ & API 使用の注意 参照)

RAPTIO_MCP_ALLOWED_HOSTS

推奨

(未設定 — 検証無効)

許可する Host ヘッダーのカンマ区切りリスト(DNS リバインディング保護)

RAPTIO_MCP_ALLOWED_ORIGINS

推奨

(未設定 — 検証無効)

許可する Origin ヘッダーのカンマ区切りリスト

RAPTIO_MCP_HOST

任意

0.0.0.0

バインドアドレス

RAPTIO_MCP_PORT

任意

8000

バインドポート

RAPTIO_MCP_LOG_LEVEL

任意

INFO

Python のログレベル

使用法

直接実行(Streamable HTTP)

RAPT_USERNAME="you@example.com" \
RAPT_API_SECRET="your-api-secret" \
RAPTIO_MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
  uv run raptio-mcp

サーバーは http://<RAPTIO_MCP_HOST>:<RAPTIO_MCP_PORT>/mcp で待機します(Streamable HTTP トランスポート、ステートレス、JSON レスポンス)。/mcp へのリクエストには上記のベアラートークンが必須です。/healthz は認証不要で、オーケストレータの liveness/readiness プローブを目的としています。

MCP クライアントの接続

MCP クライアントに Streamable HTTP トランスポートを使用するよう設定します。例:

claude mcp add --transport http raptio http://localhost:8000/mcp \
  --header "Authorization: Bearer <your RAPTIO_MCP_AUTH_TOKEN>"

このサーバーの以前のバージョンでは、stdio トランスポート(Claude Desktop/Claude Code でのローカルサブプロセス用)を使用していました。0.2.0 以降、サーバーは Streamable HTTP 上でのみ実行され、上記のベアラートークンが必要です。プロセス権限に基づく暗黙の信頼境界はもはや存在しないため、認証が必須となります。

利用可能なツール

ツール

説明

モード

get_bonded_devices

バインド済みデバイスをすべて一覧表示

読み取り専用

get_bonded_device

単一デバイスを取得

読み取り専用

get_bonded_device_telemetry

デバイスのテレメトリを取得

読み取り専用

get_fermentation_chambers

全発酵槽を一覧表示

読み取り専用

get_fermentation_chamber

発酵槽のステータスを取得

読み取り専用

get_fermentation_chamber_telemetry

発酵槽の温度履歴を取得

読み取り専用

set_fermentation_chamber_temperature

目標温度を設定

変更 — RAPTIO_MCP_READ_ONLY=false が必要

set_fermentation_chamber_pid_enabled

PID制御の有効/無効を設定

変更 — RAPTIO_MCP_READ_ONLY=false が必要

set_fermentation_chamber_pid

PID パラメータを設定

変更 — RAPTIO_MCP_READ_ONLY=false が必要

get_hydrometers

すべての RaptPill を一覧表示

読み取り専用

get_hydrometer

RaptPill のステータスを取得

読み取り専用

get_hydrometer_telemetry

比重/温度の履歴を取得

読み取り専用

get_profiles

すべての発酵プロファイルを一覧表示

読み取り専用

get_profile

プロファイルの詳細を取得

読み取り専用

get_profile_types

利用可能なプロファイルタイプを一覧表示

読み取り専用

RAPTIO_MCP_READ_ONLY=true(デフォルト)の間、3つの変更系ツールは引き続き一覧表示されます(スキーマが発見可能のため)が、RAPT.io API に到達せずにすべての呼び出しが明示的なエラーを返します。

削除されたツール

次のツールは以前のバージョンに存在しましたが、検証待ちで削除されています:

  • set_fermentation_chamber_heating_enabled

  • set_fermentation_chamber_cooling_enabled

  • set_fermentation_chamber_fan_enabled

  • set_fermentation_chamber_light_enabled

  • set_fermentation_chamber_cooling_hysteresis

  • set_fermentation_chamber_heating_hysteresis

  • set_fermentation_chamber_compressor_delay

  • set_fermentation_chamber_mode_switch_delay

これらはすべて POST /api/FermentationChambers/UpdateFermentationChamber に依存していました。このエンドポイントは、RAPT.io が公開している API 仕様(https://api.rapt.io/swagger/v1/swagger.json)には存在現されず、分離された並行実行動作もありません。これらが再導入されるのは、そのエンドポイントの存在と安全性が実在のアカウントで確認された後にのみです。さらに、set_fermentation_chamber_light_enabled は以前、正しい AlwaysOn/AlwaysOff/Automatic ではなく On/Off/Auto という誤った enum 値を送信していたため、再導入前にその修正も必要です。

セキュリティ & API 利用上の注意

RAPT.io の公開 API は KegLand によって明示的にサポートされていないと説明されています:

「API へのアクセスはサポートされていません。つまり、API の使用中に発生した問題について KegLand からの支援を得ることはできません。API の誤使用によりデバイスを破壊した場合、保証は無効になります。また、API(エンドポイント、パラメータ、レスポンスモデルなど)は予告なく変更される可能性があります。」 — https://docs.rapt.io/integrations/api-secrets

これをを踏まえ、サーバーはデフォルトで保守的な姿勢を取ります:

  • デフォルトで読み取り専用(RAPTIO_MCP_READ_ONLY=true)— 明示的に有効にしない限り、デバイスの状態を変更する可能性のあるリクエストは一切送信されません。

  • 公式に文書化されたエンドポイントのみ変更操作に使用される — SetTargetTemperature、SetPIDEnabled、SetPID — いずれも RAPT.io の公開 Swagger 仕様に存在することを確認済みです。

  • 非文書化エンドポイントは使用しません — 削除されたツール を参照。

  • HTTP トランスポートでは認証が必須(RAPTIO_MCP_AUTH_TOKEN)— Streamable HTTP によって、以前の stdio サブプロセスモデルが暗黙の支信頼境界を排除するため。

  • すべての変更ツール呼び出しは監査ログに記録 — ツール名、引数、結果がサーバーの構造化ログに記録されます。

RAPTIO_MCP_READ_ONLY=false を設定する場合、KegLand が予告なく変更したり制限したりする可能性のある API を介して、物理的な醸造・発酵ハードウェアにコマンドを送信することを選択したことになります。その使用によって結果として生じる損害やアカウント制限は、上記の KegLand の規約に従って、お客様の責任になります。

認証フローの詳細

内部的には、サーバーは RAPT_USERNAME と RAPT_API_SECRET を、RAPT.io の文書化されたフローに従い、https://id.rapt.io/connect/token に対して OAuth2 Resource Owner Password Credentials grant を使用し、有効期間の短いベアラートークンと交換します。トークンはメモリ内にキャッシュされ、有効期限の約30秒前に自動的に更新されます。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for interacting with Fireboard BBQ temperature monitoring. Enables querying devices, live probe temperatures, Drive fan controller status, and historical cook sessions.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables monitoring and controlling KegLand RAPT fermentation chambers and RaptPill hydrometers through the RAPT.io API, including temperature control, PID configuration, and telemetry retrieval.
    23
    MIT