PHPackages                             netresearch/nr-mcp-agent - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. netresearch/nr-mcp-agent

ActiveTypo3-cms-extension

netresearch/nr-mcp-agent
========================

AI chat assistant for the TYPO3 backend using nr-llm and MCP server

v0.6.6(yesterday)2100↑2900%GPL-2.0-or-laterPHP ^8.2

Since Mar 24Compare

[ Source](https://github.com/netresearch/t3x-nr-mcp-agent)[ Packagist](https://packagist.org/packages/netresearch/nr-mcp-agent)[ Docs](https://github.com/netresearch/t3x-nr-mcp-agent)[ RSS](/packages/netresearch-nr-mcp-agent/feed)WikiDiscussions Synced today

READMEChangelog (10)Dependencies (15)Versions (20)Used By (0)

AI Chat for TYPO3 (`nr_mcp_agent`)
==================================

[](#ai-chat-for-typo3-nr_mcp_agent)

[![CI](https://github.com/netresearch/t3x-nr-mcp-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/netresearch/t3x-nr-mcp-agent/actions)

Note

**Proof of concept.** This extension explores a concrete question: is agent-like behavior possible within the TYPO3 backend? It is not intended to answer whether this is the right architectural approach — the space is moving fast, and the tradeoffs between MCP, tool-calling, browser-side agents, and custom integrations are far from settled. The goal here is to show that it *works*, and to invite feedback from anyone thinking about the same problem. If you have thoughts, [open an issue](https://github.com/netresearch/t3x-nr-mcp-agent/issues).

AI Chat integrates a conversational AI assistant into the TYPO3 backend. Powered by [nr-llm](https://github.com/netresearch/t3x-nr-llm) and the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), it enables backend users to manage content through natural language.

[![AI agent creating a page, adding content, and rating it in TYPO3](Documentation/Images/AgentDemo.gif)](Documentation/Images/AgentDemo.gif)

Features
--------

[](#features)

- **Integrated chat module** -- A dedicated backend module under Admin Tools with a modern chat interface built as a Lit web component.
- **Content management via MCP** -- Connect to hn/typo3-mcp-server to give the AI access to TYPO3 content operations (pages, records, content elements).
- **Conversation history** -- Persistent conversations with resume, rename, pin, and auto-archive support.
- **Background processing** -- Messages are processed via CLI commands (`exec` or `worker` mode), keeping the web server responsive.
- **Floating chat panel** -- A toolbar-triggered bottom panel that stays visible across module navigation, allowing users to chat while working in the page tree.
- **Markdown rendering** -- LLM responses are rendered as rich Markdown (headings, lists, code blocks, tables) using vendored [marked.js](https://marked.js.org/) v15 and [DOMPurify](https://github.com/cure53/DOMPurify) v3. No build step required.
- **Secure by design** -- Group-based access control, message length limits, concurrency caps, sanitized error messages, and XSS-safe Markdown rendering.

Supported file formats
----------------------

[](#supported-file-formats)

The AI chat supports file uploads for use as conversation attachments. Supported formats depend on your configured LLM provider:

FormatMIME typeAvailabilityPDF`application/pdf`Always (text extracted server-side)DOCX`application/vnd.openxmlformats-officedocument.wordprocessingml.document`Always (text extracted server-side)TXT`text/plain`AlwaysXLSX`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`Requires `phpoffice/phpspreadsheet` (see below)Images (JPEG, PNG, WebP)variousRequires a vision-capable providerNative PDF/DOCXvariousRequires a DocumentCapable provider (e.g. Anthropic Claude)When a provider natively supports a format (e.g. Claude natively handles PDFs), the file is sent as-is. Otherwise, text is extracted server-side and injected into the prompt.

### XLSX support (optional)

[](#xlsx-support-optional)

XLSX uploads require the optional `phpoffice/phpspreadsheet` library:

```
composer require phpoffice/phpspreadsheet:^3.0
```

If not installed, XLSX files will be rejected at upload time with a 422 response.

Quick Start
-----------

[](#quick-start)

1. Install the extension:

    ```
    composer require netresearch/nr-mcp-agent
    vendor/bin/typo3 database:updateschema
    ```
2. In nr-llm, create a **Task** record that configures your LLM provider (e.g. OpenAI, Anthropic). Note the UID.
3. Go to **Admin Tools &gt; Settings &gt; Extension Configuration &gt; nr\_mcp\_agent** and set `llmTaskUid` to the Task UID from step 2.

The AI Chat module is now available under **Admin Tools &gt; AI Chat**.

### Enable MCP (optional)

[](#enable-mcp-optional)

1. Set `enableMcp = 1` in the extension configuration.
2. A default **MCP Server** record (`server_key=typo3`, `transport=stdio`, `arguments=mcp:server`) is created automatically on the first chat request. To customise or add additional servers, open the **List module** at pid = 0.

If you use [hn/typo3-mcp-server](https://github.com/hauptsache-net/typo3-mcp-server)as the stdio backend, install it first:

```
composer require hn/typo3-mcp-server
```

Multiple MCP servers can be configured simultaneously. Tool names are prefixed with the server key (e.g. `typo3__ReadTable`) so the LLM knows which server to call.

DDEV Development
----------------

[](#ddev-development)

```
git clone https://github.com/netresearch/t3x-nr-mcp-agent.git
cd t3x-nr-mcp-agent
ddev start
ddev composer install
ddev typo3 database:updateschema
```

Run quality checks:

```
ddev composer ci             # All checks (PHPStan + CGL + tests)
ddev composer ci:phpstan     # Static analysis (includes architecture tests)
ddev composer ci:cgl         # Code style check
ddev composer ci:tests:unit  # Unit tests only
ddev composer ci:tests       # Unit + functional tests
ddev composer ci:mutation    # Mutation testing (Infection)
ddev composer fix:cgl        # Fix code style
```

Run JavaScript unit tests (Jest):

```
npm install
npm run test:js
```

For Docker-based testing that mirrors CI exactly (no DDEV required):

```
./Build/Scripts/runTests.sh -s unit        # Unit tests
./Build/Scripts/runTests.sh -s phpstan     # PHPStan
./Build/Scripts/runTests.sh -s cgl         # Code style check
./Build/Scripts/runTests.sh -s mutation    # Mutation testing
./Build/Scripts/runTests.sh -s unit -p 8.3 # Specific PHP version
```

Configuration
-------------

[](#configuration)

All settings are in **Admin Tools &gt; Settings &gt; Extension Configuration &gt; nr\_mcp\_agent**:

SettingDefaultDescription`llmTaskUid``0`UID of the nr-llm Task record **(required)**`processingStrategy``exec``exec` (fork per request) or `worker` (long-running)`allowedGroups`*(empty)*Comma-separated group UIDs (empty = all)`enableMcp``false`Enable MCP server integration`maxMessageLength``10000`Max characters per message`maxActiveConversationsPerUser``3`Max concurrent processing conversations`maxConversationsPerUser``50`Max conversations kept per user`autoArchiveDays``30`Auto-archive after N days of inactivityFor the full documentation, see the [Documentation/](Documentation/) folder or the rendered docs on [docs.typo3.org](https://docs.typo3.org/).

Architectural decisions are documented as ADRs in [Documentation/Developer/ADR/](Documentation/Developer/ADR/).

Acknowledgments
---------------

[](#acknowledgments)

- **[hauptsache.net](https://hauptsache.net/)** -- For creating [hn/typo3-mcp-server](https://github.com/hauptsache-net/typo3-mcp-server), the MCP server that exposes TYPO3 content operations as tools.
- **[nr-llm](https://github.com/netresearch/t3x-nr-llm)** -- The Netresearch LLM abstraction layer for TYPO3.
- **[nr-vault](https://github.com/netresearch/t3x-nr-vault)** -- Secure credential storage for TYPO3.

License
-------

[](#license)

GPL-2.0-or-later. See [LICENSE](LICENSE) for details.

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance100

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Recently: every ~0 days

Total

18

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/151247?v=4)[Netresearch DTT GmbH](/maintainers/netresearch)[@netresearch](https://github.com/netresearch)

---

Tags

mcpaiextensionbackendchattypo3llm

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/netresearch-nr-mcp-agent/health.svg)

```
[![Health](https://phpackages.com/badges/netresearch-nr-mcp-agent/health.svg)](https://phpackages.com/packages/netresearch-nr-mcp-agent)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k57](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40529.5k](/packages/wazum-sluggi)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[netresearch/t3-cowriter

With the help of AI you can now work on a page together with a cowriter - a digital assistant that helps you to write your content.

1111.7k](/packages/netresearch-t3-cowriter)[web-vision/wv_deepltranslate

DeepL Translate (CORE) - This extension provides option to translate content element, and TCA record texts to DeepL supported languages.

33305.5k](/packages/web-vision-wv-deepltranslate)[web-vision/deepltranslate-core

DeepL Translate (CORE) - This extension provides option to translate content element, and TCA record texts to DeepL supported languages.

33142.5k8](/packages/web-vision-deepltranslate-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
