mcpField
A
AgentPlaybooks

AgentPlaybooks

リモート
agentplaybooks.aiAI・エージェント10今日更新
リポジトリ公式サイト

AgentPlaybooks について

AgentPlaybooksは、AIエージェントのペルソナ、スキル、指示、メモリ、ツール接続をまとめるポータブルな環境です。複数のプラットフォームで設定を管理する個人やチーム向けで、エクスポート可能なプレイブックを共通の情報源にします。

主な機能

  1. 01エージェント設定のポータブルなプレイブック
  2. 02ペルソナ、指示、スキル、メモリの管理
  3. 03CLIによる監査、同期、バックアップ
  4. 04実行ごとに分離されたバージョン管理付きキャンバス
  5. 05サーバー側で認証情報を注入するシークレット保管庫

活用シーン

  1. 01複数のエージェントプラットフォーム間での同期
  2. 02ローカルのエージェント設定の監査と移行
  3. 03プロジェクトの指示やスキルのチーム共有

MCP 対応

プレイブックにはMCPサーバーを保存でき、MCP Skills拡張を通じてスキルを提供できます。他のMCPサーバーやOpenAPIサービスをツールとして連携でき、認証情報はシークレット保管庫から解決されます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://agentplaybooks.ai/api/mcp/manage
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://agentplaybooks.ai/api/mcp/manage認証が必要

ツール

詳細

AgentPlaybooks

1つのプレイブックで、あらゆるエージェントに対応。 AI エージェントのためのポータブルな運用環境です。ペルソナ、スキル、MCP サーバー、プロジェクトの指示、メモリを1つの信頼できる情報源にまとめます。

エージェントを自分のものに保ちましょう。AgentPlaybooks では、スキル、ペルソナ、MCP サーバー、プロジェクトの指示、メモリを1つのポータブルなプレイブックに保存できるため、プラットフォームを切り替えたり、複数のプラットフォームを同時に使ったり、ベンダーロックインなしでセルフホストしたりできます。

エージェントの設定は、Claude、ChatGPT、Cursor、Codex、Gemini、ローカルモデル、そして今後登場するプラットフォーム間で同期されます。プレイブックこそがポータブルな信頼できる情報源であり、特定のベンダーやエディターではありません。

これは、単なる別のスキルストアや MCP レジストリではありません。スキルと MCP 接続はプレイブックの一部であり、プレイブックは仕事全体を担います。これは、身体を持つエージェントにも当てはまります。スキルには、ロボットが作業を実行する順序を記録したデモンストレーションを含められます。

主な特長

プレイブックに含まれるもの

  • ペルソナ:プレイブックごとに1つ。プレイブックのレコードに直接保存されます
  • 指示:常時適用されるプロジェクトルール — AGENTS.md / CLAUDE.md の内容
  • スキル:Agent Skills 形式の SKILL.md ドキュメント。すべてのクライアントでフロントマターが保持されます
  • スキルの添付ファイル:バンドルされたスクリプト、リファレンス、テンプレート。CLI で往復できます
  • デモンストレーション:スキルの実行記録 — YouTube、固定 URL、または LeRobot データセット。タイムスタンプ付きセグメントを含みます。見て学ぶエージェント向け
  • MCP サーバー:Model Context Protocol 形式のツールとリソース
  • メモリ:タグと説明を付けられるキーと値のストア。 ネイティブの Hermes メモリプロバイダーを備えています
  • Hermes Tools プラグイン:プレイブックのスキル、MCP/OpenAPI ツール、認証情報を接続
  • キャンバス:バージョン管理された Markdown 作業ドキュメント。プレイブックの実行ごとに範囲が設定されるため、複数のチームが成果物を共有せずに同じプレイブックを実行できます

