'erp_lager.list_products', 'description' => 'Aktive ERP-Lagerprodukte zur Ermittlung der Produkt-IDs lesen', 'inputSchema' => ['type' => 'object', 'properties' => (object) []], ], [ 'name' => 'erp_lager.get_product', 'description' => 'Produkt, aktuelle Lagermenge, Chargen und Ausverkaufsprognose lesen', 'inputSchema' => [ 'type' => 'object', 'required' => ['product_id'], 'properties' => [ 'product_id' => ['type' => 'integer'], ], ], ], ]; } function erp_lager_mcp_list_products(PDO $pdo): array { return array_map( static fn (array $product): array => [ 'id' => $product['id'], 'name' => $product['name'], 'sku' => $product['sku'], 'uom' => $product['uom'], ], get_otc_order_form_products($pdo) ); } function erp_lager_mcp_get_product(PDO $pdo, int $productId): array { if ($productId < 1) { throw new InvalidArgumentException('product_id muss eine positive Ganzzahl sein.'); } foreach (get_lager_product_overview($pdo) as $product) { if ((int) $product['id'] === $productId) { return $product; } } throw new InvalidArgumentException('Aktives Lagerprodukt nicht gefunden.'); } function erp_lager_mcp_call(PDO $pdo, string $tool, array $arguments): array { return match ($tool) { 'erp_lager.list_products' => erp_lager_mcp_list_products($pdo), 'erp_lager.get_product' => erp_lager_mcp_get_product( $pdo, (int) ($arguments['product_id'] ?? 0) ), default => throw new InvalidArgumentException('Unbekanntes Lager-MCP-Tool: ' . $tool), }; }