Warning
Experimental. This extension is experimental and not yet ready for production use. It is built on top of WebMCP, which is itself an experimental, early-stage proposal. Both the underlying specification and this extension's API may change or break at any time without notice. Use at your own risk.
Troubleshooting
Everything in the extension degrades silently on purpose — a missing manifest,
an absent ModelContext or a malformed config simply registers nothing.
That is good for visitors but means failures are quiet. Work through the checks
below in order.
No tools are registered
Check, from the outside in:
-
Is the JSON block on the page? View source and look for
<script type="application/json" id="webmcp-config">. In the console:document.getElementById('webmcp-config')?.textContentCopied!- Empty / missing → the manifest was not rendered. Verify the Fluid
snippet (Step 2 in Quickstart) is in your template and that the
variable name matches the data processor's
as(defaultwebmcpConfigJson).
- Empty / missing → the manifest was not rendered. Verify the Fluid
snippet (Step 2 in Quickstart) is in your template and that the
variable name matches the data processor's
-
Does the block contain your tool?
JSON.parse(document.getElementById('webmcp-config').textContent).toolsCopied!- Empty array → no provider yielded a manifest. Either the provider is not
registered (see below) or its
manifestreturned() nullfor this request.
- Empty array → no provider yielded a manifest. Either the provider is not
registered (see below) or its
- Is the runtime loaded? Confirm
webmcp.is included in the page footer (thejs includeJSFooterTypoScript). -
Is there a ModelContext to register against?
document.modelContext || navigator.modelContextCopied!undefinedin both → the browser has no agent surface. This is expected in a normal browser; the runtime intentionally does nothing. Test with an agent-capable client or Chrome with the WebMCP origin trial enabled.
My provider is never called
The provider is a service tagged webmcp.tool. If it is not picked up:
- Confirm your extension enables autoconfiguration in
Configuration/(Services. yaml _defaultswith `autoconfigure: true`). The tag is inherited from the interface's#[AutoconfigureTag('webmcp.tool')]only when autoconfiguration is on. - Otherwise tag the service manually (see the note in Quickstart).
- Clear the TYPO3 caches after adding a new service.
A tool depends on an earlier data processor
Providers receive $processedData from data processors that ran before
the
Tool in the same content object. If your provider
builds on, say, a MenuProcessor output, that processor must have a lower
key so it runs first (see the ordered example in Configuration).
Analytics events are not recorded
- Is analytics enabled? Check
analyticsEnabledin the extension configuration. When off,/webmcp-eventis passed through and nothing is stored. - Is the tool name whitelisted? Only names returned by a registered
provider's
nameare logged, and() namemust equal the() Manifestname. A mismatch silently drops the event. - Getting 429s? You are hitting the rate limit
(
analyticsRateLimitcalls per IP per minute). Raise it or set0to disable — see Analytics. - Getting 204 but no row? A
204is also returned for cross-site posts rejected by theSec-Fetch-Siteguard and for the normal success path. Confirm the beacon is a genuine same-originPOSTto/webmcp-event.
The manifest looks corrupted / cut off
Tool values are embedded verbatim inside a <script> block. The processor
escapes < > & ' " as \uXXXX (JSON_HEX_*), so a </script> inside
an editor-controlled value cannot break out. If you see raw HTML entities where
you expected characters, do not disable those flags — decode on read
instead.