認証情報を渡さずに使う

  • シークレットボルト:AES-256-GCM、ユーザーごとに鍵を導出します。エージェントはシークレットを名前で参照し、プラットフォームがサーバー側で値を注入する(use_secret)ため、値がエージェントのコンテキストに入ることはありません。シークレットごとにホストの許可リストを任意で設定でき、有効期限も強制されます。有効期限切れのシークレットは、使用しようとするすべての経路で拒否されます。
  • フェデレーション:他の MCP サーバーや OpenAPI サービスをプレイブックのツールとして利用でき、認証情報は同じボルトから名前で解決されます
  • 監査証跡:すべてのフェデレーション呼び出しとボルト操作を記録します。拒否された操作も含まれます

ツールに導入する

  • Claude:1つのプラグインで、アカウント内のすべてのプレイブックを claude.ai、Claude Desktop、Cowork、Claude Code、モバイルで利用できます。OAuth でサインインし、API キーは不要です。または、単一のプレイブックをカスタムコネクターとして追加できます。Claude での AgentPlaybooksを参照してください。
  • Cursor と VS Code:アカウント全体または単一のプレイブックをワンクリックでインストールできます。各プレイブックの Integrations タブと、MCP Integrationから利用できます。
  • CLI + ポータブル Agent Plugin:ローカルのエージェント設定を監査してから、1つのプレイブックを Claude Code、Cursor、ChatGPT/Codex、Google Antigravity、Grok Bot、Hermes に同期します
  • Agent Plugins 1.0:プロジェクトプラグインをインストールするか、単一のプレイブックを plugin.json、mcp.json、完全な Agent Skills ディレクトリとしてエクスポートできます。互換性のある MCP ホストは、MCP Skills 拡張機能を通じてホストされたプレイブックのスキルを検出することもできます。
  • 非公開のバージョン管理付き中央バックアップは、インストール可能なプラグインのエクスポートとは別です。パッケージにボルトのシークレット値は含まれません。
  • 公開:公開プレイブックのスキルは /.well-known/skills/ でプレーンな Markdown として HTTP 配信されます。URL からインストールでき、レジストリもサインアップも不要です
  • エクスポート形式:Agent Plugin ZIP、JSON、OpenAPI、MCP、Anthropic、Markdown

他の人と共同作業する

  • API キー:ロールベースのアクセス制御(Viewer、Coworker、Admin)
  • チームでの共同作業:人間の認証情報やエージェント API キーを共有せずに、一度限りの編集者招待ができます
  • 探索:実用的なユースケース、セットアップガイド、厳選された AgentPlaybooks のスターター
  • 共有:公開または限定公開のプレイブックを利用できます。プロジェクトのコンテキストは非公開のコピーに保持できます
  • テーマ:システム設定に応じたライトモードとダークモード

技術スタック

カテゴリ技術目的
フレームワークNext.js 16 + React 19App Router、SSR
スタイリングTailwind CSS 4ユーティリティファースト CSS
アニメーションFramer MotionUI アニメーション
アイコンLucide Reactアイコンライブラリ
APIHonoエッジ API ルーティング
データベースSupabasePostgres + Auth + RLS
i18nnext-intlローカライズ(en、hu、de、es)
ドキュメントpublic/docs 内のプレーンな Markdownクライアント側で取得してレンダリング
ホスティングCloudflare Workersエッジデプロイ
アダプター@opennextjs/cloudflareWorkers 上の Next.js

ライブデモ

はじめに

前提条件
  • Node.js 22 以降(package.json の engines。CI は 22 を実行します)
  • npm 11 以降 — npm 10 はロックファイルを書き込みますが、その後 npm ci で拒否されます
  • Supabase プロジェクト
  • Cloudflare アカウント(デプロイする場合は任意)
インストール
git clone https://github.com/matebenyovszky/agentplaybooks.git
cd agentplaybooks
npm install
スターター

examples/ にあるポータブルなプレイブックです。ペルソナ、指示、 スキル、MCP、メモリ、ボルトを、自分で管理するツリーにまとめています。クローンまたは cp -R できる、小規模な MIT ライセンスのサンプルです。マーケットプレイスではありません。

