egressview

AIエージェント連携 — MCP サーバーの設定

EgressView は Model Context Protocol (MCP) サーバーを内蔵しており、AWS Kiro・Anthropic Claude・Anysphere Cursor・Zed などの AI アシスタントからネットワークデータを直接参照できます。

🇬🇧 English version

MCP SDK v2 serverは1つのtool定義で両方のprotocol eraを提供します。 2025-11-25 clientは従来のinitialize flow、2026-07-28 clientは statelessなserver/discoverとrequest単位のmetadataを使用します。互換性のため legacy fallbackを維持し、sticky sessionは必要ありません。

Transportを選ぶ前に、cloud非依存のDeployment profile からlocal-stdioprivate-httpprivate-oauthpublic-oauthのいずれかを 選びます。管理環境ではEGRESSVIEW_DEPLOYMENT_PROFILEを明示してください。 Transport/認証との矛盾はendpoint起動前に拒否します。

使い方の例

接続後は自然な言葉で質問するだけです:

「過去24時間の脅威サマリーを見せて」
→ 合計18,142セッション: safe 18,117 / warn 25 / danger 0

「今日一番通信した端末はどれ?」
→ セッション数・MAC・ベンダー付きで端末ランキングを表示

「今週、新しいデバイスはネットワークに現れた?」
→ 過去7日間に初めて出現した端末・宛先を一覧表示

「脅威のある通信はある?」
→ Feodo / ThreatFox / URLhaus / Spamhaus DROP にヒットした宛先を表示

「192.168.1.50 はどこに接続している?」
→ その端末の上位宛先を国・組織・脅威レベル付きで表示

「過去6時間のアラートを教えて」
→ 脅威検出・新規デバイス通知・ビーコン候補の一覧

「メモがついている端末を一覧で見せて」
→ メモが登録されている全端末を表示

「192.168.1.97 にメモを追加して:Roomba、OTA アップデートで GitHub に接続」
→ その端末にメモを保存

AIエージェントが適切なツールを自動で選択し、必要であれば複数のツールを組み合わせて回答します。

利用できるツール

ツール名 返す情報
get_threat_summary 指定期間の safe / warn / danger セッション数
get_traffic_summary 総セッション数・ユニーク宛先数・ユニーク端末数
get_top_destinations 接続数上位の宛先一覧(国・組織・脅威レベル付き)
get_device_traffic 端末ごとのトラフィック(src IP 指定で特定端末の上位宛先)
get_new_nodes 指定期間に初出現した端末・宛先
get_threat_connections 脅威判定された通信先(信頼度 low/high 絞り込み可)
get_alerts 検出ログ(脅威・新規端末・ビーコン)
get_devices LAN 内の全端末(MAC・ベンダー・状態・最終通信)
query_connections 送信元/宛先フィルター付きの通信ログ検索
get_device_notes 端末のメモ一覧(src 省略で全端末、src IP 指定で1端末のメモ)
set_device_note src IP で端末を指定してメモを追加・更新(空文字で削除)

期間指定を行うツールは period パラメータを受け付けます: 1h / 6h / 24h(デフォルト)/ 7d / 14d get_devices / get_device_notes / set_device_noteperiod パラメータを使用しません。


Option A — stdio モード(ローカル・推奨)

Claude Desktop と同じマシン上でローカルプロセスとして MCP サーバーを起動します。MCP サーバーが EgressView の REST API を HTTP で呼び出します。EgressView はローカルでもリモートサーバー上でも構いません。

Claude Desktop では stdio モードが推奨です。 command ベースの stdio トランスポートはすべての MCP クライアントでサポートされており、URL バリデーションの制限を受けません。

前提条件: Node.js 22+、稼働中の EgressView、API/admin トークン

# 1. クローン(まだの場合):
git clone https://github.com/yo1t/egressview.git
cd egressview
npm install

Claude Desktop の設定ファイル (~/Library/Application Support/Claude/claude_desktop_config.json、macOS の場合):

{
  "mcpServers": {
    "egressview": {
      "command": "node",
      "args": ["/absolute/path/to/egressview/mcp-server.js"],
      "env": {
        "EGRESSVIEW_URL":   "http://your-server-ip:3000",
        "EGRESSVIEW_TOKEN": "your-admin-token"
      }
    }
  }
}

