Zwei präzisionsgefertigte gebürstete Aluminium-Stücke treffen sich an einem ingenieurmäßig gefügten Saum auf Eichentisch, weiches Tageslicht von links.
Extension · moselwal/webmcp

webmcp — das Browser-MCP für Ihr TYPO3.

Web Model Context Protocol Server, der Tools wie Suche, Navigation und Page-Content direkt über navigator.modelContext bereitstellt. KI-Agenten nutzen sie unmittelbar im Browser, mit SecureContext-Checks und CSRF-Nonce — keine externe API nötig.

Das Problem

Wenn der KI-Agent nicht weiterkommt, weil er nichts sieht.

Mit webmcp

  • Standardisiertes navigator.modelContext-API direkt im Browser
  • Built-in-Tools: search, navigation, page-content
  • Eigene Tools registrierbar via ToolProviderInterface
  • SecureContext + CSRF-Nonce, FE-Group-bewusst

Bisher

  • KI-Agenten müssen externe REST-/GraphQL-APIs lernen
  • Auth-Tokens, Rate Limits, Caching-Probleme
  • Tools sind nicht im aktuellen Browser-Kontext verfügbar
  • Jede Site implementiert ein eigenes Tool-Vokabular

Vier Bausteine

Optional: Form-Tool

Mit typo3/cms-form als optionaler Dependency wird auch Formular-Submission als Tool exponiert — KI-Agenten können direkt Anfragen einreichen.

Sicherheit by default

SecureContext-Pflicht (HTTPS), CSRF-Nonce in jeder Tool-Anfrage, Access-Control über TYPO3-FE-Groups respektiert.

Custom Tool Provider

Eigene Tools über ToolProviderInterface registrieren — z.B. um shop-spezifische Such-Funktionen oder Custom-Forms freizugeben.

Built-in Tools

search, navigation, page-content — sofort einsatzbereit nach der Installation.

Verfügbarkeit: Coming soon — öffentliche Veröffentlichung in Vorbereitung

TYPO3: 13.4 – 14.0 · PHP: 8.2+ · Optional: typo3/cms-form (Form-Tool)

Die öffentliche Bereitstellung als Composer-Paket wird derzeit vorbereitet. Wenn Sie den Baustein bereits in Ihrer TYPO3-Plattform einsetzen möchten, sprechen Sie uns über das Kontaktformular an — wir liefern aktuell im Rahmen von Plattform-Engagements aus.

Konfiguration

Site Set aktivieren

Binden Sie das Site Set moselwal/webmcp in Ihre Site-Konfiguration ein.

Settings

In config/sites/<site>/settings.yaml:

 

webmcp:
  enabled: true
  apiBasePath: '/_webmcp/api'
  tools:
    search:
      enabled: true
      maxResults: 20
    navigation:
      enabled: true
      maxDepth: 4
    page-content:
      enabled: true

Eingebaute Tools

Alle Tools respektieren TYPO3-Zugriffsrechte (fe_group, starttime, endtime, hidden). Es werden nur Inhalte ausgeliefert, die für den aktuellen Besucher (anonym oder eingeloggt) sichtbar sind.

ToolBeschreibungInput
searchVolltextsuche über Seiten und Inhaltselemente{ query: string, limit?: int }
navigationSeitenbaum als strukturiertes JSON{ rootPageId?: int, maxDepth?: int }
page-contentStrukturierter Inhalt einer einzelnen Seite{ pageId?: int, slug?: string }

Eigene Tools entwickeln

1. ToolProvider implementieren

 

<?php

use Moselwal\WebMcp\Domain\Contract\ToolProviderInterface;
use Moselwal\WebMcp\Domain\Model\ToolAnnotations;
use Moselwal\WebMcp\Domain\Model\ToolDefinition;

final class ShopToolProvider implements ToolProviderInterface
{
    public function getIdentifier(): string
    {
        return 'shop';
    }

    public function getTools(): array
    {
        return [
            new ToolDefinition(
                name: 'product-search',
                description: 'Search products in the shop',
                inputSchema: [
                    'type' => 'object',
                    'properties' => [
                        'query' => ['type' => 'string'],
                        'category' => ['type' => 'string'],
                    ],
                    'required' => ['query'],
                ],
                annotations: new ToolAnnotations(readOnlyHint: true),
            ),
        ];
    }
}

 

2. ToolHandler implementieren

 

<?php

use Moselwal\WebMcp\Domain\Contract\ToolHandlerInterface;
use Moselwal\WebMcp\Domain\Model\ToolResult;
use Psr\Http\Message\ServerRequestInterface;

final class ProductSearchHandler implements ToolHandlerInterface
{
    public function getToolName(): string
    {
        return 'product-search';
    }

    public function execute(array $input, ServerRequestInterface $request): ToolResult
    {
        // Produkt-Suche implementieren ...
        return ToolResult::success(['products' => $results]);
    }
}

 

Beide Klassen werden automatisch über _instanceof-Tags in der Services.yaml registriert — keine zusätzliche Konfiguration nötig.

Wie es funktioniert

  1. Beim Rendering einer Seite injiziert die Extension JavaScript über den AssetCollector.
  2. Das JavaScript registriert alle aktivierten Tools über navigator.modelContext.registerTool().
  3. Ruft ein KI-Agent ein Tool auf, sendet der Browser einen POST-Request an /_webmcp/api/{toolName}.
  4. Die PSR-15-Middleware validiert Request (CSRF-Nonce, Input) und delegiert an den passenden ToolHandler.
  5. Das Ergebnis wird als JSON zurückgegeben.

Voraussetzungen

Quellcode & Doku

TYPO3 Extension Repository

Nicht im offiziellen TER — die öffentliche Distribution über Composer wird vorbereitet (coming soon).

Composer-Paket

Veröffentlichung als moselwal/webmcp in Vorbereitung. Coming soon.

Repository

Quellcode und Issue-Tracker werden mit der öffentlichen Veröffentlichung freigeschaltet. Coming soon.

Mirror

Öffentlicher Mirror und Pull-Request-Workflow folgen mit der Veröffentlichung. Coming soon.

Nächster Schritt

Hilfe bei der Integration?

webmcp ist Open Source und für Selbst-Integratoren gedacht. Wenn Sie webmcp für Ihren spezifischen Use Case (eigene Tools, kommerzielle KI-Agenten-Anbindung, Custom-Permissions) integrieren wollen, helfen wir gegen Tagessatz oder als Teil unseres CMS as a Service.

Integration besprechen

Oder direkt schreiben: kontakt@moselwal.de

Setzen wir ein bei …

Dieses Paket trägt die Tool-Schicht in unseren Themen-Linien AI-Ready CMS und AI-Ready Commerce. In der betreuten Variante läuft es als Bestandteil unseres AI-Ready CMS as a Service.