スターター概要
coding-agent-baselineコーディングエージェント用プレイブック:指示、2 つのスキル、安全な MCP スタブ
doctor-drift-demoホストフォルダーとのずれを含むレビュー用プレイブック。ポータブルストアが正式な情報源です
skills-only-starter最小構成のプレイブック:3 つのスキル + 指示。MCP なし
cursor-hermes-starterCursor および Hermes ホスト向けの、ペルソナ、指示、スキルを含むプレイブック

ホストにインストールします(任意で doctor によるチェックを実行してから sync を実行します)。

npx @agentplaybooks/cli@latest doctor examples/coding-agent-baseline
npx @agentplaybooks/cli@latest sync examples/coding-agent-baseline --target=claude,cursor --apply

examples/README.md、CLI ドキュメント、 および Agent Plugins 仕様をご覧ください。

環境変数

次の内容で .env.local ファイルを作成します。

NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key

# Required for the secrets vault. 32 bytes as 64 hex characters:
#   node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Losing it means losing every stored secret — no vault operation can decrypt
# without it, and rotating it invalidates everything already encrypted.
SECRETS_ENCRYPTION_KEY=

任意:

変数効果
NEXT_PUBLIC_APP_URLcanonical タグ、サイトマップ、robots で使用する正式なオリジンです。デフォルトは https://agentplaybooks.ai です。
ALLOWED_ORIGINSカンマ区切りの CORS 許可リストです。ホスト環境のデフォルトを完全に置き換えます。セルフホストインスタンスでは、プロジェクト独自のドメインが信頼されないように設定してください。
SECRETS_REQUIRE_ALLOWED_HOSTStrue にすると、シークレットにホスト許可リストが必須になります。ホストが固定されていないシークレットは、アウトバウンドリクエストに一切使用できません。
開発
npm run dev

http://localhost:3000 を開きます

Cloudflare へのデプロイ
npm run build:worker
npm run preview
npx wrangler deploy

CLI、ChatGPT/Codex プラグイン、Claude Code プラグイン(packages/cli)

agentplaybooks doctor <project> は、ローカルのエージェント設定(指示、Agent Skills、カスタムエージェント、MCP サーバー、ハードコードされた可能性のあるシークレット、ドリフト)を監査します。また、agentplaybooks sync <project> は、正規の agentplaybook.json と、有効なターゲットで不足しているプラットフォームファイルを作成します。対象は、Claude Code、Cursor、ChatGPT/Codex、GitHub Copilot、Gemini CLI、Google Antigravity(.agents/skills)、Grok Bot(.agents/skills。AGENTS.md とともにネイティブで検出されます)、Hermes Agent(~/.hermes/config.yaml に登録された .agents/skills、および同ファイルの mcp_servers: と SOUL.md)です。 agentplaybooks plugin export|import は、Agent Plugins 1.0 パッケージをエクスポート/インポートして往復変換します。マニフェストの拡張部分に含まれるのはシークレットの参照とバインディングのみで、シークレット値は含まれません。 login / playbooks / pull / push は、ユーザー API キーを使って、ホストされたプレイブックとスキル、MCP サーバー、マニフェストを同期します。push は、Agent Skills のフォルダー一式と移植可能なカスタムエージェントを含む、プライベートでバージョン管理されたクロスプラットフォームの AI エージェント設定バックアップも作成します。backups はリビジョンを一覧表示し、pull --snapshot は以前のスナップショットを復元できます。シークレット値は移動せず、spec.secrets で宣言された参照のみが移動します。変更を伴うコマンドはまず実行計画を表示し、対応している場合は --apply、--yes、または対話形式の確認が必要です。packages/cli/README.md とバックアップと移行のガイドを参照してください。

同じパッケージは、ChatGPT/Codex および Cursor のプラグイン(スキル+アカウント MCP)でもあります。API キーの正確な設定方法とインストールコマンドは、packages/cli/README.md に記載されています。

