Architecture Decision Record · 0011

mcp_server behalten und mcp_tools selektiv portieren

TL;DRdrupal/mcp_server bleibt der lokale MCP-Server; drupal/mcp_tools wird nicht installiert, sondern nur als Referenz für selektives Porting in solcom_mcp_tools genutzt. SDK-Inkompatibilität erzwingt diese Trennung.

Kontext

ADR-0010 etablierte drupal/mcp_server als lokales Dev-only-Tooling für STDIO-MCP-Zugriff aus Claude-Clients auf Drupal. Ein Zwischenstand dieses ADRs wollte drupal/mcp_server vollständig durch drupal/mcp_tools ersetzen, weil mcp_tools eine deutlich breitere Out-of-the-box-Tool-Surface mitbringt.

Diese Richtung wurde nach erneuter Implementierung verworfen. Der lokale Stack erzwingt jetzt wieder drupal/mcp_server:2.x-dev mit mcp/sdk:^0.5.0, mcp_server_tool_bridge und den SOLCOM-eigenen drupal/tool-Plugins in solcom_mcp_tools. Die SDK-0.5-Inkompatibilität des aktuellen mcp_server-Heads wird lokal im Custom-Modul über einen kleinen Compatibility-Layer und eine SDK-0.5-kompatible Server-Factory abgefangen.

drupal/mcp_tools bleibt fachlich wichtig: Es ist das „batteries-included" Referenzprojekt für Drupal-MCP-Tooling mit Tool-Slices für Analysis, Batch, Blocks, Cache, Config, Content, Cron, Image Styles, Layout Builder, Media, Menus, Metatag, Migration, Moderation, Pathauto, Recipes, Redirect, Scheduler, Search API, Structure, Templates, Theme, Users, Views und Webform. Direkt installieren lässt es sich im aktuellen Stack nicht sauber, weil mcp_tools mcp/sdk:^0.2.2 verlangt, während mcp_server mcp/sdk:^0.5.0 nutzt.

Entscheidung

drupal/mcp_server bleibt der lokale MCP-Server; drupal/mcp_tools wird nicht installiert, sondern als Referenz für selektives Porting in solcom_mcp_tools genutzt. Konkret:

Die priorisierte Tool-Surface für solcom_mcp_tools:

Rejected alternatives

Expand each rejected option to see the rationale.

drupal/mcp_tools direkt installieren rejected

Fachlich attraktiv, weil die breite Tool-Surface sofort verfügbar wäre. Verworfen, weil der Composer-Vertrag mit mcp/sdk:^0.2.2 nicht zum erzwungenen SDK-0.5-Stack passt und die aktuelle lokale Reparatur wieder rückgängig machen würde.

Vendor-Fork von mcp_tools in web/modules/custom importieren rejected

Würde kurzfristig viele Tools bringen, aber fremde Runtime-Annahmen, code-wheel/*-Abhängigkeiten, Update-Reibung und hohe Review-Last in das Custom-Modul ziehen. Selektives Porting ist kleiner und besser testbar.

Beide MCP-Server parallel betreiben rejected

Würde zwei Server, zwei SDK-Versionen, zwei Tool-Konventionen und zwei Auth-/Transport-Flächen erzeugen. Composer-seitig ist es ohnehin konfliktträchtig.

Generisches Drush/PHP/SQL-Ausführungstool bauen rejected

Maximal flexibel, aber sicherheitlich falsch: Es macht den MCP-Server zur Remote-Shell. Stattdessen entstehen explizite, kleine Tools mit klaren Inputs, Limits und Tests.

mcp_server_examples aktivieren rejected

Die Beispiele (EchoTool, ContentLookupTool) sind Demo-Material. Für SOLCOM bauen wir produktive dev-only Tools über drupal/tool, nicht über das Beispielmodul.

Consequences