設定後に Claude Desktop を再起動すると、MCP ツール一覧に egressview が表示されます。


Option B — リバースプロキシ経由の HTTP モード(リモートアクセス)

EgressView と同じサーバー上で mcp-server.js を HTTP サーバーとして起動し、リバースプロキシ(Apache または nginx)経由で外部公開します。

Claude Desktop をご利用の方へ: Claude Desktop はリモート MCP サーバーに https:// URL を要求します。リバースプロキシで TLS を終端していない場合は、Option A(stdio)を使用してください。stdio モードならローカル・リモートどちらの EgressView にも HTTP で接続できます。

このオプションは、HTTP トランスポートをネイティブでサポートする MCP クライアント(Anysphere Cursor・Zed・AWS Kiro・Anthropic Claude・カスタムエージェントなど)向けです。

ChatGPT から接続する場合

ChatGPT から EgressView の MCP サーバーへ接続する場合は、Codex や Claude Desktop のローカル設定とは別に、ChatGPT 側で remote MCP / app として設定する必要があります。Codex の ~/.codex/config.toml や Claude Desktop の claude_desktop_config.json に追加した設定は、ChatGPT には自動では引き継がれません。

ChatGPT 側から直接接続する remote MCP サーバーは、原則として ChatGPT から到達できる HTTPS URL が必要です。EgressView を家庭内LAN、SOHO、社内ネットワーク、プライベートサブネットなどに置いている場合は、MCP エンドポイントをそのままインターネットへ公開せず、OpenAI の Secure MCP Tunnel など、プライベートな MCP サーバーを安全に接続する仕組みを検討してください。

ChatGPT Apps として公開・共有する場合は、利用者ごとの認証・権限管理も重要です。個人利用の検証では X-Admin-Token による保護でも動作確認できますが、複数ユーザーや外部公開を想定する場合は OAuth などのユーザー単位の認可を検討してください。MCP ツールはネットワーク状態や端末メモを取得できるため、信頼できるクライアントとユーザーだけに利用を限定してください。

Step 1 — EgressView サーバー上で MCP サーバーを起動

# 環境ファイルをコピーして編集:
cp .env.mcp.example .env.mcp
# MCP_PORT=3010、MCP_TOKEN=<専用のランダムtoken>、
# MCP_SERVICE_TOKEN=<scoped egv_... identity>、
# MCP_AUDIT_HMAC_KEY=<専用の32文字以上のsecret>、
# EGRESSVIEW_URL=http://localhost:3000 を設定
# EgressView をリバースプロキシ背後の別ポートで動かしている場合は、
# そのローカルURLを指定してください(例: http://localhost:3002)。
chmod 600 .env.mcp

# 動作確認:
set -a; source .env.mcp; set +a
node mcp-server.js
# → [egressview-mcp] HTTP transport listening on 127.0.0.1:3010/mcp

HTTP tokenモードは3つの異なるcredentialを必要とします。MCP_TOKENはMCP clientを認証し、MCP_SERVICE_TOKENnetwork.readnotes.writeだけを 持つegv_... API identity、MCP_AUDIT_HMAC_KEYはappend-only監査を 仮名化します。これらとEGRESSVIEW_TOKENを同じ値にしません。HTTP runtimeは browser/admin tokenをAPI呼び出しへ使用しません。stdioモードは変更ありません。

段階導入中のOAuth Resource Serverモード

P2-60のOAuth Resource Server境界は、MCP_AUTH_MODE=oauthMCP_OAUTH_ISSUERMCP_OAUTH_RESOURCEMCP_OAUTH_READ_SCOPEMCP_OAUTH_NOTES_WRITE_SCOPEMCP_SERVICE_TOKENMCP_AUDIT_HMAC_KEYを 設定するとprivate integration testで利用できます。RFC 9728 Protected Resource Metadataを提供し、issuerのdiscovery/JWKSからRS256署名を検証し、 issuer、有効期限、audience、scopeの不一致をfail-closedで拒否します。 issuerはPKCE S256をmetadataへ公開する必要があります。loopback限定試験を 除きHTTPSが必須です。