Claude プラグインは、独立した軽量フォルダー plugins/agentplaybooks にあります。アカウント MCP コネクター(OAuth、キー不要)、チャットと Cowork で使えるプレイブックのスキル、固定された npx 経由で公開済み CLI を実行する doctor / sync コマンドが含まれています。claude.ai と Cowork は bin/ ディレクトリを含むプラグインを拒否するため、bin/ ディレクトリはありません。claude.ai では Customize → Plugins → Add marketplace から matebenyovszky/agentplaybooks を追加するか、Claude Code で次の操作を行います。

/plugin marketplace add matebenyovszky/agentplaybooks
/plugin install agentplaybooks@agentplaybooks

API の概要

公開プレイブックと非公開リストのプレイブックへのアクセス

公開プレイブックは誰でも閲覧できます。非公開リストのプレイブックには GUID でアクセスできますが、検索結果には表示されません。

GET /api/playbooks/:guid
GET /api/playbooks/:guid?format=openapi
GET /api/playbooks/:guid?format=mcp
GET /api/playbooks/:guid?format=anthropic
GET /api/playbooks/:guid?format=markdown

GET /api/playbooks/:id/personas
GET /api/playbooks/:id/skills
GET /api/playbooks/:guid/memory

注::id はペルソナとスキルの両方で UUID と GUID をサポートします。

認証済みプレイブックの CRUD(セッション認証)
GET    /api/playbooks
POST   /api/playbooks
PUT    /api/playbooks/:id
DELETE /api/playbooks/:id
ペルソナ(所有者または編集者)
POST   /api/playbooks/:id/personas
PUT    /api/playbooks/:id/personas/:pid
DELETE /api/playbooks/:id/personas/:pid
スキル(所有者または編集者)
POST   /api/playbooks/:id/skills
PUT    /api/playbooks/:id/skills/:sid
DELETE /api/playbooks/:id/skills/:sid
メモリーへの書き込み(API キーまたは所有者)
PUT    /api/playbooks/:guid/memory/:key
DELETE /api/playbooks/:guid/memory/:key
Canvas 作業ドキュメント

Canvas ドキュメントは隔離されたワークフロー実行に属するため、複数のチームが作業成果物を共有せずに同じプレイブックを実行できます。エージェントが時間をかけて改訂できる、長文の Markdown 成果物です。永続的な事実や構造化された状態にはメモリーを使い、PR レビュー、調査レポート、実装計画、段落ごとに編集できる草案などの成果物には Canvas を使います。

GET    /api/playbooks/:guid/runs
POST   /api/playbooks/:guid/runs
GET    /api/playbooks/:guid/canvas?runId=:runId
POST   /api/playbooks/:guid/canvas
GET    /api/playbooks/:guid/canvas/:slug?runId=:runId
PUT    /api/playbooks/:guid/canvas/:slug?runId=:runId
PATCH  /api/playbooks/:guid/canvas/:slug?runId=:runId
DELETE /api/playbooks/:guid/canvas/:slug?runId=:runId

PUT はドキュメントのフィールドを置き換え、expectedVersion が必要です。PATCH は append、prepend、または完全一致の replace 操作による差分更新を行い、こちらも expectedVersion が必要です。バージョンが古い場合は HTTP 409 が返され、複数のエージェントが互いの作業を気づかないまま上書きすることを防ぎます。

curl -X PATCH 'https://your-domain.com/api/playbooks/abc123/canvas/pr-review?runId=RUN_UUID' \
  -H "Authorization: Bearer apb_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "replace",
    "search": "## Security review\nPending.",
    "content": "## Security review\nNo blocking issues found.",
    "expectedVersion": 3
  }'
プレイブック API キー(所有者のみ)
GET    /api/playbooks/:id/api-keys
POST   /api/playbooks/:id/api-keys
DELETE /api/playbooks/:id/api-keys/:kid
人間による共同作業(セッション認証、アクセス管理は所有者が担当)

人間の編集者は、一度限りのリンクで招待されます。プレイブックのコンテンツは編集できますが、所有権に関する管理は所有者のみが行えます。

