ChatGPT Plugin
Sinter ChatGPT Plugin を使うと、ChatGPT から ご自身の Sinter 環境にある read-only の MCP tool(recipe の検証・構造確認・plan、名前付き SSH target の plan / audit)を呼び出せます。
ChatGPT → Sinter Plugin(HTTPS 上の MCP、OAuth サインイン) → 公開 Sinter Gateway https://gateway.fulltrust.co.jp/mcp → あなたのアカウントの controller(サインイントークン内のアカウントで照合) → あなたの sinter-bridge(あなたのマシンで動作、外向き HTTPS のみ) → あなたのローカル `sinter mcp`(read-only tool、名前付き target へ SSH)- Gateway は Fulltrust が運用する共用の公開中継です。ChatGPT からの リクエストを OAuth access token で認証し、あなたのアカウントに登録された controller へ MCP リクエストを転送します。Gateway はあなたの Sinter ホスト ではありません。Sinter を実行せず、SSH 設定を持たず、あなたのサーバーへ 接続もしません。
- sinter-bridge はあなたのマシンで動作します。外向き HTTPS で Gateway を
long-poll し(待ち受けポートなし・受信方向の firewall 変更不要)、各リクエストを
ローカルの
sinter mcp子プロセスへ渡して結果を返します。 sinter mcpはあなたの権限でローカルに動作します。ホストへのアクセスは、 あなた自身の targets ファイルにある名前付き target を通じてのみ行われます。
| 項目 | 内容 |
|---|---|
| Sinter | v0.5.1 以降(sinter mcp)。インストール参照 |
| sinter-bridge | 本リポジトリの gateway/ crate からビルド(リリースアーカイブには未同梱)。Rust toolchain が必要 |
| bridge ホスト | Linux x86_64(リリースアーカイブ)、または Sinter をソースからビルドする他の Unix 系マシン(例: macOS)。https://gateway.fulltrust.co.jp へ外向き HTTPS(443)で到達でき、Plugin 利用中は起動し続けていること |
| ChatGPT | apps / plugins を利用できる ChatGPT プラン。プレビュー期間中はアプリ追加に developer mode が必要 |
| サインインアカウント | 運用者によって Sinter アカウントの対応付けが設定されたアカウント |
| 任意 | sinter_plan_host / sinter_audit_host を使う場合は targets ファイル(--targets-file 形式) |
クイックスタート
Section titled “クイックスタート”-
Sinter をインストール(v0.5.1 以降)。Linux x86_64 の場合:
ターミナルウィンドウ curl -fsSL https://sinter.fulltrust.co.jp/install.sh | sh$HOME/.local/bin/sinter --versionインストーラーは Linux x86_64 のみ対応です。それ以外(例: macOS)では、 手順 2 で clone したリポジトリのルートで
cargo build --releaseを実行して Sinter をビルドしてください(binary:target/release/sinter)。 -
sinter-bridge をビルド:
ターミナルウィンドウ git clone https://github.com/hagix9/sinter.gitcd sinter/gatewaycargo build --release --bin sinter-bridge# binary: gateway/target/release/sinter-bridge(以降のコマンドは sinter/gateway で実行) -
利用を申請。Fulltrust お問い合わせフォーム から、お問い合わせ内容に 「Sinter利用希望」と記載してご連絡ください(サーバー情報・認証情報・トークンは 記載しないでください)。運用者がサインインアカウントを作成し、そのサインイン情報と、 別途 1 回限りの registration token をお送りします。token の有効期限は 15 分、 使用は 1 回だけです。期限切れの場合は再発行を依頼してください。
-
bridge を登録(
registerは 1 回だけ実行してください。token を消費します)。 token はコマンドライン引数ではなく標準入力から読み込まれ、標準出力には credential だけが出力されます:ターミナルウィンドウ mkdir -p ~/.config/sinter && umask 077SINTER_BRIDGE_GATEWAY_URL=https://gateway.fulltrust.co.jp \./target/release/sinter-bridge register > ~/.config/sinter/bridge.cred# プロンプトに registration token を貼り付けるchmod 600 ~/.config/sinter/bridge.cred -
bridge を起動:
ターミナルウィンドウ export SINTER_BRIDGE_GATEWAY_URL=https://gateway.fulltrust.co.jpexport SINTER_BRIDGE_CREDENTIAL_FILE=~/.config/sinter/bridge.cred# 任意: export SINTER_BRIDGE_SINTER_BIN=/path/to/sinter (既定: PATH 上の sinter)# 任意: export SINTER_BRIDGE_TARGETS_FILE=~/.config/sinter/targets.toml./target/release/sinter-bridge --check # 設定と子プロセス起動を検証し "ok" を表示./target/release/sinter-bridge # "bridge polling https://gateway.fulltrust.co.jp/" を出力 -
ChatGPT にアプリを追加(プレビュー期間中は developer mode):
- MCP サーバーの URL:
https://gateway.fulltrust.co.jp/mcp - 認証: OAuth
- MCP サーバーの URL:
-
ChatGPT がサインイン画面を開いたら サインイン し、アクセスを許可します。
-
動作確認: 新しいチャットで Sinter アプリにバージョンを尋ねます(例参照)。
Sinter のバージョンを教えて
ChatGPT は sinter_get_version を呼び出し、あなたの bridge がローカルの
Sinter から応答します。例: {"name":"sinter","readOnly":true,"version":"0.5.1"}
その他の read-only な例:
- 「この Sinter recipe を検証して」(YAML/TOML を貼り付け)→
sinter_validate_manifest - 「この recipe を rocky9 で plan して」→
sinter_plan(supplied-facts スナップショット、ホスト接続なし) - 「Sinter の target 一覧を見せて」→
sinter_list_targets - 「web01 をこの recipe で audit して」→
sinter_audit_host(targets ファイル内の名前付き target)
Tool と権限
Section titled “Tool と権限”すべての tool は read-only です。apply・install・コマンド実行の tool はありません。
すべての tool に readOnlyHint: true、destructiveHint: false、
openWorldHint: false の annotation が付いています。
| Tool | 内容 |
|---|---|
sinter_get_version |
Sinter のバージョンと read-only 宣言 |
sinter_classify_platform |
/etc/os-release の内容を分類 |
sinter_validate_manifest |
recipe テキストを検証 |
sinter_inspect_manifest |
recipe の構造要約(値は返さない) |
sinter_plan |
組み込みの supplied-facts スナップショットに対する plan(SSH なし) |
sinter_list_targets |
設定済み target の名前(接続情報は返さない) |
sinter_plan_host |
名前付き target に対する read-only な plan |
sinter_audit_host |
名前付き target の read-only な audit |
sinter_get_profile |
Gateway が追加。アカウント ID(サインイントークンに含まれる場合は名前・メール)を返し、ChatGPT が接続を識別できるようにする |
MCP の recipe はインライン内容のみ受け付けます(include: / source: は拒否)。
そのため recipe を通じてあなたのマシン上のファイルを読むことはできません。
Core MCP を参照してください。
bridge を起動し続ける
Section titled “bridge を起動し続ける”Plugin を使う間は bridge が起動している必要があります。停止すると、最後の poll から
約 130 秒後に tool 呼び出しが controller_offline で失敗します。
-
フォアグラウンド: ターミナルで
sinter-bridgeを実行します。Gateway に到達 できない場合はバックオフ(1 秒から倍増、最大 60 秒)で再接続し、sinter mcp子プロセスは 5 分間に最大 5 回まで再起動します。 -
systemd(Linux): リポジトリの
gateway/contrib/systemd/に user unit と 環境変数テンプレートがあります。sinter/gatewayディレクトリで:ターミナルウィンドウ install -D -m 755 target/release/sinter-bridge ~/.local/bin/sinter-bridgeinstall -D -m 644 contrib/systemd/sinter-bridge.service ~/.config/systemd/user/sinter-bridge.serviceinstall -D -m 600 contrib/systemd/bridge.env.example ~/.config/sinter/bridge.env# ~/.config/sinter/bridge.env の /home/USER をご自身のホームディレクトリに置き換えるsystemctl --user daemon-reloadsystemctl --user enable --now sinter-bridgeloginctl enable-linger "$USER" # ログアウト後・起動時も継続journalctl --user -u sinter-bridge -f # "bridge polling …" を確認bridge.envには絶対パスを記述してください。systemd はこのファイル内の~を 展開せず、user service のPATHには~/.local/binが含まれないため、SINTER_BRIDGE_SINTER_BINでsinterbinary を明示します。systemctl --user stop sinter-bridgeで正常停止し、異常終了時は 10 秒後に 再起動されます。上の
systemctl --user daemon-reloadは bridge ホスト上での手動の手順です。 Sinter が管理するのは systemd のシステムマネージャのみで、ユーザーマネージャを 管理することはありません。 -
launchd(macOS): launchd 定義は提供していません。フォアグラウンドで実行して ください。スリープ・ログアウト・再起動で停止します。
トラブルシューティング
Section titled “トラブルシューティング”| 症状 | 原因と対処 |
|---|---|
tool 呼び出しが controller_offline / “no controller for account” で失敗 |
bridge が起動していないか、約 130 秒以上 poll していません。起動してログに bridge polling … が出ることを確認してください。 |
bridge が controller authentication failed — retrying every 300s を出力 |
credential が失効しているか誤っています。運用者に新しい registration token を依頼して再登録してください。 |
register rejected: HTTP 410 / 409 / 401 |
410: registration token の期限切れ(15 分)。409: 使用済み、またはあなたのアカウントに有効な bridge が既にある(運用者による旧 bridge の失効が必要)。401: token が無効。運用者に新しい token を依頼してください。 |
| ChatGPT でサインインに失敗する(OAuth エラー / アクセス拒否) | サインインアカウントに Sinter アカウントの対応付けがまだありません。運用者に依頼してください。 |
| 「Authentication succeeded, action discovery failed」 | サインインは成功したが tool を一覧できませんでした。多くの場合 bridge が停止中(上記)か、Gateway に到達できません。 |
| 以前は動いたが、再サインインを求められる / ツールを更新できない | access token が期限切れで更新できませんでした。ChatGPT でアプリを切断して再接続し、再度サインインしてください。 |
tool 呼び出しが account_unbound(HTTP 403)を返す |
サインイントークンに Sinter アカウントの対応付けがありません。運用者に依頼してください。 |
| Gateway に到達できない、DNS / TLS エラー | bridge ホストから curl -sS https://gateway.fulltrust.co.jp/healthz が HTTP 200 を返すか確認してください。社内プロキシではこのホストへの外向き HTTPS の許可が必要です。 |
sinter_plan_host / sinter_audit_host で target が見つからない |
target 名が SINTER_BRIDGE_TARGETS_FILE にありません。sinter_list_targets で名前を確認してください。 |
| ホストで permission denied | bridge ホストからあなた自身の認証情報で target へ SSH できませんでした。同じ target を sinter CLI で確認してください。 |
| credential ファイルの警告 “group/world-accessible” | chmod 600 ~/.config/sinter/bridge.cred を実行してください。 |
セキュリティとプライバシー
Section titled “セキュリティとプライバシー”- 通信: ChatGPT ↔ Gateway は HTTPS(Let’s Encrypt の TLS 証明書)です。 bridge ↔ Gateway も HTTPS のみで、リダイレクトは無効化されているため、bridge の credential は設定した Gateway オリジンにしか送られません。
- 認証: すべての MCP リクエストに OAuth access token が必要です。Gateway は 署名(固定 JWKS、RS256/ES256)、issuer、audience、有効期限、Sinter アカウント claim を検証します。有効な token がなければ HTTP 401、アカウント対応付けの ない token は 403 になります。
- アカウント分離: リクエストは token 内のアカウントに登録された controller に のみ配送されます。1 アカウントにつき有効な controller は 1 つです。
- Gateway が保存するもの: アカウント ID、controller ID、registration token と controller credential の SHA-256 ハッシュ、登録 / 失効の監査イベント。OAuth token、 平文の bridge credential、MCP リクエスト / レスポンスの内容は保存しません。
- Gateway を通過するもの: ChatGPT からの MCP リクエストと、あなたの Sinter の 結果(例: 貼り付けた recipe テキスト、target に関する plan / audit 結果)。これらは メモリ上で中継され、ChatGPT にも届きます。送信する recipe に秘密情報を含めない でください。
- ログ: 公開 Gateway のアクセスログには method、path(クエリなし)、status、 サイズ、処理時間が記録され、header とクライアント IP は削除されます。Gateway の サービスログにはアカウント・controller・リクエストの ID と status code が記録され、 token やペイロードは記録されません。
- credential: bridge の credential はあなたのマシンにのみ保存されます。
chmod 600を維持してください。運用者はいつでも失効できます。 - read-only: どの tool もあなたのシステムを変更しません。Sinter 自身の安全規則 (MCP recipe はインラインのみ、名前付き target のみ)も引き続き適用されます。