既定のMCP_OAUTH_COMPATIBILITY_PROFILE=strictはこのmetadata検証を維持します。 AWS Cognito regional user-pool issuerとの完全一致時だけcognitoを指定でき、 code_challenge_methods_supported fieldの欠落だけを許容します。S256以外を 明示したmetadataや、署名、issuer、有効期限、単一audience、scope検証は緩和 しません。対応client versionごとにPKCE S256のwire trace、両requestのRFC 8707 resource、完全一致callback、refresh rotation、失効を公開前証跡で確認するまで 有効化しないでください。

外部provider scopeはEgressViewの共通permissionへ変換します。 MCP_OAUTH_READ_SCOPEnetwork.readMCP_OAUTH_NOTES_WRITE_SCOPEnotes.writeを付与します。read-onlyの access tokenではset_device_noteをtool一覧へ表示せず、直接呼び出しても 403 insufficient_scopeで拒否します。scope昇格時に既存のread scopeを 失わないよう、write challengeには両方のscopeを含めます。

HTTP token/OAuthの両modeで、network.readnotes.writeだけを持つ専用API identityを作り、作成時に一度だけ返る平文tokenをMCP_SERVICE_TOKENへ設定します:

curl -sS -X POST http://127.0.0.1:3002/api/auth/api-identities \
  -H "X-Admin-Token: $EGRESSVIEW_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"label":"Remote MCP service","permissions":["network.read","notes.write"],"expiresInMs":31536000000}'

OAuth modeはegv_...形式のscoped identityだけを受け付け、 EGRESSVIEW_TOKENへfallbackしません。.env.mcpをmode 0600で保護し、 期限前にidentityをrotationして、確認後に旧identityを失効してください。 監査鍵はopenssl rand -hex 32で一度だけ生成し、service identityをrotation しても同じ値を維持します。Internet公開gateは次のP2-60で実装します。 現段階のendpointをInternetへ公開しないでください。

Step 2a — Apache (httpd) の設定

既存の <VirtualHost> または設定ファイルに追記します。MCP のブロックは、既存の /egressview/ ProxyPass ルールより前に置く必要があります。

# ─── EgressView MCP サーバー ─────────────────────────────────────────────────
<Location /egressview/mcp>
    ProxyPass        http://127.0.0.1:3010/mcp flushpackets=on
    ProxyPassReverse http://127.0.0.1:3010/mcp
    # MCP Streamable HTTP は Accept ヘッダーに両タイプが必要
    RequestHeader set Accept "application/json, text/event-stream"
</Location>

# OAuthモードのみ: RFC 9728 metadataのpathを維持して公開
ProxyPass        /.well-known/oauth-protected-resource http://127.0.0.1:3010/.well-known/oauth-protected-resource
ProxyPassReverse /.well-known/oauth-protected-resource http://127.0.0.1:3010/.well-known/oauth-protected-resource

# ─── EgressView Web UI(既存のルール — 下に置く) ────────────────────────────
ProxyPass        /egressview/ http://127.0.0.1:3002/
ProxyPassReverse /egressview/ http://127.0.0.1:3002/

必要な Apache モジュール: mod_proxymod_proxy_httpmod_headers(通常はデフォルトで有効)

sudo apachectl configtest && sudo systemctl reload httpd

Step 2b — nginx の設定

server {} ブロック内に追記:

location /egressview/mcp {
    proxy_pass         http://127.0.0.1:3010/mcp;
    proxy_http_version 1.1;
    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-Proto $scheme;
    # SSE(ストリーミングレスポンス)のために必要
    proxy_set_header   Accept            "application/json, text/event-stream";
    proxy_set_header   Connection        '';
    proxy_buffering    off;
    proxy_cache        off;
    proxy_read_timeout 3600s;
}

# OAuthモードのみ: rootとresource固有のmetadata pathを維持
location /.well-known/oauth-protected-resource {
    proxy_pass http://127.0.0.1:3010;
}
sudo nginx -t && sudo systemctl reload nginx

Step 3 — systemd サービスとして登録(推奨)

# /etc/systemd/system/egressview-mcp.service
[Unit]
Description=EgressView MCP Server
After=network.target egressview.service

[Service]
Type=simple
User=ec2-user
WorkingDirectory=/home/ec2-user/egressview
EnvironmentFile=/home/ec2-user/egressview/.env.mcp
ExecStart=/usr/bin/node /home/ec2-user/egressview/mcp-server.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now egressview-mcp

