Skip to content

MCP-Server (@peacock/mcp-server)

Peacock kommt mit einem nativen Model Context Protocol Server. Damit kann jeder MCP-fähige AI-Agent (Claude Code, Claude Desktop, ChatGPT MCP-Mode, Cursor, Cline, Continue, …) deine Peacock-Inhalte lesen und ändern — mit Audit-Log, Approval-Modes und allen Sicherheitsgarantien der Management-API.

Was er macht

Der MCP-Server übersetzt zwischen dem MCP-stdio-Protokoll und Peacocks REST-API. Jedes Tool entspricht 1:1 einem API-Endpoint:

ToolAktion
list_storiesStories im Space auflisten (mit Filtern wie parent_id, starts_with, lang)
get_storyEine Story per UUID holen (Content + Metadaten)
create_storyNeue Story anlegen (audit-logged)
update_story_contentStory-Content ändern (audit-logged, schema-validiert)
list_componentsBlueprint-Schemas listen
validate_contentDry-Run: Content gegen Blueprint prüfen, ohne zu schreiben
upload_assetBild/Datei hochladen
set_alt_textAlt-Text eines Assets setzen

Alle Mutationen respektieren ai_approval_mode des Space:

  • auto — sofort angewendet
  • review — landet als pending im ai_jobs-Audit-Log; Mensch approved im Admin
  • read_only — Mutationen bekommen 403, Lese-Tools funktionieren

Setup in 90 Sekunden

1) Bearer-Token für einen Space erstellen

Heute aus der Laravel-Konsole — Self-Service in der Admin-UI landet in Roadmap-Phase 9.

bash
docker exec -it peacock-api php artisan tinker
php
$space = \App\Models\Space::where('slug', 'mein-site')->first();
echo $space->issueToken('claude-code-laptop', ['*'])->plainTextToken;

Der ausgegebene String — beginnt mit 123|... — ist dein Management Token. Speichere ihn sicher; er ist nur einmal sichtbar.

2) MCP-Server zum AI-Client hinzufügen

Claude Code (CLI)

bash
claude mcp add peacock \
  --env PEACOCK_API_BASE=https://peacock.example.com \
  --env PEACOCK_TOKEN=123|XXXXXX \
  --env PEACOCK_SPACE=mein-site \
  -- npx -y @peacock/mcp-server

Claude Desktop (claude_desktop_config.json)

json
{
  "mcpServers": {
    "peacock": {
      "command": "npx",
      "args": ["-y", "@peacock/mcp-server"],
      "env": {
        "PEACOCK_API_BASE": "https://peacock.example.com",
        "PEACOCK_TOKEN": "123|XXXXXX",
        "PEACOCK_SPACE": "mein-site"
      }
    }
  }
}

Cursor / Cline / Continue

Alle drei lesen die gleiche mcp.json-Konfiguration wie Claude Desktop. Siehe deren jeweilige MCP-Dokumentation.

3) Verifizieren

In Claude Code:

text
> Liste mir die letzten 5 Stories aus dem Peacock-Space mein-site auf.

Claude sollte das list_stories-Tool aufrufen und die Story-Tabelle zeigen. Wenn nicht: claude mcp logs peacock zeigt Fehler.

Lokaler Build statt npm install

Solange das Repo in Closed Pre-Alpha steht und kein npm-Release existiert:

bash
git clone <repo>
cd peacock
pnpm install
pnpm --filter @peacock/mcp-server build

# Den Pfad zu dist/index.js im AI-Client als command angeben:
node /absolute/path/to/peacock/apps/mcp-server/dist/index.js

mcp.json dann mit "command": "node" und "args": ["/abs/path/dist/index.js"].

Audit-Log

Jeder schreibende Tool-Call landet als Eintrag in ai_jobs:

text
agent_identity = peacock-mcp:<token-name>
action         = create_story | update_story_content | …
status         = auto_applied | pending | rejected
content_before / content_after = JSON-Diff

Im Admin: Sidebar → AI Audit. Filter "pending" zeigt nur Aktionen, die auf menschliche Freigabe warten.

Sicherheits-Modell

  • Token = Space: Ein Token ist auf einen Space gescopt. Es kann keine Stories aus anderen Spaces lesen oder ändern.
  • Approval-Mode: Der Default für neue Spaces ist review — kein automatisches Schreiben. Du musst ihn bewusst auf auto setzen.
  • Read-only Token: Für reine Lese-Agenten erstelle den Token mit Abilities ['read'] statt ['*'].
  • Rate-Limits: MCP-Tools nutzen die normalen API-Throttles (30/min für mutierende Operationen pro Token).
  • Revocation: Token aus dem Admin oder per Artisan zurückziehen: php artisan tinker → \Laravel\Sanctum\PersonalAccessToken::find($id)?->delete();. Sofort wirksam.

Roadmap

Heute (Phase 6)Phase 9+
Toolslist/get/create/update_story, list_components, validate_content, upload_asset, set_alt_textsearch_stories (Meilisearch), move_story, bulk_update, agent_schedule_run
AuthBearer Token in envOAuth-Flow für browser-basierte MCP-Clients
Streamingneinja (für lange Antworten)
npm-Releasenein (Closed Pre-Alpha)mit Phase 8 Open-Source-Release

Roadmap-Status: der Peacock-Roadmap.