Theme
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:
| Tool | Aktion |
|---|---|
list_stories | Stories im Space auflisten (mit Filtern wie parent_id, starts_with, lang) |
get_story | Eine Story per UUID holen (Content + Metadaten) |
create_story | Neue Story anlegen (audit-logged) |
update_story_content | Story-Content ändern (audit-logged, schema-validiert) |
list_components | Blueprint-Schemas listen |
validate_content | Dry-Run: Content gegen Blueprint prüfen, ohne zu schreiben |
upload_asset | Bild/Datei hochladen |
set_alt_text | Alt-Text eines Assets setzen |
Alle Mutationen respektieren ai_approval_mode des Space:
auto— sofort angewendetreview— landet alspendingimai_jobs-Audit-Log; Mensch approved im Adminread_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 tinkerphp
$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-serverClaude 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.jsmcp.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-DiffIm 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 aufautosetzen. - 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+ | |
|---|---|---|
| Tools | list/get/create/update_story, list_components, validate_content, upload_asset, set_alt_text | search_stories (Meilisearch), move_story, bulk_update, agent_schedule_run |
| Auth | Bearer Token in env | OAuth-Flow für browser-basierte MCP-Clients |
| Streaming | nein | ja (für lange Antworten) |
| npm-Release | nein (Closed Pre-Alpha) | mit Phase 8 Open-Source-Release |
Roadmap-Status: der Peacock-Roadmap.