GET    /api/playbooks/:id/collaborators
POST   /api/playbooks/:id/collaborators
DELETE /api/playbooks/:id/collaborators/:collaboratorId

GET    /api/collaboration-invites/:token
POST   /api/collaboration-invites/:token

招待リンクの有効期限は72時間で、一度だけ承諾できます。アクセス許可の全体像とセキュリティに関する注意事項は、チームでの共同作業を参照してください。

プレイブックのシークレット(所有者または API キー)

シークレットは AES-256-GCM で暗号化されます。エージェントは use_secret MCP ツールまたはプロキシエンドポイントを使用して、平文の値を読み取ることなく、HTTP リクエストでシークレットを使用できます。

GET    /api/playbooks/:guid/secrets          # List metadata only
POST   /api/playbooks/:guid/secrets          # Create encrypted secret
PUT    /api/playbooks/:guid/secrets/:name    # Update/rotate secret
DELETE /api/playbooks/:guid/secrets/:name    # Delete secret

# Dashboard only
GET    /api/playbooks/:guid/secrets/reveal/:name

# Proxy external requests using a secret
POST   /api/playbooks/:guid/secrets/proxy

# Audit trail — shared with federated MCP calls
GET    /api/playbooks/:guid/audit?operation=secret.

拒否された操作も含め、すべてのボールト操作が記録されます。記録内容は、実行された操作、その対象のシークレット、所有者または API キーのプレフィックス、そして secret.use の場合は接続先ホストです。記録にシークレットの値、送信先 URL 全体、キーが含まれることはありません。アクセスできるのは所有者のみです。プレイブック API キーではボールト操作を実行できますが、その記録を読み取ることはできません。

ユーザープロフィールとユーザー API キー(管理)
GET    /api/user/profile
PUT    /api/user/profile

GET    /api/user/api-keys
POST   /api/user/api-keys
DELETE /api/user/api-keys/:kid
公開ディスカバリーと保存済みのお気に入り

これらの API は、公開データの読み取り、ダッシュボードでのスキル/MCP のディスカバリー、既存のお気に入りをサポートします。Explore はサーバーでレンダリングされるユースケースガイドで、厳選されたファーストパーティのスターターリンクを掲載します。これらのカタログを読み込んだり、公開プレイブックを自動的に紹介したりすることはありません。

GET /api/public/playbooks
GET /api/public/skills
GET /api/public/skills/:id
GET /api/public/mcp
GET /api/public/mcp/:id

GET  /api/playbooks/:id/star
POST /api/playbooks/:id/star
GET  /api/user/starred
メモリへの書き戻し(プレイブック API キーまたは所有者)
GET    /api/playbooks/:guid/memory
PUT    /api/playbooks/:guid/memory/:key
DELETE /api/playbooks/:guid/memory/:key
MCP エンドポイント

ローカルの stdio プロセスが必要なクライアントについては、ローカル MCP トランスポートをご覧ください。 同じアカウントツールと認可ハンドラーを使用します。プロトコルの検出は認証情報なしで開始できますが、データ操作にはインスタンスの設定が必要です。

GET  /api/mcp/:guid                    # MCP manifest
POST /api/mcp/:guid                    # MCP JSON-RPC
POST /api/mcp/:guid/tools/:tool        # Call one tool over plain HTTP

POST /api/mcp/manage                   # MCP management server (user API key)

GET    /api/mcp/config/:serverId       # Federated server config (owner)
POST   /api/mcp/config/:serverId
PUT    /api/mcp/config/:serverId
DELETE /api/mcp/config/:serverId
POST   /api/mcp/config/:serverId/test  # Try the connection before saving it

GET  /api/mcp-registry/search          # Search the public MCP registry
GET  /.well-known/mcp-registry-auth    # Registry ownership verification

プレイブックが公開するすべてのツールは、通常の HTTP 呼び出しでも利用できます。そのため、MCP を扱えないクライアントも利用できます。

