emisar について
emisar は、AI エージェントがシェルではなく宣言済みのインフラ操作を実行できるようにする MCP サーバーです。ポリシーが各操作の実行、承認待ち、拒否を判断し、ホスト上のランナーが実行前に再度検証します。本番環境の権限を制限したいチーム向けです。
主な機能
- 01型付き引数を持つ宣言済みアクションのカタログ
- 02ポリシーによる実行・承認待ち・拒否の判定
- 03受信ポートを開かない送信専用のホストランナー
- 04コンテンツハッシュで検証されるアクションパック
- 05コントロールプレーンとランナーの監査ジャーナル
活用シーン
- 01本番ホストでAIエージェントに限定された運用作業を行わせる
- 02リスクの高いインフラ変更に人による承認を必須にする
- 03AIによるホスト操作の追跡可能な監査記録を残す
MCP 対応
emisar は、任意のコマンド実行ツールではなく、宣言済みのインフラアクションを MCP API を通じて MCP クライアントに公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://emisar.dev/api/mcp/rpcclaude mcp add --transport http dev-emisar-emisar https://emisar.dev/api/mcp/rpc{"mcpServers":{"dev-emisar-emisar":{"type":"http","url":"https://emisar.dev/api/mcp/rpc"}}}Cursor で開く{"servers":{"dev-emisar-emisar":{"type":"http","url":"https://emisar.dev/api/mcp/rpc"}}}VS Code で開く{"mcpServers":{"dev-emisar-emisar":{"type":"http","url":"https://emisar.dev/api/mcp/rpc"}}}{"mcpServers":{"dev-emisar-emisar":{"serverUrl":"https://emisar.dev/api/mcp/rpc"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
emisar
エージェントに作業を続けさせながら、本番環境への権限を制限します。
emisar は、シェルの代わりに、MCP 対応エージェントへ宣言済みインフラストラクチャアクションのカタログを提供します。ポリシーによって、実行するアクション、人の確認を待つアクション、拒否するアクションを決定します。小規模な送信専用ランナーが、実行前にホスト上でアクションを再確認します。
公開パックカタログから始め、ホストに適したパックを emisar に提案させましょう。すべてのクライアントに別の MCP サーバーを追加することなく、独自のアクションを追加できます。
まずは 1 台のホストから
emisar アカウント、systemd を備えた Linux ホスト、そして sudo が必要です。GitHub CLI の gh attestation verify --bundle でリリース署名を確認します。GitHub CLI がない場合、インストーラーはチェックサムのみで続行する前に確認を求めます。--yes を指定すると、警告を表示して続行します。emisar.dev:443、registry.emisar.dev:443、tuf-repo-cdn.sigstore.dev:443、および tuf-repo.github.com:443 への送信 HTTPS を許可してください。最後の 2 つは、リリースのチェックサム認証に使用される公開信頼ルートを配信します。GitHub へのログインは不要です。
GitHub は、任意で利用できるリリースのフォールバックです。このフォールバックを利用する場合は、api.github.com:443、github.com:443、および release-assets.githubusercontent.com:443 も許可してください。
-
コンソールで Connect a runner を選択します。生成されたコマンドをコピーします。このコマンドには、一度だけ使える新しい登録キーが含まれています。
-
ホスト上で実行します。
curl -fsSL https://emisar.dev/install.sh \ | sudo EMISAR_ENROLLMENT_KEY=emkey-enroll-... bashインストーラーは署名付きリリースチェックサムを認証し、アーカイブがそのチェックサムと一致することを確認します。その後、サービスを作成し、ホストに適合したスターターパックをインストールして、ランナーを起動します。
-
コンソールでランナーがオンラインであることを確認し、理由を指定して
linux.uptimeをディスパッチします。出力が表示され、実行内容が監査証跡に記録されたら完了です。 -
AI agents を開き、クライアントを接続します。リモート MCP クライアントは OAuth を使用します。ローカルの stdio クライアントでは、
emisar-mcpブリッジとそのブラウザー承認フローを利用できます。
期待される出力やトラブルシューティングを含む手順の全体は、emisar.dev/docs/quickstart にあります。エージェントは、公開されている install-emisar スキルを使ってセットアップを実行し、検証できます。
アクションの実行方法
AI client
| MCP: discover actions, request one with typed arguments
v
emisar control plane
| authenticate, scope, apply policy, wait for approval when required
v
outbound-only runner
| verify pack hash, validate arguments, enforce local limits
v
declared host command
stream redacted output, journal the attempt, update fleet audit
アクションパックでは、実行可能ファイル、argv の形式、引数スキーマ、リスク、タイムアウト、出力制限、秘匿化、そして副作用の説明といった契約を定義します。モデルはこの契約から選択し、ランナーが実行するコマンドラインを独自に作り出すことはありません。
パックを追加すると、同じ MCP インターフェースを通じて機能を追加できます。カタログが変更されても、運用担当者は別のツールサーバーをデプロイしたり、すべてのエージェントを再設定したりする必要はありません。
境界を守る仕組み
- ランナーはアウトバウンド TLS WebSocket を開き、インバウンドリスナーは公開しません。 コマンドは確立済みの接続を通じて返されます。
- クラウドからの入力は、宣言済みアクションと、型付けされスキーマで制限された 引数に限られます。ランナーは不明なアクションや引数を拒否します。
- パックはコンテンツアドレス方式です。内容のハッシュによって識別されます。 コントロールプレーンは信頼済みパックのハッシュを固定し、ランナーは実行前に ディスク上の内容からハッシュを再計算します。新規または変更されたカスタム パックは、信頼されるまで実行を待機します。
- コントロールプレーンは、ディスパッチ前にランナーのスコープ、リスクポリシー、 アクションの上書き、継続的な許可、条件付き承認を評価します。
- ホスト上では、ランナーが実行オプションをパックの制限内に収め、宣言された バイナリと argv を実行します。ランナーは出力がホストから送信される前に 機密情報をマスキングし、Emisar はマスキング済みの出力を実行履歴に保持します。
- コントロールプレーンの監査記録には、拒否されたリクエストと保留中のリクエストも 含まれます。各ランナーも、実行の試行とローカルでの拒否を、ハッシュチェーンで 保護された JSONL ジャーナルに記録します。
- ランナーでは、ブリッジによる認証済みディスパッチを任意で必須にできます。 これは、顧客が認可した MCP ブリッジが Ed25519 または ECDSA P-256 リーフキーで 署名した意図です。この場合、コントロールプレーンは許可された呼び出しを 捏造したり、その範囲を拡大したりできません。
保証、制限事項、脅威モデルの詳細については、
.agent/kb/specs/security-model.md をご覧ください。
emisar が提供しないもの
- サンドボックスやプロセス分離機能ではありません。次のようなものの使用を おすすめします:coop。
- 汎用の
execute(command)ツールでも、SSH の代替でもありません。 - OS の最小権限、変更管理、構成管理に取って代わるものではありません。
- 許可された破壊的なアクションを無害にするものではありません。安全性の境界は、 使用するアクション、パックの信頼性、ポリシー、ランナーの構成、ホストの権限に よってのみ保たれます。
ステージング専用の shell パックは、宣言済みアクションモデルに対する明示的な
ブレークグラス(緊急時のみ)の例外です。重大リスクに分類され、デフォルトでは
拒否され、提案されることもありません。プロダクションのランナーには
インストールしないでください。
適切な項目を見つける
| 目的 | 参照先 |
|---|---|
| ホストのインストール、アップグレード、強化、診断を行う | runner/README.md |
| Claude、ChatGPT、Cursor、Codex、またはその他の MCP クライアントを接続する | CLI エージェントを接続する |
| stdio ブリッジを調査または開発する | mcp/README.md |
| アクションパックを参照、インストール、作成する | packs/README.md |
| エージェントに emisar のインストール、クライアントの接続、またはパックの作成を行わせる | skills/README.md |
| アーキテクチャと信頼境界を確認する | .agent/kb/architecture.md |
| プロトコルの契約を確認する | .agent/kb/specs/wire-protocol.md および .agent/kb/specs/mcp-api.md |
| コントロールプレーンに貢献する | portal/README.md |
| 本番環境の GCP インフラを確認する | infra/README.md |
リポジトリの構成
portal/ Elixir/Phoenix control plane, operator console, website, and MCP API
runner/ Go host runner and operator CLI
mcp/ Go stdio-to-HTTP MCP bridge
packs/ Versioned action-pack catalog
skills/ Standalone customer skills for coding agents
infra/ Production Terraform for emisar on Google Cloud
run Root contributor command for development, tests, gates, and operations
dev/ Development Compose topologies, images, configs, and fixtures
tools/ Go implementations behind the contributor command and CI
dist/ Tracked distribution packages plus ignored generated build output
.agent/kb/ Repository architecture, specifications, runbooks, and rules
各トップレベルプロジェクトには、アーキテクチャ、セキュリティルール、検証ゲートを
記載した独自の AGENTS.md があります。コントリビューター向けコマンドの一覧は、
./run help を実行してください。
ローカルで開発する
推奨の方法では、ホストに Coop と Docker だけが必要です。リポジトリで指定されているすべてのツールバージョンを、分離されたプロジェクトイメージにインストールします。
./run bootstrap # works before Go is installed
coop build # build the pinned project image once
coop run -- ./run setup # sidecars, deps, migrations, browser tooling
coop shell # enter the development box
次に、シェル内で以下を実行します。
./run seed # explicit, idempotent demo data
./run serve # live reload at the URL printed by Coop
# or: ./run serve --iex
ネイティブ環境で開発する場合は、asdf を使って .tool-versions に記載された正確なバージョンをインストールしてください。また、Git、Coop、Docker、PostgreSQL クライアント、ShellCheck、jq、GNU Bash(read -N 対応)、GNU coreutils、Chrome/Chromium、ImageMagick も必要です。macOS では、Apple に同梱されている Bash と BSD ユーティリティでは、すべてのパックの回帰チェックを実行できません。
brew install bash coreutils jq
export PATH="$(brew --prefix coreutils)/libexec/gnubin:$(brew --prefix bash)/bin:$PATH"
./run setup はサービスの起動前にすべての前提条件を確認します。./run doctor は検出されたすべてのバージョンと、修正が必要な不一致を報告します。macOS では、セットアップ後にこのワークスペースで一度 ./run certs trust を実行してください。
高速な開発ループでは、現在の環境で Phoenix を実行し、ワークスペースごとに分離された Coop の依存スタックでは PostgreSQL と Keycloak のみを稼働させます。
./run urls を実行すると、このワークスペース固有の Portal、メトリクス、Postgres、Keycloak の URL が表示されます。Coop のフォークは同じセットアップを引き継ぎますが、異なるポートとボリュームが割り当てられます。セットアップ、serve、reset では、指定しない限りシードは適用されません。
現在のワークスペースの読み取り専用の状態を確認するには ./run status、正確なサイドカーのログを確認するには ./run logs [db|keycloak]、開発用データベースに接続するには ./run psql を使用します。各標準ゲート(./run gate <project>)は、現在のフェーズと経過時間を表示します。失敗した場合は、停止したフェーズが示されます。
ルートの docker-compose.yml には、リリース版 Portal イメージ、シード済みのデモデータ、3 つのランナー、MCP、署名を含む、より時間のかかるパッケージ構成が残されています。./run smoke で起動すると、http://localhost:4010 で利用できます。portal/README.md と dev/README.md を参照してください。
ライセンス
このリポジトリはデュアルライセンスです。
runner/、mcp/、packs/は Apache License 2.0 の下でオープンソースとして公開されています。ホスト上のコンポーネントは、個別に調査、ビルド、パッケージ化、運用できます。portal/を含むその他すべては、Business Source License 1.1 の下でソースコードを利用できます。本番以外の用途は無料です。本番での使用は、Additional Use Grant に基づき、Apache ライセンスのコンポーネントまたはホスト型サービスの運用に必要な範囲でのみ許可されます。それ以外の本番利用には商用ライセンスが必要です。各バージョンは Change Date に Apache 2.0 に切り替わります。
コントリビューションガイド、セキュリティポリシー、CLA を参照してください。商用ライセンスについては、[email protected] までお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。