GuildControl MCP について
GuildControl MCPは、運営者が管理するボットを通じてDiscordサーバーを管理するためのローカルstdioサーバーです。アクセス範囲を限定し、プライバシーに配慮した読み取りと、レビュー可能で検証できる変更を重視します。
主な機能
- 01サーバーとユーザーのアクセス範囲を明示
- 02Discordの読み取り結果をプライバシー配慮で最小化
- 03署名付き承認による書き込みレビュー
- 04IDやジャンプリンクによる正確な指定
- 05内容を含まない証拠と結果の検証
- 06対話型セットアップとホストアダプター
活用シーン
- 01読み取り専用ボットでチャンネルを一覧表示
- 02サーバーのロールと権限を監査
- 03管理変更を実行前にレビュー
- 04設定済みボットをMCPホストに接続
MCP 対応
GuildControlはローカルstdio MCPサーバーで、運営者所有のボットを介してDiscordサーバーと、個別に許可された1対1アクセスを提供します。ツール、リソース、プロンプト、ワークフローはプロジェクトのリファレンスに記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GuildControl MCP
GuildControl MCP は、オペレーターが所有するボットを通じて、Discord サーバーへの安全なアクセスと、別途許可リストに登録された 1 対 1 のアクセスを提供する、ローカル stdio Model Context Protocol サーバーです。幅広い型付き機能を、厳密なスコープ、プライバシーを最小限に抑えた結果、レビュー済みの書き込み、コンテンツを含まない証跡、明示的な曖昧さへの対処と組み合わせています。
最小権限。変更前にレビュー。検証可能な結果。Discord のコンテンツは永続化しません。
ドキュメントポータル | 検証済み製品ツアー | 検証済みの読み取りを実行 | 安全性と使いやすさに関する判断 | 別の MCP からの移行 | 適合性と境界 | 比較 | 完全なリファレンス | プライバシー | セキュリティ
GuildControl は独立したプロジェクトであり、Discord Inc. との提携や同社による推奨を受けていません。Discord は、GuildControl の接続先となるプラットフォームを識別する目的でのみ使用しています。
このコネクターを選ぶ理由
| 懸念事項 | 適用される動作 |
|---|---|
| Discord へのアクセス範囲 | 検証済みのアプリケーション ID とボット ID、明示的なサーバーおよびチャンネルのスコープ、別個の厳密なユーザー指定によるプライベートメッセージのスコープ、リスク別のツールセット、読み取り専用のセットアッププリセットを備えた、秘密情報を含まない単一の厳格なポリシーファイル |
| 正確な対象指定 | 正規の Discord ジャンプリンクと公式の型付きメンションを、名前検索、Discord への接続、入力のエコー、永続化、下流への権限付与を伴わずに、ローカルで正確な ID に変換 |
| 読み取りの安全性 | 上限付きリクエスト、安全な一時的 GET 再試行、結果全体を対象とするロスレスなバイト予算、厳格なレスポンス検証、プライバシー階層化された射影、信頼できないコンテンツへの対処、呼び出し元が保持するキャッチアップ、ローカルファイルに永続化しない正確な添付ファイルの読み取り、プライベートチャンネルの検出なし、明示的に検証された親スレッドからのみ権限を継承 |
| 書き込みの安全性 | 正確な ID を指定するリクエスト、実行を優先するキー付き計画、署名付き対話型承認、実行直前の最新計画との照合、アクションごとに Discord の権限を証明 |
| 結果の完全性 | 保留中のコンテンツを含まない証跡、書き込みの再試行なし、正確な読み戻し、永続的な調整処理、曖昧な結果の隔離、無効なリクエストによる負荷のローカルでの制限 |
| プライバシー | トークンは呼び出し元が所有するシークレットソースに保持し、Discord のコンテンツ、プロフィール、URL、監査理由、未加工の操作キーは永続化しない |
| 計画のレビュー | 完全な証跡、MCP App による表示、権限を持たないローカルのブループリントプレビュー |
| リリースの完全性 | 依存関係とベースイメージの厳密なピン留め、認証情報を含まないコントラクトフィンガープリント、再現可能な npm および MCPB 成果物、強化された OCI チェック、埋め込みおよび外部の SPDX 証跡、署名付きリリースの自動化、ソースに紐付いた公開ドキュメント |
セットアップと復旧には、最初の検証済み読み取りガイドを使用してください。認証情報の管理、プライバシー、承認、復旧のモデルを採用する前に、製品の境界とホストとの互換性をお読みください。完全なリファレンスでは、すべてのポリシー、ツール、権限、リソース、プロンプト、コマンド、ワークフローの制限について説明しています。
クイックスタート
最も手早くサポートされている方法は、オーナーが管理する読み取り専用ボット、秘密情報を含まない厳格なポリシーを 1 つ、プライベートホストガイドを 1 つ用意し、チャンネル一覧の取得に成功することです。Node.js 22 以降、管理する Discord サーバーでの Manage Server 権限、ローカルの stdio MCP ホストが必要です。GuildControl は共有ボット、リレー、トークンストアを提供しません。
ガイド付きセットアップ:ここから始めましょう
Discord Developer Portalでアプリケーションとボットを作成し、Discordで開発者モードを有効にして、Application IDと対象のServer IDをコピーします。その後、次を実行します。
npx guildctl
npx guildctlを実行すると、対話形式のオンボーディングが始まります。ホストの選択、最小構成のserver-observerポリシーの作成または厳密な再検証、ボットとMCPのライブ検証、非公開の有効化ガイドが行われます。設定の不整合がある場合は安全のため処理を中断し、トークンを保存せず、メッセージ内容を読み取らず、書き込みを有効にせず、ホストのパスを検出せず、ホストの設定を編集しません。
結果には認証情報の受け渡し方法が示されます。スモークテストの後、1回限りのプロンプトは消去されます。認証情報の管理と復旧については、最初の検証済み読み取りガイドを参照してください。
任意のguildctl host detectは、パスのメタデータのみを確認します。onboard --detect-hostは候補を1つ選択します。候補が複数ある場合は、選択が必要です。検出時に候補の内容や認証情報を読み取ることはありません。
無人セットアップを行う場合は、すべての公開設定と既存のシークレット参照を指定します。
npx --yes [email protected] onboard \
--host codex \
--application-id YOUR_APPLICATION_ID \
--guild-id YOUR_GUILD_ID \
--config /absolute/private/guildcontrol.json \
--confirm-installed YOUR_GUILD_ID \
--token-env DISCORD_BOT_TOKEN \
--json
JSONモードでは、プロンプトの表示やブラウザーの起動は行われません。最初の検証済み読み取りガイドでは、サポート対象のホスト、既定のパス、代替の認証情報管理方法、手動での手順、復旧方法について説明しています。
ボットにAdministrator権限を付与しないでください。読み取り専用のプリセットから初期権限の付与内容を正確に生成し、インストールしたボットのロールはカテゴリまたはチャンネルのオーバーライドを使って、さらに制限してください。ボットセットアップガイドでは、ボットの所有権、任意のインテント、後から機能ごとに追加する権限について説明しています。
任意の事前確認:認証情報なしで調べる
トークンやDiscordへのリクエストなしで、特定のリリースとその読み取り専用プリセットを確認します。
npx --yes [email protected] catalog --check
npx --yes [email protected] catalog --html ./guildcontrol-contract.html
npx --yes [email protected] preset show server-observer
catalog --checkは、認証情報を必要とせず、実行も無効化された本番環境の契約を検証します。検証対象には、すべてのツールに関する完全なセットアップおよび準備状況のメタデータも含まれます。catalog --html FILEは、外部アセット、ランタイムリクエスト、認証情報、設定済みの完了 ID を必要とせず、リリースに正確に対応した、ガイド付きで検索可能なオフラインエクスプローラーとして表示します。
別のDiscord MCPから切り替える
ポリシーの作成や既存のデプロイの変更を行う前に、リリースに正確に対応した完全な結果マップを生成します。
npx --yes [email protected] migrate list
npx --yes [email protected] migrate plan [email protected] --html ./guildcontrol-migration.html
移行ガイドでは、スコアリング対象となるすべての同等製品のリリースを扱っています。計画時にチェックアウトをスキャンしたり、設定、ホスト設定、環境値、認証情報を読み取ったり、ネットワークやDiscordのエンドポイントに接続したり、変更を加えたりすることはありません。監査対象のすべてのソースツールを、サポート対象、要確認、意図的に除外のいずれかに分類し、移行先のルートをネゴシエート済みの本番カタログに照らして検証します。プロンプト、引数、設定、認証情報、ホスト設定を書き換えることはありません。
自分で管理するボットをインストールする
Developer PortalでDiscordアプリケーションとボットを作成し、公開されているApplication IDと対象のServer IDをコピーします。次に、推奨プリセットに基づくギルドと最小権限の付与内容を設定した、コールバックなしのインストールリンクを生成します。
npx --yes [email protected] preset install server-observer \
--application-id YOUR_APPLICATION_ID \
--guild-id YOUR_GUILD_ID \
--html ./guildcontrol-onboarding.html
対象サーバーの管理が許可されているメンバーとしてサインインした状態で、出力されたURLを開きます。server-observerにはView Channelのみを要求し、サーバー選択欄は指定したIDに固定します。ユーザートークンを要求せず、ボットトークンをコネクターのコマンドに送信することもありません。他のユーザーにもアプリケーションをインストールしてもらう場合を除き、Public Botは無効のままにしてください。代わりにchannel-readerを使うと、View Channelに加えてRead Message Historyを要求します。また、そのプランでは推奨されるDeveloper PortalのインテントとしてMessage Contentも示されます。
任意の--html FILEを指定すると、決定論的な単独チェックリスト、コピー操作、明示的なDiscordナビゲーション、固定された後続コマンド、正確なプランの根拠が追加されます。トークン、外部アセット、バックグラウンドリクエスト、ブラウザー状態の保存、自動的なブラウザー起動、既存ファイルの上書きはありません。HTMLがなくても、ターミナルのプランだけで必要な情報をすべて確認できます。
最も安全な初回設定を作成する
正規のプロセス所有のプライベートディレクトリから、トークンをシークレットを扱える起動環境に保持し、正確なギルドを1つ検証し、シークレットを含まない完全なポリシーを1つのファイルに保存して、MCP の全経路をテストします。
export DISCORD_BOT_TOKEN
printf 'Discord bot token: '
read -r -s DISCORD_BOT_TOKEN
printf '\n'
npx --yes [email protected] setup \
--npx \
--config ./guildcontrol.json \
--preset server-observer \
--guild-id YOUR_GUILD_ID
npx --yes [email protected] host --npx --config ./guildcontrol.json --html ./guildcontrol-host-activation.html
PowerShell 7.1 以降では、トークンを表示したり、コマンド履歴に値を残したりせずに、現在のプロセスに読み込んでから、同じコマンドを実行します。
$env:DISCORD_BOT_TOKEN = Read-Host "Discord bot token" -MaskInput
PowerShell では、表示される複数行のシェルコマンドをそれぞれ1行に入力してください。npx の引数は変わりません。古い Windows PowerShell では、コマンド履歴にトークンを直接記述する代わりに、MCP ホストのシークレット機能または保護されたトークンファイルを使用してください。
起動元、コンテナーランタイム、またはオーケストレーターがトークンをファイルとしてマウントする場合は、代わりにその入力を選択してください。パスは絶対パスである必要があり、検証付きセットアップを行うにはファイルがすでに存在していなければなりません。また、--token-file は --token-env または環境変数 DISCORD_BOT_TOKEN と併用できません。
npx --yes [email protected] setup \
--npx \
--config ./guildcontrol.json \
--preset server-observer \
--guild-id YOUR_GUILD_ID \
--token-file /run/secrets/discord_bot_token
server-observer プリセットでは、書き込み、Gateway、テレメトリ、永続化、Message Content アクセスを有効にせずに、ギルドのメタデータ、ロール、権限診断、コネクターの状態、コンテンツを含まないアクティビティ、ツールの検出を利用できます。セットアップは初回の準備状況を確認するゲートです。厳格なポリシーを検証し、アプリケーションとボットを確認し、正確なギルドへのインストールを監査し、公開 ID と認証情報の参照を保存しますが、トークンは保存せず、起動記述子を出力します。意図的な確認が必要な、処理を妨げない警告が報告された場合でも、準備が整っていればセットアップは正常に終了します。route_discord_goal は、その後の検出、読み取り、確認済みの計画を安全に振り分けますが、変更は行いません。また、オペレーターに作成を求めることなく、管理用キーを自ら作成します。
バージョン管理されたファイルが唯一のポリシー境界です。ID、明示的な読み取りモード、型付きの再利用可能な正確な ID グループ、通知とスレッドの動作、ツール、機能、スコープ、制限、ストレージ、Gateway、ランタイム、可観測性を定義します。一般的なデプロイでは、JSON ポリシーが1つと、外部のボットトークンシークレットが1つあります。JSON Schema、config show、config explain を使えば、シークレットを含めずに内容を確認できます。管理対象のプロファイルでも、同じドキュメントを使用します。
運用コマンドでは、--config FILE、--profile NAME、またはシークレットを含まないセレクター GUILDCONTROL_CONFIG_FILE が必要です。環境変数によるポリシー指定は拒否され、別の環境ポリシーや自動インポートのモードもありません。オフラインの migrate プランナーがランタイムのポリシーソースになることはありません。プリセットを指定せずに setup を実行すると、既存のポリシーが書き換えられることなく検証されます。一方、プリセットを指定すると、選択したターゲットが明示的に作成または置換されます。
ワンクリックバンドルまたは生成されたアダプターで接続する
セットアップで ready と表示されたら、互換性のある MCPB ホストは、不変の GitHub リリースまたは MCP Registry から guildcontrol-2.3.4.mcpb をインポートできます。厳格な設定を選択し、機密情報用のプロンプトにはトークンだけを入力してください。検証済みバンドルは macOS、Windows、Linux に対応し、ポリシーフィールドを重複させず、プライバシーと依存関係の証拠を含み、実際の展開済み MCP ハンドシェイクを完了します。
ファイルベースのトークンを使う場合や別のホストを使う場合は、host によって Claude Code、Codex、Cursor、VS Code、Gemini CLI、および一般的な MCP JSON 向けの決定論的なアダプターが生成されます。オプションの host detect は、メタデータのみから可能性のあるホストを報告します。host plan と host apply は、認証情報を解決したり、無関係なエントリを置き換えたりせずに、静的な JSON 投影を 1 つ確認してインストールします。Codex には正確で確認可能な TOML 投影が渡され、--inspect-host-file は観測値を返さずに JSON の差分を正確に報告します。接続ガイドでは、セットアップと検証について説明しています。
ホストに接続したら、最初の有用なリクエストは自然な表現で範囲を絞って行えます。
Show me the channels in Discord server YOUR_GUILD_ID using GuildControl MCP. Do not make changes.
config validate、doctor、smoke は、セットアップの成功後に必要に応じて使える保証および復旧用ツールです。オフラインの doctor は、認証情報を利用できない場合でもポリシーを検査できます。--online は Discord が利用可能な場合にのみ Discord に接続し、smoke は子 MCP のハンドシェイクを検証します。人間向けの doctor 出力には、対処可能な警告と失敗が表示されます。すべてのチェックを表示するには --verbose を、証拠全体を表示するには --json を追加してください。警告がある場合、ready with warnings を含め、Doctor は終了コード 1 を返します。
npx --yes [email protected] config validate ./guildcontrol.json
npx --yes [email protected] doctor --config ./guildcontrol.json --online
npx --yes [email protected] smoke --config ./guildcontrol.json
ポリシーの置き換えを確認する
別個の候補を編集している間は有効なポリシーを変更せず、統合された確認手順を使ってください。
npx --yes [email protected] config workbench \
./guildcontrol.json \
--html ./guildcontrol-workbench.html
npx --yes [email protected] config replace \
./guildcontrol.json \
./guildcontrol.candidate.json
config replace は、名前を指定した確認を求める前に計画を表示し、ロック中に再計算して、原子的に書き込み、バックアップを保持し、結果を検証します。分離した確認手順も引き続き利用できます。
npx --yes [email protected] config plan \
./guildcontrol.json \
./guildcontrol.candidate.json
npx --yes [email protected] config apply \
./guildcontrol.json \
./guildcontrol.candidate.json \
--plan-digest SHA256_FROM_THE_PLAN \
--confirm ACTIVE_POLICY_NAME
プライベートなワークベンチは、候補を明示的にダウンロードするまで編集内容をメモリ内に保持します。また、シークレット、ネットワーク、永続化、Discord、有効ファイルへの書き込み、承認に関する権限を持ちません。どちらの適用経路もファイルを読み直し、ID の不一致やファイルの差分を拒否し、復元可能なバックアップを保持します。有効なドキュメントだけがポリシーの情報源です。
Discord にリクエストしたり、認証情報を解決したりせずに、選択中の同じポリシーを使って、最近の書き込み結果とプロセス間で保持される確定済み処理を確認します。
npx --yes [email protected] activity \
--config ./guildcontrol.json \
--html ./guildcontrol-activity.html
範囲を限定したこの確認では、各アクティビティを最新の結果にまとめ、置き換えられた履歴を保持し、内容を含まないダイジェストのみで永続的な処理を関連付け、未確定の状態をすべて警告します。オプションのプライベートエクスプローラーには検索とフィルターが追加されていますが、Discord への接続、処理の解決、操作の再試行、ブラウザー状態の永続化はできません。coordination resolve は、処理の所有者を停止し、Discord の正確な状態と監査ログを確認した後にのみ使用してください。
機能ポリシーも同じドキュメント構造を使用します。確認済みの機能は、個別の機能、正確なスコープ、範囲を限定した制限、文書化されたツールセットを保持します。単一メンバーへの権限付与によって、バッチ処理の権限が付与されることはありません。環境ポリシーインターフェイス、レガシーエイリアス、フォールバックパーサー、自動移行レイヤーはありません。
範囲を限定したメッセージ履歴、呼び出し元が保持するチャンネルのキャッチアップ、ネイティブ検索が必要な場合にのみ channel-reader を使用してください。正確なチャンネルを少なくとも 1 つ指定する必要があります。
npx --yes [email protected] setup \
--npx \
--config ./discord-reader.json \
--preset channel-reader \
--guild-id YOUR_GUILD_ID \
--channel-id YOUR_CHANNEL_ID
レビューを通じてポリシーを拡張する
最初のセットアップは読み取り専用のままにし、その後、統合レビューを通じて追加レシピを1つ有効にします。最初の書き込みには、最も範囲の狭い message-channel を使用します。対象は、通常の送信、返信、正確に指定したチャンネルまたは対象となる子スレッドでのコネクター所有の編集、正確な対象への入力中表示です。coordination-channel は宛先を指定したメモを追加します。channel-publisher はより広範な公開機能を追加し、guild-starter は特権のない GUILDS の証跡を使ったレビュー済みの公開レイアウトを追加します。guild-builder はブループリントのライフサイクルを追加し、incident-response はロックダウンを追加します。また、direct-messenger は、正確に指定したユーザーへのプライベートメッセージ送信を追加します。各レシピには、権限、インテント、スコープ、リスク、除外事項が示されます。
npx --yes [email protected] recipe list
npx --yes [email protected] recipe enable message-channel ./guildcontrol.json \
--channel-id YOUR_MESSAGE_CHANNEL_ID
npx --yes [email protected] recipe enable direct-messenger ./guildcontrol.json \
--user-id EXPECTED_RECIPIENT_USER_ID
npx --yes [email protected] recipe enable guild-starter ./guildcontrol.json \
--guild-id YOUR_GUILD_ID
分離された自動化の経路は、引き続き明示的に選択できます。
npx --yes [email protected] recipe plan guild-starter ./guildcontrol.json \
--guild-id YOUR_GUILD_ID
npx --yes [email protected] recipe apply guild-starter ./guildcontrol.json \
--guild-id YOUR_GUILD_ID \
--plan-digest SHA256_FROM_THE_PLAN \
--confirm guild-starter
どちらの経路でも、ポリシーの完全な差分、要件、リスク、警告、経路に紐づく証跡が示されます。シークレットも Discord リクエストも必要ありません。適用時にはポリシーが再計算され、名前の確認が必須となり、差分があれば拒否され、バックアップが保持されます。レシピによって Discord の権限が付与されることはありません。
オンラインの doctor は、ID、ID のみを使用したインストール全体の差分、適用状態を検証します。Smoke は serve を起動し、stdio で安定した MCP をネゴシエートして、カタログと読み取り専用の状態を検証します。Discord には何も書き込まず、設定済みのランタイムをシャットダウンします。オペレーター向けリファレンスを参照してください。
ソースからビルドする
git clone https://github.com/j-256/guildcontrol.git
cd guildcontrol
npm run deps:locked
npm run build
node dist/bin.js catalog --check
インストール、オペレーター CLI、設定の各リファレンスでは、スタンドアロン設定、管理対象プロファイル、OCI バインドマウント、段階的な検出、ツールセット、許可リスト、オプションの Gateway モード、可観測性、個別にゲートされたすべての機能について説明しています。
機能マップ
| 分野 | 選択できる機能 |
|---|---|
| 検出と読み取り | スコープを限定したサーバー、チャンネル、メッセージ、スレッド、フォーラム、メンバー、モデレーション、監査、アプリケーション、イベント、ボイス、設定の読み取り。正確な ID の解析と添付ファイルへのアクセス。呼び出し元が保持する複数チャンネルの追跡、ネイティブ検索、範囲を限定した履歴の参照、アクティビティの集計、プライバシーを最小限に抑えた出力 |
| メッセージとコミュニティ | 冪等な配信。権限を伴わない宛先指定メモと正確なメッセージ単位のタスク調整。レビュー済みプライベートメッセージ。Components V2、リモートコンテンツを含まない埋め込み、添付ファイル、リアクション、投票、クロスポスト、転送、スレッド、ピン留め、対象を正確に指定した削除 |
| サーバー構造 | 決定論的なスターターと呼び出し元が保持するブループリント。チャンネル、ロール、フォーラム、権限、オンボーディング、AutoMod、公開機能の追加。レビュー済みの複製、並べ替え、メタデータ、同期、廃止 |
| メンバーとモデレーション | プライバシーを最小限に抑えたディレクトリとBAN監査。対象メンバーを正確に指定するレビュー済みモデレーション、ロール、ニックネーム、認証、ボイス、スレッドメンバーシップ。再開可能な一括処理、ネイティブの一括BAN、保護されたサーバー整理 |
| コミュニティ設定 | アプリケーション、コマンド、リンクロール、収益化、Webhook、連携、招待、テンプレート、プロフィール、設定、Community、エクスプレッション、サウンドボード、イベント、Stage、AutoMod の監査とレビュー済みライフサイクル |
| 運用 | 段階的なツール検出とパッケージ化されたドキュメント検索。リソースとプロンプト。モデルに依存しないプレイブック。厳格な設定、プロファイル、ホストガイド、プリセット、レシピ。コンテンツを含まない監査と調整。範囲を限定した Gateway およびネイティブの Interaction ランタイム。OpenTelemetry 診断 |
機能は、ツールセットとポリシーのゲートが選択された場合にのみ公開されます。ツールセットは呼び出し可能な範囲を狭めますが、Discord またはローカルへの書き込み権限を付与することはありません。正確なツールリファレンス、リソース、プロンプトを参照してください。
安全性モデル
Discord の権限が外側の境界となります。コネクタのポリシーは、その権限をさらに絞り込みます。
- 本番トラフィックでは、固定された Discord REST および審査済みの Gateway オリジンを使用します。実行時の設定によって認証情報の送信先を変更することはできません
- 各 Gateway シャードは、成功したすべての送信イベントを単一のローリング接続予算に計上し、呼び出し元のコマンドによる負荷を、ライフサイクル用に確保された容量を下回るよう制限します。また、接続境界ごとに、キュー内の完全一致 ID リクエストを破棄します
- スコープは、ギルド、チャンネル、ロール、メンバー、機能、HTTPS リンクのオリジンをそれぞれ厳密に指定します
- ギルド用ツールは DM を拒否します。プライベートメッセージ用ツールでは、独立した完全一致の一般ユーザー許可リストと、呼び出し元が把握している 1 対 1 チャンネル ID が必要です。プレーンテキストまたはサイズを制限した静的 Components V2 のみをサポートし、メンションを抑制して、固定のスパム対策制限を適用します。また、探索、複数対象への一括指定、コールバック付きコンポーネント、任意の埋め込み URL、Gateway フィードは提供しません
- Components V2 のリンクには、HTTPS オリジンの完全一致が必要です。コネクターがリンク先を取得したり、リダイレクトを追跡したりすることはありません
- Components V2 のリクエストボタンには、コネクターが生成した HMAC ID を使用します。利用できるのは、完全一致のネイティブ Interaction 受信が準備完了の場合に限られます。また、完全一致で許可されたユーザー向けに、制限付きのプライベートリクエストのみを作成し、Discord への書き込みや管理操作を自動実行することはありません
- Discord の名前、メッセージ、埋め込み、コンポーネント、ファイル名、URL、その他のリモートテキストは、指示ではなく信頼できないデータとして扱います
- 明示的に要求された場合、Discord のコンテンツを一時的に返すことはできますが、コネクターがキャッシュ、記録、エクスポート、永続化することはありません
- 新しい招待コードと URL は、呼び出し元が選択した排他的なプライベートファイルを通じてのみ提供されます。MCP の結果、ライフサイクル記録、エラー、ログ、テレメトリーには、ベアラー機能を含めません
- Incoming Webhook の認証情報は、完全一致 ID を指定した排他的なプライベートファイルに保持されます。MCP が受け付けるのは Webhook ID とメッセージ ID のみで、永続的なアクティビティ、受領記録、エラー、ログ、テレメトリーには、認証情報もコンテンツも含めません
- 権限付与の書き込みには個別のスコープを適用します。テストの削除には作成の証明が必要で、消費記録には履行参照のハッシュのみを保存します
- 重大な結果を伴うすべての書き込みには、ドメイン固有の権限、新鮮性、承認、監査、読み戻し、不確実性に関する各ゲートを適用します
- メッセージの削除では完全一致のメッセージ ID のみを受け付け、各削除ゲートを個別に維持します
- チャンネルの削除には、厳密なスコープ、依存関係と権限に関する完全な証拠、不可逆な損失への了承、対象に厳密に紐づいたブループリントの証明またはアーティファクトなしの選択が必要です。その後、署名付きレビューと Gateway による不在証明を要求します。メッセージを読み取ることはありません
- ロールの削除には、厳密なスコープ、保有者がゼロであること、階層・権限・依存関係に関する完全な証拠、不可逆な損失への了承、対象に厳密に紐づいたブループリントの証明またはアーティファクトなしの選択、署名付きレビュー、新鮮な不在証明、および他の対象が維持されていることの証明が必要です
- ギルドのプルーニングには、別途指定されたギルドの完全一致許可リスト、任意のロール完全一致許可リスト、Discord では候補 ID が公開されないことへの明示的な了承、保護対象の ID に対するロールシールド、要求された上限と設定済み上限の両方を下回る新鮮なネイティブ推定、署名付きレビュー、再試行しない単一のリクエスト、および件数のみを対象とする厳格な結果証拠が必要です
- ギルドのインシデント対応操作には、完全一致で許可されたギルドが 1 つであること、
MANAGE_GUILDまたは所有者であることを示す既知の完全な証拠、24 時間以内の将来の期限、署名付きレビュー、再試行しない簡潔な書き込み、および完全一致の応答と新鮮な読み戻しが必要です。保護を早期に解除する操作は破壊的な操作として扱います - 特権インテントの有効化で受け付けるのは Guild Members または Message Content のみです。厳格なポリシーにより、そのインテントが必須または推奨されることが証明されている場合に限ります。観測された対象外のアプリケーションフラグはすべて維持し、Presence、無効化、汎用的なアプリケーション編集、自動修復は対象外とします
共通のレビュー済み書き込みシーケンスは、実行ツールから開始します。独立したレビューで必要な場合、呼び出し元は引き続き、分離されたプランから取得したダイジェストを指定できます。
exact execute request -> fresh keyed plan -> human review -> signed approval
-> final fresh-plan match -> pending content-free evidence
-> one non-retried write -> exact readback or quarantine
Discord の操作によってその証明が可能な場合、すでに最新のリクエストは、記録を残さず何もしません。既知のクライアントによる拒否は失敗として確定します。トランスポート障害、サーバー障害、不正な成功レスポンス、または読み取り確認の欠落は、結果が不確定なため、むやみに再試行してはなりません。永続的なクレームにより、安全な受領証拠または明示的なオペレーターによる解決で続行可能な処理が証明されるまで、影響を受ける対象がコネクタープロセス間で隔離された状態に保たれます。
書き込み機能を有効にする前に、安全性モデルの全文とセキュリティポリシーをお読みください。
信頼と検証
| コマンド | 検証できること | Discord へのアクセス |
|---|---|---|
guildctl catalog --check --json | 本番環境の正確な MCP インベントリ、アクセスのライフサイクル、スキーマ、アノテーション、ゼロ値のポリシー完了の証明、プランレビューアプリの権限、実行ガード、安定したコントラクトとリソースのダイジェスト | なし |
guildctl catalog --html FILE | 正確にネゴシエートされたコントラクト(スキーマ、フィルター、補完、アプリのソース、リソース、安全性に関するガイダンスを含む)のガイド付き製品ツアーと検索可能な表示 | なし |
guildctl preset show server-observer --json | 推奨プリセットの正確な読み取り専用ツール、スコープ要件、インテント、書き込みがゼロである境界 | なし |
guildctl preset install server-observer --application-id ID --guild-id ID [--html FILE] | オリジンが固定され、ギルドにロックされたボット認可プランと、正確なダイジェストおよびインストール後のコマンドを含む、任意の認証情報不要の単独チェックリスト | なし |
guildctl config workbench ACTIVE --html FILE | 検証済みのスキーマ v2 ポリシー 1 件を対象とした、プライベートなオフラインのインメモリエディターと明示的な候補のダウンロード。アクティブファイルへの書き込みや承認権限はありません | なし |
guildctl config replace ACTIVE CANDIDATE | 統合された完全なレビュー、確認者名の指定、ロック下での最新状態に基づく再計算、アトミックな置換、バックアップ、読み戻し | なし |
guildctl config plan ACTIVE CANDIDATE --json | 候補ポリシー全体、正確な意味上の変更、権限への影響、ツールの公開範囲、警告、ID ロック、パスに紐付いた最新のダイジェスト | なし |
guildctl config apply ACTIVE CANDIDATE --plan-digest DIGEST --confirm ACTIVE_NAME | 古いファイルを拒否し、アトミックに公開して復元可能な前バージョンを保持する、ローカルポリシーの最新かつ正確な置換 | なし |
guildctl recipe show guild-starter --json | 追加される機能、スコープ、ツールセット、権限、インテント、Gateway の証拠、リスクに関する正確なコントラクト | なし |
guildctl recipe plan guild-starter FILE --guild-id ID --json | 提案されるポリシー全体、正確な変更、要件、警告、ソース・パス・リクエスト・コントラクトに紐付いたダイジェスト | なし |
guildctl migrate plan SOURCE [--html FILE] [--json] | リリース単位で正確に記録されたソースツールの全項目、より安全なターゲットルート、段階的な切り替えコマンド、デプロイメントの読み取りや変更を行わない決定論的なプランの証拠 | なし |
guildctl activity --config FILE [--html FILE] [--json] | 現在進行中の書き込みライフサイクルの制限付き情報、置き換えられた履歴、内容を含まない正確な証拠、オペレーターの対応が必要な場合の警告ステータスを含む、相関付けされた永続的な記録 | なし |
guildctl doctor --config FILE | ローカルの Node.js、認証情報の利用可否、ID の固定、ポリシー、スコープ、ツールの公開範囲、情報を損失なく読み取るための応答予算、Gateway、可観測性、書き込みゲートの診断。シークレットを利用できる前でも実行できます | なし |
guildctl doctor --config FILE --online | 厳密なポリシー、固定されたアプリケーションおよびボットの ID、インテントフラグ、上限付きの ID のみのインストール済みギルドの完全なインベントリ、設定済みスコープとの正確な差異 | 読み取り専用 |
guildctl smoke --config FILE | 選択したポリシーを通じた、起動済み stdio のネゴシエーション、検出、アノテーション、コネクターの ID | 読み取り専用 |
guildctl host detect; host; host plan; host apply | オプトインによるメタデータのみの候補検出、認証情報不要のアダプター、レビュー済みで鮮度に紐付いた静的 JSON のインストール(復元可能なバックアップとロールバックを含む)、値を含まない差異の検査 | なし |
npm run container:verify | 固定されたベースイメージのビルド、非 root のファイルシステムおよびプロセス制限、シークレットを含まないメタデータ、決定論的なカタログ ID、MCP の動作、安全な認証情報エラー処理 | なし |
npm run container:index:verify | マルチアーキテクチャインデックスの正確性、プラットフォーム設定と BLOB、各プラットフォームの来歴および SBOM レコード | 公開イメージレジストリのみ |
npm run pack:verify | 再現可能なアーカイブ、パッケージ内容の正確性、分離されたインストール、インストール済み CLI、決定論的なカタログの証拠と HTML、内容を含まない MCP ハンドシェイク | なし |
npm run mcpb:verify | プラットフォーム間でバイト単位に一致するバンドル、厳密な ZIP メタデータと内容、埋め込み証拠、Registry のハッシュバインディング、分離されたトークンマッピング、展開済み MCP による実際のハンドシェイク | なし |
npm run security:check | 依存関係の脆弱性、レジストリ署名、証明書 | 公開パッケージレジストリのみ |
catalog --check --json は独立した比較を目的として設計されています。認証情報は不要で、環境に存在するコネクターの権限は無視し、設定済みの補完識別子を返さず、Discord の操作を実行せず、Gateway を開かず、テレメトリーをエクスポートせず、アクティビティ記録を作成しません。一致するコントラクトダイジェストは、正規化された MCP の指示、サーバー機能、ツールのアクセスライフサイクル、ポリシーと補完のバインディング、ツールのスキーマとアノテーション、プロンプト、リソース、テンプレート、安全応答、レビューアプリ、実行ガードが一致していることを示します。 |
リリース自動化では、再現可能な npm および MCPB のアーティファクト、強化された OCI、SPDX インベントリ、署名済みの来歴を検証し、不変の GitHub Release を公開してから app.lasers.guildcontrol/discord を登録します。通常のリリースには、保護された npm ステージの承認が 1 回、昇格の承認が 1 回必要です。パッケージ、Release、Registry の権限は別々のジョブに分離されています。来歴はビルドの受領記録、SBOM は部品表、アテステーションはそれらとアーティファクトおよび発行者とのバインディングです。いずれもセキュリティや完全性を証明するものではありません。証拠の境界とリリース手順書を参照してください。
アーキテクチャ
stdio トランスポート、Discord REST クライアント、スコープポリシー、ドメインサービス、レビュー済みの計画、永続的な調整機能、アクティビティログ、オブザーバビリティ、Gateway、MCP アダプターは、それぞれ分離されています。本番環境ではネイティブの fetch、TypeScript ESM、正確な依存関係、除外されたツールの登録コストを省く遅延スキーマを使用します。
これにより、トランスポート、権限の証拠、ローカルの権限、レビュー済みの書き込み、永続化、MCP の表示をそれぞれ独立してテストできます。新しい機能は、汎用の Discord ディスパッチャーを追加するのではなく、これらの境界に沿って実装する必要があります。
ドキュメント
- 検証済みドキュメントポータル
- 初回の検証済み読み取りと初期化の復旧
- 安全性と使いやすさに関する決定記録
- 他の Discord MCP からのリリース単位の移行
- 製品の境界、正直な制限事項、ホスト互換性
- ソースを監査した機能比較
- オペレーターおよび機能の完全なリファレンス
- セットアップとオペレーター向けサポート
- プライバシーポリシー
- セキュリティモデルと報告
- リリースと独立検証の手順書
- MCP Registry マニフェスト
- AGPL-3.0-only ライセンス
開発
変更については CONTRIBUTING.md、セットアップやオペレーターからの質問については SUPPORT.md を参照してください。デフォルトのテストでは注入されたトランスポートを使用し、Discord には接続しません。
npm run metadata:check
npm run config:schema:check
npm run typecheck
npm test
npm run test:coverage
npm run build
npm run pack:verify
npm run mcpb:verify
npm run container:verify
npm run container:index:verify
npm run security:check
ライブプローブは明示的に実行し、デフォルトでは読み取り専用です。デフォルトの検証コマンドがメッセージ内容を取得したり、Discord に変更を加えたりすることはありません。
ライセンス
AGPL-3.0-only
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。