POST /api/playbooks/:guid/operations/:operation
POST /api/control/:operation           # Account-level operations
HTTP 経由でのスキルの公開

スキルは通常の Markdown として提供されます。インデックスとスキルごとの SKILL.md があり、認証情報は不要で、CORS はオープンです。どのクライアントでも、レジストリやサインアップなしでベース URL からインストールできます。提供されるのは公開プレイブックのみです。非公開リストおよびプライベートのプレイブックには、引き続き apb pull からアクセスできます。

GET /.well-known/skills/                    # Site-wide: every public playbook's skills
GET /playbooks/:guid/.well-known/skills/    # One playbook
hermes skills install well-known:https://agentplaybooks.ai/.well-known/skills/<name>
接続カタログ
GET /api/connections

フェデレーション MCP サーバーまたは OpenAPI サービスを接続するための、厳選されたテンプレートです。テンプレートは認証情報ではないため公開されています。各エントリには必要なシークレットが名前のみで記載され、プレイブックのボールトから取得されます。

管理
GET  /api/manage/openapi.json
GET  /api/manage/playbooks
POST /api/manage/playbooks
ヘルス
GET /api/health

API キーの使用方法

プレイブック API キーを使用すると、エージェントは単一のプレイブックのメモリを読み書きできます。

curl -X PUT https://your-domain.com/api/playbooks/abc123/memory/user_preferences \
  -H "Authorization: Bearer apb_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"value": {"theme": "dark"}}'

ユーザー API キーは、管理エンドポイントと MCP 管理サーバーで使用します。

curl -X POST https://your-domain.com/api/mcp/manage \
  -H "Authorization: Bearer apb_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"list_playbooks","params":{}}'

プロジェクト構成

agentplaybooks/
  src/
    app/
      .well-known/skills/  # Public skill publishing (site-wide)
      api/
        _shared/           # auth.ts, guards.ts — where authorization lives
        [[...route]]/      # Hono catch-all for most endpoints
        mcp/               # MCP manifest, JSON-RPC, federation config
        playbooks/         # Per-playbook routes (secrets, canvas, audit, …)
      dashboard/           # Authenticated UI
      enterprise/          # Self-hosting landing page
      explore/             # Use cases, setup guidance, curated starters
      login/               # Auth pages
      page.tsx             # Marketing home
    components/
      playbook/            # Editor components
      ui/                  # UI primitives
    i18n/
      messages/            # Translation files (en, hu, de, es)
      request.ts           # Server-side locale resolution
    lib/
      mcp/                 # Federation, secret references
      storage/             # Storage adapters
      supabase/            # Supabase client and types
      crypto.ts            # Secrets vault encryption
  packages/
    cli/                   # AgentPlaybooks CLI + Codex/Cursor plugin
  plugins/
    agentplaybooks/        # Claude plugin (claude.ai, Cowork, Claude Code)
  .claude-plugin/          # Plugin marketplace manifest
  docs/                    # Contributor-facing notes
    security/              # Supplier-assessment pack (HU + EN)
  examples/                # Starter playbooks (fork/clone/sync)
  public/
    blog/  docs/           # Markdown served to the client
  schemas/                 # JSON schemas (agentplaybook.json, …)
  scripts/                 # Seed and build scripts
  supabase/
    migrations/            # Database migrations
  tests/                   # Vitest suites
  open-next.config.ts
  wrangler.jsonc