Step 4 — クライアントの設定(HTTP モード)

HTTP トランスポートをサポートする MCP クライアント(Anysphere Cursor・Zed・カスタムエージェント)の場合:

{
  "mcpServers": {
    "egressview": {
      "url": "https://your-server/egressview/mcp",
      "headers": {
        "X-Admin-Token": "your-dedicated-mcp-token"
      }
    }
  }
}

リバースプロキシで TLS を終端している場合は https:// を使用してください(Claude Desktop では必須)。プレーンな http:// で使いたい場合は Claude Desktop では Option A(stdio)を使用してください。


環境変数リファレンス

変数 必須 デフォルト 説明
EGRESSVIEW_DEPLOYMENT_PROFILE 推奨 推定 local-stdioprivate-httpprivate-oauthpublic-oauth。deployment profile matrix参照
EGRESSVIEW_URL http://localhost:3000 EgressView サーバーのベース URL
EGRESSVIEW_TOKEN stdio/setup stdio互換またはHTTP service identity作成時に使うAPI/admin token。HTTP runtime呼び出しはMCP_SERVICE_TOKENを使用
MCP_PORT HTTP モード MCP HTTP サーバーのローカルポート(例: 3010)。stdio モードの場合は不要
MCP_BIND_ADDRESS HTTPモード 127.0.0.1 bindするIPv4/IPv6 literal。hostnameは拒否
MCP_ALLOW_NON_LOOPBACK 非loopback bind false 明示deployment profileと併せて正確にtrueを設定した場合だけLAN/container/all-interface bindを許可
MCP_AUTH_MODE HTTP モード token HTTP endpointの認証モード。tokenまたは段階導入中のoauth
MCP_TOKEN HTTP tokenモード private HTTP endpoint専用token。明示設定し、EGRESSVIEW_TOKENと別の値にする
MCP_OAUTH_ISSUER HTTP OAuthモード Authorization Serverの正確なHTTPS issuer URL。loopback HTTPは試験時だけ許可
MCP_OAUTH_COMPATIBILITY_PROFILE HTTP OAuthモード strict strict、または互換性証跡が完成したAWS Cognito regional user-pool issuerだけcognito
MCP_OAUTH_RESOURCE HTTP OAuthモード JWT audienceの完全一致検証に使うcanonical public MCP resource URL
MCP_OAUTH_READ_SCOPE HTTP OAuthモード 内部network.read permissionへmappingするprovider scope
MCP_OAUTH_NOTES_WRITE_SCOPE HTTP OAuthモード 内部notes.write permissionへmappingするprovider scope
MCP_SERVICE_TOKEN HTTPモード network.readnotes.writeだけを持つ専用egv_... API identity token
MCP_AUDIT_HMAC_KEY HTTPモード 監査subject/clientの仮名化だけに使う32文字以上の安定した秘密鍵

セキュリティについて


HTTP MCP: 上限・監査・失効

Runtimeのlimitと監査はprivate token/OAuthの両HTTP modeへ適用します。stdioは 対象外です。OAuthは利用者/client単位、private tokenは共有private credential 単位で記録・制限します。

リクエスト上限

3つの独立したバケットがあり、すべてが許可した場合だけ通過します。加えて同時実行数の上限を別に設けています。遅いtool callは、毎分の上限に達するよりずっと早くプロセスを枯渇させるためです。

設定 既定値 目的
MCP_RATE_LIMIT_GLOBAL 60/分 単一のバーストからホストを保護
MCP_RATE_LIMIT_SUBJECT 30/分 侵害された1利用者が全体の枠を消費できない
MCP_RATE_LIMIT_CLIENT 30/分 異常な1クライアントも同様
MCP_MAX_CONCURRENT 4 同時tool call数を制限
MCP_MAX_BODY 256kb 解析・認証の前にbodyを制限
MCP_TRUST_PROXY 未設定 クライアントアドレスの設定を許可するproxyのexact IP / IPv4 CIDR(カンマ区切り)
MCP_REQUEST_TIMEOUT_MS 30000 MCP処理1回の締切
MCP_API_TIMEOUT_MS 15000 内部EgressView API呼び出し1回の締切

