PHPackages                             marekskopal/typo3-mcp-server - 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. [DevOps &amp; Deployment](/categories/devops)
4. /
5. marekskopal/typo3-mcp-server

ActiveTypo3-cms-extension[DevOps &amp; Deployment](/categories/devops)

marekskopal/typo3-mcp-server
============================

MCP server for TYPO3 CMS administration

v0.11.0(2w ago)3271↓86.5%1GPL-2.0-or-laterPHPPHP &gt;=8.3CI passing

Since Apr 17Pushed 1w ago1 watchersCompare

[ Source](https://github.com/marekskopal/typo3-mcp-server)[ Packagist](https://packagist.org/packages/marekskopal/typo3-mcp-server)[ Docs](https://marekskopal.com)[ RSS](/packages/marekskopal-typo3-mcp-server/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (14)Versions (17)Used By (0)

TYPO3 MCP Server
================

[](#typo3-mcp-server)

> **Beta** — This extension is under active development. APIs and behavior may change between releases.

TYPO3 CMS extension that implements an [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for TYPO3 administration. It exposes 60+ tools for managing pages, content elements, files, backend users, and custom extension records via the MCP protocol, allowing AI assistants to interact with your TYPO3 instance.

**This extension is designed primarily for direct, fully autonomous AI operation — changes take effect immediately, with no approval queue between the AI and the live site.** The goal is to let AI agents build, update, and maintain TYPO3 sites end-to-end without human intervention.

Workspace support is **also available** when `typo3/cms-workspaces` is installed: the AI can switch into a workspace, make draft changes, and use the workspace tools to publish or discard them. This is a secondary mode for cases where review-before-publish is required — direct mode remains the primary use case.

### Example Prompts

[](#example-prompts)

These are the kinds of tasks an AI agent can accomplish autonomously through this MCP server:

- *"Create a new 'Services' page under the homepage with three subpages: Web Development, Consulting, and Support. Add introductory text content to each."*
- *"Translate all pages and content elements under page 12 to German and French."*
- *"Upload the product images from these URLs and attach them to the corresponding news records."*
- *"Reorganize the page tree: move all blog posts from 2023 under a new '2023 Archive' page."*
- *"Create a contact form page with a header, text element explaining our office hours, and an address content element."*
- *"Review all pages under 'Products' and update their SEO meta descriptions based on their content."*
- *"Set up the site structure for a new microsite: landing page, about, pricing with three tiers, FAQ, and contact — add placeholder content to each."*
- *"Find all hidden pages in the site and list them with their paths so I can decide which to publish or delete."*
- *"Add a news record for today's product launch, upload the press release PDF, and link it as a file reference."*

Requirements
------------

[](#requirements)

- PHP 8.3+
- TYPO3 v13.4 or v14.x

Installation
------------

[](#installation)

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

After installation:

1. Activate the extension in TYPO3 backend or via CLI: ```
    vendor/bin/typo3 extension:setup
    ```
2. Run database migrations to create the required OAuth and session tables: ```
    vendor/bin/typo3 database:updateschema
    ```

    Re-run this command after every extension update — new tables (e.g. `tx_msmcpserver_mcp_session` introduced for persistent sessions) won't be created automatically.

Setup
-----

[](#setup)

The MCP server supports two transports:

- **HTTP transport** — for remote AI clients connecting over the network (requires OAuth)
- **stdio transport** — for local AI tools running on the same machine (no OAuth needed)

### stdio Transport (Recommended for Local Use)

[](#stdio-transport-recommended-for-local-use)

For AI tools running on the same server as TYPO3 (Claude Desktop, Cursor, Windsurf, VS Code, etc.), use the stdio transport. No OAuth setup is required — the server runs as a backend user directly:

```
vendor/bin/typo3 mcp:server
```

Use `--user` to specify which backend user to run as (defaults to `admin`):

```
vendor/bin/typo3 mcp:server --user editor
```

### HTTP Transport

[](#http-transport)

For remote AI clients, the MCP server is available at `/mcp` on your TYPO3 instance. It uses the [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) (MCP protocol version 2025-03-26).

HTTP transport requires OAuth 2.1 authentication. See the [Authentication](#authentication) section below.

The base path is configurable via the `mcpBasePath` extension setting if `/mcp` is already in use by another handler — see [Base Path](#base-path).

AI Client Configuration
-----------------------

[](#ai-client-configuration)

### Claude Desktop

[](#claude-desktop)

Add to your Claude Desktop config file:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

**stdio (local):**

```
{
  "mcpServers": {
    "typo3": {
      "command": "php",
      "args": ["vendor/bin/typo3", "mcp:server", "--user", "admin"],
      "cwd": "/path/to/your/typo3/project"
    }
  }
}
```

**HTTP (remote):**

```
{
  "mcpServers": {
    "typo3": {
      "url": "https://your-typo3-site.com/mcp"
    }
  }
}
```

OAuth authentication is handled automatically — Claude Desktop will open a browser window for the authorization flow.

### Claude Code (CLI)

[](#claude-code-cli)

**stdio (local):**

```
claude mcp add typo3 -- php vendor/bin/typo3 mcp:server
```

Or add to your project's `.mcp.json`:

```
{
  "mcpServers": {
    "typo3": {
      "command": "php",
      "args": ["vendor/bin/typo3", "mcp:server"]
    }
  }
}
```

**HTTP (remote):**

```
claude mcp add --transport http typo3 https://your-typo3-site.com/mcp
```

Or in `.mcp.json`:

```
{
  "mcpServers": {
    "typo3": {
      "url": "https://your-typo3-site.com/mcp"
    }
  }
}
```

### Cursor

[](#cursor)

Add to `.cursor/mcp.json` in your project root:

**stdio (local):**

```
{
  "mcpServers": {
    "typo3": {
      "command": "php",
      "args": ["vendor/bin/typo3", "mcp:server"],
      "cwd": "/path/to/your/typo3/project"
    }
  }
}
```

**HTTP (remote):**

```
{
  "mcpServers": {
    "typo3": {
      "url": "https://your-typo3-site.com/mcp"
    }
  }
}
```

### Windsurf

[](#windsurf)

Add to `~/.codeium/windsurf/mcp_config.json`:

**stdio (local):**

```
{
  "mcpServers": {
    "typo3": {
      "command": "php",
      "args": ["vendor/bin/typo3", "mcp:server"],
      "cwd": "/path/to/your/typo3/project"
    }
  }
}
```

**HTTP (remote):**

```
{
  "mcpServers": {
    "typo3": {
      "url": "https://your-typo3-site.com/mcp"
    }
  }
}
```

### VS Code (Copilot)

[](#vs-code-copilot)

Add to your VS Code settings (`.vscode/settings.json`):

**stdio (local):**

```
{
  "mcp": {
    "servers": {
      "typo3": {
        "command": "php",
        "args": ["vendor/bin/typo3", "mcp:server"],
        "cwd": "/path/to/your/typo3/project"
      }
    }
  }
}
```

**HTTP (remote):**

```
{
  "mcp": {
    "servers": {
      "typo3": {
        "url": "https://your-typo3-site.com/mcp"
      }
    }
  }
}
```

### Other MCP Clients

[](#other-mcp-clients)

Any MCP-compatible client can connect via either transport:

- **stdio:** Run `php vendor/bin/typo3 mcp:server` — communicates via stdin/stdout, no auth needed
- **HTTP:** Connect to `https://your-typo3-site.com/mcp` — requires OAuth 2.1 with PKCE. Server metadata is available at `/.well-known/oauth-authorization-server/mcp` (RFC 8414 path-insert) for auto-discovery.

Authentication
--------------

[](#authentication)

HTTP transport uses **OAuth 2.1 with PKCE** (S256). Each token is linked to a backend user — all operations respect that user's TYPO3 permissions.

The stdio transport does not require OAuth — the user is specified via the `--user` flag.

### OAuth Features

[](#oauth-features)

- **Authorization Code flow with PKCE** — standard OAuth 2.1 for MCP clients
- **Authentication via the real TYPO3 backend login** — the `/mcp/oauth/authorize` endpoint redirects unauthenticated users to `/typo3/login` and only renders a single-click consent screen once `BE_USER` is established; MFA, `starttime`/`endtime`, per-user lockout, and `sys_log` failed-login entries come from the standard backend pipeline
- **Dynamic Client Registration** ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)) — clients can self-register
- **Token Revocation** ([RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009)) — revoke access and refresh tokens
- **Protected Resource Metadata** ([RFC 9728](https://datatracker.ietf.org/doc/html/rfc9728)) — auto-discovery of auth requirements

### OAuth Endpoints

[](#oauth-endpoints)

EndpointDescription`/.well-known/oauth-authorization-server/mcp`Authorization server metadata (RFC 8414)`/.well-known/oauth-protected-resource/mcp`Protected resource metadata (RFC 9728)`/mcp/oauth/authorize`Authorization endpoint`/mcp/oauth/token`Token endpoint`/mcp/oauth/revoke`Token revocation endpoint`/mcp/oauth/register`Dynamic client registration### Base Path

[](#base-path)

The MCP endpoint and all OAuth sub-paths share a single configurable prefix. Override it via **Settings &gt; Extension Configuration &gt; ms\_mcp\_server**:

SettingDefaultDescription`mcpBasePath``/mcp`Base URL path for the MCP endpoint. Must start with `/`. May contain directories (e.g. `/typo3-mcp`, `/api/mcp`).Per [RFC 8414 §3.1](https://datatracker.ietf.org/doc/html/rfc8414#section-3.1) and [RFC 9728 §3](https://datatracker.ietf.org/doc/html/rfc9728#section-3), the `.well-known/*` document for an issuer/resource `https://host/` lives at `https://host/.well-known//` — the well-known string is *inserted* between the host and the issuer's path component, not appended. Spec-compliant MCP clients (e.g. Claude Code 2.1+) use that form.

Example with `mcpBasePath = /typo3-mcp`:

EndpointPathMCP server`/typo3-mcp`Authorization`/typo3-mcp/oauth/authorize`Token`/typo3-mcp/oauth/token`Registration`/typo3-mcp/oauth/register`Revocation`/typo3-mcp/oauth/revoke`Authorization server metadata`/.well-known/oauth-authorization-server/typo3-mcp`Protected resource metadata`/.well-known/oauth-protected-resource/typo3-mcp`And with `mcpBasePath = /api/mcp`:

EndpointPathMCP server`/api/mcp`Authorization server metadata`/.well-known/oauth-authorization-server/api/mcp`Protected resource metadata`/.well-known/oauth-protected-resource/api/mcp`### Token Lifetimes

[](#token-lifetimes)

Configurable via **Settings &gt; Extension Configuration &gt; ms\_mcp\_server**:

SettingDefaultDescription`accessTokenLifetime`3600 (1 hour)Access token lifetime in seconds`refreshTokenLifetime`2592000 (30 days)Refresh token lifetime in seconds`codeLifetime`60 (1 minute)Authorization code lifetime in seconds### Rate Limiting

[](#rate-limiting)

OAuth endpoints are protected by IP-based rate limiting with configurable per-endpoint limits:

SettingDefaultDescription`rateLimitEnabled``1`Enable/disable rate limiting`rateLimitAuthorize``5` / 300sAuthorize POST (consent submission — auth code minting)`rateLimitAuthorizeGet``20` / 300sAuthorize GET (consent form display)`rateLimitToken``20` / 300sToken exchange/refresh`rateLimitRegister``10` / 3600sClient registration`rateLimitRevoke``20` / 300sToken revocationReturns `429 Too Many Requests` with `Retry-After` header when exceeded.

### Backend Module

[](#backend-module)

The **System &gt; MCP Server** backend module provides:

- Register and manage OAuth clients
- Edit client settings (name, redirect URIs, linked backend user)
- View active tokens per client with status (active/refreshable/expired)
- Revoke individual tokens
- **Discover extension tables** — scan installed extensions, enable/disable for MCP tool generation, customize label/prefix

Tools Reference
---------------

[](#tools-reference)

### Pages

[](#pages)

ToolDescription`pages_list`List child pages with pagination. Supports language filtering and field selection.`pages_get`Get a single page with all readable fields.`pages_create`Create a new page. Pass fields as JSON, set language with `sysLanguageUid`.`pages_update`Update page fields. Pass a JSON object with field names and new values.`pages_delete`Delete a page by UID.`pages_copy`Copy a page. Set `includeSubpages: true` to copy the entire subtree.`pages_move`Move a page in the tree. Subpages move with the page.`pages_tree`Get the page tree hierarchy with configurable depth (1-10, default 3).`pages_search`Search pages by title (plain text) or advanced conditions (JSON). Supports sorting.**Target positioning** (for `pages_copy`, `pages_move`): Provide exactly one of `targetPid` (place as first child of that parent page) or `afterUid` (place as a sibling after that page, under the same parent).

### Content Elements

[](#content-elements)

ToolDescription`content_list`List content elements on a page with pagination and language filtering.`content_get`Get a single content element with all readable fields.`content_create`Create a content element. Pass fields as JSON, set language with `sysLanguageUid`.`content_update`Update content element fields.`content_delete`Delete a content element by UID.`content_move`Move a content element to a new position.`content_copy`Copy a content element to a new position.`content_search`Search content by header (plain text) or advanced conditions (JSON). Supports language filtering and sorting.**Target positioning** (for `content_move`, `content_copy`): Positive target = place at top of that page. Negative target = place after element with that UID.

### File Management

[](#file-management)

ToolDescription`file_list`List files and directories with pagination.`file_search`Search files by name pattern and/or extension across storage.`file_get_info`Get file metadata: UID, name, size, MIME type, public URL.`file_upload`Upload a file from text content or base64-encoded binary data.`file_upload_from_url`Download a file from URL and store it (max 100 MB).`file_copy`Copy a file to a directory.`file_delete`Delete a file by identifier.`file_move`Move a file to a different directory.`file_rename`Rename a file.`directory_create`Create a new directory.`directory_delete`Delete a directory. Set `recursive: true` for non-empty directories.`directory_move`Move a directory to a different parent.`directory_rename`Rename a directory.All file tools accept an optional `storageUid` parameter (default: `1` for fileadmin).

### File References

[](#file-references)

ToolDescription`file_reference_add`Attach files to a record's image/media field. Pass sys\_file UIDs from upload results.`file_reference_list`List file references for a record field. Returns reference UIDs and metadata.`file_reference_remove`Remove file references by UID. Detaches files but does not delete them.### Schema and Search

[](#schema-and-search)

ToolDescription`table_schema`Get TCA field definitions for any table. Use before creating/updating records to discover valid fields and options.`record_search`Search records in any table with field conditions, operators, and sorting.`record_count`Count records in any table without fetching them. Supports pid and search condition filtering.**Search operators:** `eq`, `neq`, `like` (default), `gt`, `gte`, `lt`, `lte`, `in` (comma-separated), `null`, `notNull`.

**Search examples:**

```
// Simple LIKE search
{"title": "hello"}

// Advanced operators
{"uid": {"op": "gt", "value": "10"}, "title": {"op": "eq", "value": "Home"}}

// Combined with sorting
orderBy: "title", orderDirection: "DESC"
```

### Translation

[](#translation)

ToolDescription`site_languages`List available languages for a site. Pass any page ID belonging to the site.`record_translate`Create a translation of a record. Source must be in default language. Uses TYPO3 connected mode.### Batch Operations

[](#batch-operations)

ToolDescription`record_delete_batch`Delete multiple records by comma-separated UIDs. Single atomic DataHandler operation.`record_update_batch`Update same fields on multiple records (e.g., `{"hidden":1}` on UIDs `1,2,3`).`record_move_batch`Move multiple records to a target position.All batch tools work on any TCA table.

### Cache

[](#cache)

ToolDescription`cache_clear`Flush caches. Scopes: `pages` (default), `all`, or `page` (single page by `pageId`).### Backend Users &amp; Groups

[](#backend-users--groups)

Restricted to admin backend users only. Sensitive `be_users` columns (`password`, `mfa`) are never returned; soft-deleted records are always excluded.

ToolDescription`backend_user_list`List `be_users`. Optional `search` (LIKE on username), `activeOnly`, `adminOnly` filters; paginated.`backend_user_get`Get a single backend user by uid with extended fields (groups, mounts, language, TSconfig, etc.).`backend_group_list`List `be_groups` with optional title search; paginated.`backend_group_get`Get a single backend group by uid with permission and mount details.### Workspaces

[](#workspaces)

Registered only when `typo3/cms-workspaces` is installed. Direct (live-mode) operation is the primary use case for this extension — these tools enable a secondary draft/publish workflow when review is required. After `workspace_switch`, all subsequent reads and writes (`pages_*`, `content_*`, etc.) operate on the chosen workspace.

ToolDescription`workspace_list`List workspaces accessible to the current backend user (including the implicit live workspace, uid 0).`workspace_get`Get workspace metadata by uid: title, custom stages flag, current user access level.`workspace_switch`Switch the active workspace. Persists to `be_users.workspace_id`. Use uid `0` to return to live.`workspace_changes_list`List records modified in the current workspace, grouped by table, with `t3ver_state` and stage.`workspace_publish`Publish a workspace version to live (swap).`workspace_discard`Discard a workspace version, dropping unpublished changes.`workspace_stage_set`Move a workspace version to a different stage (`-10` ready to publish, `-20` ready to review, `0` editing, or a custom stage uid).### Dynamic Extension Tools

[](#dynamic-extension-tools)

Additional CRUD tools are registered automatically for tables configured via `EXTCONF` or enabled through the **Extension Tables** backend module (auto-discovery). News is pre-configured and generates 6 tools:

ToolDescription`news_list`List news records by page ID`news_get`Get a single news record`news_create`Create a new news record`news_update`Update news record fields`news_delete`Delete a news record`news_move`Move a news recordSee [Adding Support for Other Extensions](#adding-support-for-other-extensions) to register your own tables.

Resources Reference
-------------------

[](#resources-reference)

Resources provide read-only context about the TYPO3 instance. AI clients can read these to understand the environment before taking actions.

ResourceURIDescriptionSystem Info`typo3://system/info`TYPO3 version, PHP version, application context, OSSite Configuration`typo3://sites`All sites with root pages, base URLs, and languagesTCA Tables`typo3://schema/tables`All available database tables with labelsBackend User`typo3://user/me`Current user's UID, username, admin status, groupsTable Schema`typo3://schema/tables/{tableName}`Full field schema for a specific tableBackend Layout`typo3://pages/{pageId}/backend-layout`Page's backend layout with column positions and grid structurePrompts Reference
-----------------

[](#prompts-reference)

Prompts provide guided multi-step workflows that instruct the AI through complex tasks.

PromptParametersDescription`translate_page_content``pageId`, `targetLanguageId` (0 = all)Translate a page and all its content elements to one or all available languages.`audit_page_seo``pageId`Audit SEO metadata, check for missing titles/descriptions/alt text, report findings.`summarize_page``pageId`Generate a content inventory with all elements, translations, and statistics.`check_translation_status``pageId`, `depth` (default 3)Scan page subtree, report missing translations per language with coverage percentages.`audit_content_structure``pageId`, `depth` (default 3)Find content in non-existent backend layout columns (orphaned after layout changes).`migrate_content``sourcePageId`, `targetPageId`Move all content between pages with layout compatibility check.Adding Support for Other Extensions
-----------------------------------

[](#adding-support-for-other-extensions)

**Option 1: Auto-discovery (no code changes)**

Go to **System &gt; MCP Server &gt; Manage Extension Tables**, click **Discover Extension Tables**, then enable the tables you want. The extension scans TCA for installed extension tables and lets you toggle them on/off with customizable labels and prefixes.

**Option 2: Code configuration**

Register custom tables in your extension's `ext_localconf.php`:

```
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ms_mcp_server']['tables']['tx_blog_domain_model_post'] = [
    'label' => 'Blog Post',
    'prefix' => 'blog_post',
];
```

This automatically creates 6 tools (`blog_post_list`, `blog_post_get`, `blog_post_create`, `blog_post_update`, `blog_post_delete`, `blog_post_move`) with fields resolved from TCA.

Optional overrides:

```
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ms_mcp_server']['tables']['tx_blog_domain_model_post'] = [
    'label' => 'Blog Post',
    'prefix' => 'blog_post',
    'listFields' => ['uid', 'pid', 'title', 'datetime'],    // Fields shown in list results
    'readFields' => ['title', 'datetime', 'bodytext'],       // Fields returned by get
    'writableFields' => ['title', 'datetime', 'bodytext'],   // Fields accepted by create/update
];
```

Maintenance
-----------

[](#maintenance)

The `mcp:cleanup` command purges expired OAuth authorization codes / access tokens / refresh tokens, idle MCP sessions past `sessionLifetime`, and stale rate-limit window rows:

```
vendor/bin/typo3 mcp:cleanup
```

Run it daily. Two ways:

### Via TYPO3 Scheduler (recommended)

[](#via-typo3-scheduler-recommended)

1. **System &gt; Scheduler &gt; Scheduled tasks &gt; Add task**.
2. **Class:** *Execute console commands* (`TYPO3\CMS\Scheduler\Task\ExecuteSchedulableCommandTask`).
3. **Frequency:** pick an interval (`86400` seconds for daily) or a cron expression (`0 3 * * *` for 03:00 every day).
4. **Schedulable Command:** select `mcp:cleanup` from the dropdown.
5. Save. Use *Run task* once to verify it works.

The command is auto-discovered via the `console.command` tag — no extra registration needed.

### Via cron

[](#via-cron)

```
0 3 * * * cd /path/to/typo3-project && vendor/bin/typo3 mcp:cleanup >/dev/null 2>&1
```

Architecture
------------

[](#architecture)

```
HTTP request → McpServerMiddleware (Bearer auth)
             → ErrorHandlingContainer (wraps tools with error handling)
             → McpServerFactory (auto-discovers tools via DI tags)
             → MCP SDK Server (StreamableHttpTransport)
             → Tool execution → JSON response

```

Tools, resources, and prompts are **auto-discovered** via DI container tags — no manual registration needed. Adding a new tool is as simple as creating a class with a `#[McpTool]` attribute.

Error handling is **centralized** in `ErrorHandlingProxy`. Tool classes contain only business logic — no try/catch boilerplate, no logger injection.

**Audit logging** records every tool and resource invocation to TYPO3's `sys_log` table — visible in the backend log module with user ID, tool name, execution time, and outcome.

Development
-----------

[](#development)

```
composer install

# Static analysis (PHPStan level max)
vendor/bin/phpstan analyse

# Code style (Slevomat Coding Standard)
vendor/bin/phpcs
vendor/bin/phpcbf

# Tests
vendor/bin/phpunit
```

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance98

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.4% of commits — single point of failure

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 ~2 days

Total

15

Last Release

16d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/33967656?v=4)[Marek Skopal](/maintainers/marekskopal)[@marekskopal](https://github.com/marekskopal)

---

Top Contributors

[![marekskopal](https://avatars.githubusercontent.com/u/33967656?v=4)](https://github.com/marekskopal "marekskopal (154 commits)")[![HimanshuRamavat07](https://avatars.githubusercontent.com/u/114229558?v=4)](https://github.com/HimanshuRamavat07 "HimanshuRamavat07 (1 commits)")

---

Tags

mcpmcp-servertypo3typo3-extensionmcpservertypo3

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/marekskopal-typo3-mcp-server/health.svg)

```
[![Health](https://phpackages.com/badges/marekskopal-typo3-mcp-server/health.svg)](https://phpackages.com/packages/marekskopal-typo3-mcp-server)
```

###  Alternatives

[friendsoftypo3/content-blocks

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

101466.4k44](/packages/friendsoftypo3-content-blocks)[pagemachine/typo3-formlog

Form log for TYPO3

23233.9k7](/packages/pagemachine-typo3-formlog)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.0M6](/packages/netresearch-rte-ckeditor-image)[helhum/typo3-console

A reliable and powerful command line interface for TYPO3 CMS

2959.3M237](/packages/helhum-typo3-console)[in2code/in2publish_core

Content publishing extension to connect stage and production server

40140.7k](/packages/in2code-in2publish-core)[apache-solr-for-typo3/solr

Apache Solr for TYPO3 - Apache Solr for TYPO3 is the enterprise search server you were looking for with special features such as Faceted Search or Synonym Support and incredibly fast response times of results within milliseconds.

1493.2M41](/packages/apache-solr-for-typo3-solr)

PHPackages © 2026

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