データベーススキーマ

  • playbooks:中核エンティティ(公開範囲の列挙型(private、public、unlisted)を含む。エージェントのアイデンティティを定義するペルソナフィールドと、常時適用されるプロジェクトルールを記述する instructions を備えています)
  • secrets:ボールト。AES-256-GCM の暗号文、シークレットごとのホスト許可リスト、表示フラグ、ローテーション、使用量の記録を保持します
  • audit_logs:フェデレーション MCP 呼び出しとシークレットボールト操作(secret.*)の、所有者が読み取り可能な監査ログです。値、URL 全体、キーは保持しません。mcp_proxy_audit_logs から名称が変更されました。
  • skills:スキル定義と、任意の SKILL.md コンテンツ
  • skill_attachments:スキル用のセキュアな添付ファイルストレージ
  • mcp_servers:MCP ツールとリソース
  • playbook_runs:再利用可能なプレイブックの分離実行
  • canvas:バージョン管理された Markdown 作業ドキュメント
  • memories:キーと値を保存するメモリストア
  • api_keys:RBAC ロールを持つ、プレイブック単位の API キー
  • user_api_keys:ユーザー単位の API キー
  • playbook_collaborators:承認済みの人間の編集者メンバーシップと、ハッシュ化された使い捨て招待
  • profiles:公開ユーザープロフィールデータ
  • playbook_stars:保存済みのプレイブックのお気に入り

意図的に2つ目の認証情報ストアは設けていません。フェデレーション MCP サーバーと OpenAPI サーバーは、以前は mcp_server_secrets に独自の暗号化シークレットを保存していました。このテーブルは削除されました(supabase/migrations/20260820_drop_mcp_server_secrets.sql)。2つ目のストアがあると、盗まれる価値が最も高い認証情報が、ボールトに備わっているローテーション、有効期限、使用量の記録、監査ログのない、より安全性の低い場所に置かれるためです。現在は transport_config.auth.token_secret でボールトのエントリを指定します。

行レベルセキュリティに関する注意

上記のテーブルでは RLS が有効になっていますが、実行時の主要な認可メカニズムではありません。ほぼすべての API ルートはサービスロールキーを使ってクエリを実行し、RLS をバイパスします。認可はアプリケーションコード(src/app/api/_shared/guards.ts)で実施されます。

一方、匿名キーで公開プレイブックを読み取る一部のエンドポイントでは、RLS が重要な役割を担っています。具体的には、MCP マニフェスト(/api/mcp/:guid)、そのツールルート、公開スキル/MCP の一覧です。これらは supabase/migrations/20260107_permissions_refactor.sql の匿名 SELECT ポリシーに依存しています。これらのポリシーを削除または無効にすると、制限が緩和されるのではなく、エンドポイントが動作しなくなります。

auth.uid() に対して記述されたポリシーは、現在機能していません。JWT を持つクライアントがテーブルクエリを実行していないためです。ブラウザーは /api/* 経由でのみ通信し、Postgres に直接アクセスすることはありません。

セキュリティ

脆弱性は非公開で報告してください。SECURITY.md を参照してください。セキュリティ上の欠陥について、公開の Issue を作成しないでください。

NIS2 / 418/2024. 77. § の申告に対応するセルフホスト運用者は、インシデント対応手順書(HU)から作業を開始できます。リリースの SBOM と cosign verify については、docs/security/supply-chain.md を参照してください。

コントリビューション

  1. リポジトリをフォークします

  2. 機能ブランチを作成します(git checkout -b feature/amazing-feature)

  3. CI と同じ順序で、同じチェックを実行します。

    npm run lint                        # eslint
    npm run test:all                    # vitest + the CLI suite
    npm run prebuild && npx tsc --noEmit
    npm run audit:production
    npm run build
    
  4. 変更をコミットし、プルリクエストを作成します

初めて PR を作成する前に、知っておくべきことが 2 つあります。

  • ロックファイルは npm 11 で作成してください。 npm 10 が生成する package-lock.json は npm ci に拒否されるため、変更の検査に進む前に CI のインストールが失敗します。npx npm@11 install は Node 20 でも動作します。
  • 警告は許容されますが、エラーは許容されません。 npm run lint では現在、既知の react-hooks とナビゲーションに関する警告が報告されており、これらは Issue で追跡されています。クリーンな実行とは、出力がないことではなく、エラーがゼロであることを意味します。

ライセンス

MIT — LICENSE を参照してください。

商用を含め、どのような用途にも使用できます。コピーまたは実質的な部分に、著作権表示と許諾表示を残してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。