締切が無いと、停止した呼び出しがMCP_MAX_CONCURRENT個の枠をすべて占有し、endpointが閉塞します。request締切は内部API呼び出しをabortして応答を終了します。なおMCPのtransportはストリーミングのため、応答を開始した後はステータスを504へ変更できません。ストリーム途中で締切を超えた呼び出しは、ステータスではなく監査のrequest_timeoutとして記録されます。timeout値は1〜600000の整数ミリ秒だけを許可し、不正値は文書記載の既定値へfallbackします。

既定値は意図的に厳しくしています。実測した使用量がまだ無く、誤検知が出てから緩めるのは容易ですが、緩すぎたと気づくのは悪用された後だからです。正当な処理が上限に当たる場合は引き上げてください。

拒否時は429Retry-Afterを返します。正の整数でない値は上限を無効化せず既定値へfallbackします。設定ミスで上限が消えることはありません。

reverse proxy側の上限も併用してください。 これはNode側の半分にすぎず、ここの不具合や再起動でendpointが無制限になってはいけません。X-Forwarded-ForEGRESSVIEW_TRUST_PROXYに列挙したproxyアドレスからのみ信頼します(認証ガイド参照)。

監査

全HTTP requestを専用ストア(MCP_AUDIT_DB_PATH、既定.egressview-mcp-audit.db)へ追記します。このstoreの書込検証に失敗した場合、HTTP endpointは起動しません。EgressView本体の監査とは意図的に分離しています。MCPプロセスはscoped API identityで動作しており、本体の監査への書き込み権限を与えると、MCPが侵害された場合に本体の記録を偽造・改竄できてしまうためです。

記録するもの: 仮名化したOAuth subjectとclient ID、tool名、付与scope、成否、理由コード、request ID、処理時間。

記録しないもの: tool引数、MACアドレス、端末メモ本文、access token、生のJWT、providerのエラー文言。クライアントのアドレスは鍵付きハッシュのみを保存し、平文では保存しません。

2つの監査の突き合わせ。 EgressView本体はMCP service identityが何をしたかを記録し(actor: api:<id>)、こちらのストアはそれをどのOAuth subjectが要求したかを記録します。MCPのrequest IDはX-Request-IdとしてEgressViewへ転送されるため、1つの事象を両者で追跡できます。保持期間は必ず揃えてください。片方だけ先に消えると、「何が起きたか」は残るのに「誰が指示したか」が失われます。

理由コード: unauthorizedinvalid_tokeninsufficient_scopebad_requestnot_foundmethod_not_allowedpayload_too_largeclient_errortool_errorglobal_rate_limitsubject_rate_limitclient_rate_limitconcurrency_limitrequest_timeoutserver_error。request単位の行には長さ制限したMCP methodとHTTP statusも記録します。tool呼び出しは長寿命response streamの終了時ではなくhandler完了時に記録し、tool引数、response body、providerのerror本文は保存しません。失敗が連続する場合は調査の合図です。

subjectは専用MCP_AUDIT_HMAC_KEYによるHMACで仮名化するため、識別子を保存せずに同一人物の活動を追跡できます。MCP_SERVICE_TOKENをrotationしてもこの鍵は維持してください。意図的に変更した場合は新しい仮名化namespaceになります。180日より古い記録は起動時と、その後24時間ごとに削除します。プロセスを長期間稼働させても保持期間が効き続けます。EgressView本体の監査保持期間と揃えています。

アクセスの失効

  1. 認可サーバー側で失効させる — 新しいtokenの発行を止められるのはここだけです。事象に応じて利用者かclient登録を失効します
  2. access tokenの有効期限が切れるのを待つ。 EgressViewはtokenをoffline検証するため、発行済みtokenは期限まで有効なままです。この窓を小さく保つために、access tokenの寿命を短く(5〜15分を前提)設定してください
  3. 即座に遮断する場合は公開endpointを止めます。proxyのrouteを外すか、MCP_AUTH_MODE=tokenに戻します。ローカル収集、ブラウザUI、stdio、private HTTPは動作を継続します
  4. MCPホスト自体が侵害された可能性がある場合はMCP_SERVICE_TOKENをrotateします。 EgressViewで新しいscoped API identityを発行し、.env.mcpを更新して再起動し、その後で旧identityを失効させます

認可サーバーやJWKSへ到達できない場合

公開MCP endpointはfail-closedで401を返します。それ以外は動作を継続します。ルーター収集、ブラウザUI、stdioクライアント、private HTTPモードはいずれも影響を受けません。IdP障害をEgressViewの障害として扱わないでください。

公開前gate

P2-60には、公開DNSを作成する前に必ず成功させるfail-closed gateが あります。このgateはDNS、証明書、load balancer、security group、 Keycloak、EgressView設定を作成・変更しません。成功結果も ready_for_manual_dns_reviewであり、DNS公開は別途レビューする操作です。

DNS未公開のALBまたはreverse proxyに対して実行します。 MCP_GATE_CONNECT_ADDRESSへstaging targetを指定しても、TLS SNIとHTTP Hostにはcanonical hostnameを維持します。これは curl --connect-toと同じ考え方です。

cp .env.mcp-gate.example .env.mcp-gate
chmod 600 .env.mcp-gate
cp docs/mcp-publication-evidence.example.json \
  .egressview-mcp-publication-evidence.json

set -a
. ./.env.mcp-gate
set +a
npm run mcp:publication-gate

2つのlocalファイルはいずれもgitignoreされています。Bearer tokenは mode 0600の環境ファイルだけに置き、試験直後に削除してください。 証跡JSONと生成レポートにはtoken、tool引数、通信観測、IP/MAC、credentialを 記録しません。

dual-era gateは証跡schema v3を要求します。旧templateはversion番号だけを 書き換えず、新しいtemplateへ置き換えてください。client protocolと互換性fieldは 実際のclient試験結果から記録する必須項目です。

必須証跡

すべて成功済みで、deployした40文字のGit commitと一致し、試験から30日以内 でなければなりません。

MCP_GATE_OAUTH_COMPATIBILITY_PROFILE=cognitoの場合、設定したissuer/resourceと 一致するcognitoCompatibility証跡も必須です。PKCE S256、authorization/token 両requestのresource、access tokenとrefresh後のaudience、対応確認済みclientの 完全一致callback、旧refresh tokenとrevoke後tokenの拒否、試験した Inspector・Claude Code・Copilot CLI versionを記録します。Cognito callback制約は 明示し、Copilot対応済みとは 表記しません。このprofileではKeycloak DB restore証跡は不要です。

JWKS障害試験ではMCP processをcold startしてください。起動済みprocessが 有効なcached JWKSで署名検証を継続するのは正常であり、discoveryの fail-closed証跡にはなりません。

自動probe

CLIは続けて次を確認します。

rate probeはstaging processのglobal 1分bucketを意図的に使い切ります。 公開中のendpointでは実行しないでください。

EgressViewはJWTをoffline検証するため、Keycloak sessionやrefresh familyを 失効しても、発行済みaccess tokenはexpまで無効になりません。そのため MCP_GATE_REVOKED_EXPIRED_TOKENは短いaccess token TTLの経過後に検査します。 reject-replayはreplay request自体の失敗と現行familyの継続を要求します。 Keycloak 26.7.0の実測に一致するrevoke-familyはreplay検知後に現行familyも 失敗することを要求します。この方式ではreplay requestが最後の短命access tokenを 発行する可能性があるため、どちらの方式でもaccess token寿命を15分以下にします。 即時遮断が必要なら最初にpublic proxy routeを外し、access tokenを即時失効 できるとは表現しません。

結果とrollback

成功するとmode 0600.egressview-mcp-publication-gate.jsonを生成します。 deploy commit、実行日時、hostname、router数、各分類の成否だけを記録し、 秘密情報は保存しません。失敗時はnonzeroで終了し、DNS公開を禁止します。

公開後の確認に失敗した場合はWeb/MCPのDNS aliasを削除し、MCP proxy routeを 無効化してVPN/SSM運用へ戻します。applicationの確認済みreleaseとKeycloak DBは、それぞれ事前試験したrollback手順だけで復元します。router収集と local recovery administratorは常に利用可能な状態を維持してください。

商標について

AWS Kiro、Anthropic Claude、Anysphere Cursor などの製品名は、各社の商標または登録商標です。EgressView はこれらの企業と提携・承認・後援関係にありません。