หมวดหมู่: Uncategorized

  • WordPress MCP

    WordPress MCP

    Model Context Protocol (MCP) คือมาตรฐานเปิดที่ทำให้ AI agent อย่าง Claude หรือเครื่องมืออื่น ๆ เชื่อมต่อและ “คุย” กับระบบภายนอกได้อย่างเป็นระเบียบ และตอนนี้ WordPress เองก็รองรับ MCP อย่างเป็นทางการแล้ว ผ่านแพ็กเกจที่เรียกว่า WordPress MCP Adapter บทความนี้จะพาไปรู้จักว่า WordPress MCP คืออะไร ทำงานอย่างไร ใช้ประโยชน์อะไรได้บ้าง และจะเริ่มสร้างปลั๊กอินที่รองรับ MCP ของตัวเองได้อย่างไร

    WordPress MCP คืออะไร

    WordPress MCP ไม่ใช่ปลั๊กอินตัวเดียว แต่เป็นระบบนิเวศที่ประกอบด้วยสองส่วนหลัก คือ Abilities API ซึ่งเปิดตัวมาพร้อม WordPress 6.9 และ MCP Adapter ซึ่งเป็นแพ็กเกจอย่างเป็นทางการภายใต้โครงการ AI Building Blocks for WordPress

    • Abilities API ให้ WordPress core และปลั๊กอินลงทะเบียน “ความสามารถ” (ability) ที่มีชื่อเฉพาะ มี input/output schema ที่กำหนดชนิดข้อมูลชัดเจน มีฟังก์ชันตรวจสิทธิ์ (permission_callback) และฟังก์ชันทำงานจริง (execute_callback)
    • MCP Adapter ทำหน้าที่แปลง ability เหล่านั้นให้กลายเป็น MCP tools, resources และ prompts ที่ AI client เข้าใจและเรียกใช้ได้ทันที

    พูดง่าย ๆ คือ ถ้าเว็บของคุณลงทะเบียน ability ไว้แล้ว ก็แทบไม่ต้องทำอะไรเพิ่มเพื่อให้ AI agent อย่าง Claude Desktop, Claude Code, Cursor หรือ VS Code เรียกใช้งานความสามารถนั้นผ่าน MCP ได้เลย

    หลักการทำงานเบื้องหลัง

    MCP แบ่งการทำงานออกเป็น 3 องค์ประกอบหลัก ได้แก่

    1. Tools คือฟังก์ชันที่ AI เรียกให้ทำงานจริง เช่น สร้างโพสต์ อัปเดตข้อมูล หรือรันการวินิจฉัยระบบ
    2. Resources คือแหล่งข้อมูลแบบอ่านอย่างเดียวที่ AI ใช้อ้างอิงประกอบการตอบ เช่น ไฟล์ log หรือค่าคอนฟิกของเว็บไซต์
    3. Prompts คือเทมเพลตสำเร็จรูปที่ช่วยกำหนดทิศทางการทำงานของ AI ในงานเฉพาะทาง

    เมื่อพลักอิน MCP Adapter ถูกติดตั้งและเปิดใช้งาน มันจะสร้าง “default MCP server” ขึ้นมาโดยอัตโนมัติ พร้อมกับ 3 ความสามารถหลักที่ทำหน้าที่เป็นประตูทางเข้า ได้แก่ mcp-adapter-discover-abilities (ค้นหาว่ามี ability อะไรบ้าง) mcp-adapter-get-ability-info (ดูรายละเอียดของ ability) และ mcp-adapter-execute-ability (สั่งให้ ability นั้นทำงาน)

    การเชื่อมต่อทำได้สองแบบ คือ STDIO transport ผ่าน WP-CLI เหมาะกับเว็บที่พัฒนาบนเครื่อง local และ HTTP transport ผ่านแพ็กเกจ @automattic/mcp-wordpress-remote ซึ่งใช้ WordPress Application Passwords ในการยืนยันตัวตน เหมาะกับเว็บไซต์ที่เผยแพร่จริงบนอินเทอร์เน็ต

    ตัวอย่างการใช้งานจริง

    เมื่อ MCP เชื่อมต่อเรียบร้อยแล้ว งานที่ทีมใช้กันจริงในปัจจุบัน ได้แก่

    • เขียนและเผยแพร่เนื้อหาผ่านการสนทนากับ AI โดยตรง
    • จัดการสินค้าและออเดอร์ของ WooCommerce
    • ทำงานแบบ bulk operation เช่น อัปเดตข้อมูลจำนวนมากพร้อมกัน
    • บริหารจัดการหลายเว็บไซต์พร้อมกันสำหรับเอเจนซี่

    วิธีสร้าง Ability แล้วเปิดให้ AI เรียกผ่าน MCP

    ขั้นแรกคือการลงทะเบียน ability ด้วย wp_register_ability() จากนั้นเพิ่ม flag meta.mcp.public เป็น true เพื่อให้ default MCP server มองเห็นและอนุญาตให้เรียกใช้ได้

    add_action( 'wp_abilities_api_init', function() {
        wp_register_ability( 'my-plugin/get-posts', [
            'label'       => 'Get Posts',
            'description' => 'ดึงข้อมูลโพสต์ของ WordPress พร้อมตัวกรอง',
            'category'    => 'site',
            'input_schema' => [
                'type' => 'object',
                'properties' => [
                    'numberposts' => [ 'type' => 'integer', 'default' => 5 ],
                    'post_status' => [ 'type' => 'string', 'enum' => ['publish','draft'] ],
                ],
            ],
            'execute_callback' => function( $input ) {
                return get_posts( $input );
            },
            'permission_callback' => function() {
                return current_user_can( 'read' );
            },
            'meta' => [
                'mcp' => [ 'public' => true ],
            ],
        ] );
    } );

    เท่านี้ AI agent ก็จะค้นพบ ability นี้ผ่าน discover-abilities และเรียกใช้งานผ่าน execute-ability ได้ทันที

    การสร้าง Custom MCP Server สำหรับปลั๊กอินของคุณ

    หากต้องการควบคุมมากขึ้น เช่น เปิดเฉพาะบาง ability ให้เป็น MCP server แยกเฉพาะของปลั๊กอิน สามารถติดตั้งแพ็กเกจผ่าน Composer แล้วสร้างเซิร์ฟเวอร์เองได้

    composer require wordpress/mcp-adapter
    add_action( 'mcp_adapter_init', function( $adapter ) {
        $adapter->create_server(
            'my-server-id',
            'my-namespace',
            'mcp',
            'My MCP Server',
            'คำอธิบายเซิร์ฟเวอร์ของฉัน',
            'v1.0.0',
            [ \WP\MCP\Transport\HttpTransport::class ],
            \WP\MCP\Infrastructure\ErrorHandling\ErrorLogMcpErrorHandler::class,
            \WP\MCP\Infrastructure\Observability\NullMcpObservabilityHandler::class,
            [ 'my-plugin/get-posts' ], // abilities ที่ต้องการเปิดเป็น tools
            [],
            []
        );
    } );

    วิธีนี้ไม่จำเป็นต้องตั้ง meta.mcp.public เพราะเราระบุ ability ที่ต้องการเปิดไว้อย่างชัดเจนในตอนสร้างเซิร์ฟเวอร์อยู่แล้ว

    ข้อควรระวังด้านความปลอดภัย

    เนื่องจาก MCP client ทำงานในฐานะผู้ใช้ที่ล็อกอินอยู่ในระบบ จึงควรปฏิบัติตามแนวทางความปลอดภัยต่อไปนี้อย่างเคร่งครัด

    • กำหนด permission_callback ให้ตรวจสอบสิทธิ์ขั้นต่ำที่จำเป็นเสมอ หลีกเลี่ยงการใช้ __return_true กับ ability ที่ทำลายข้อมูลได้
    • ใช้บัญชีผู้ใช้เฉพาะสำหรับ MCP ที่จำกัดสิทธิ์ แยกจากบัญชีแอดมินหลัก
    • สำหรับ MCP endpoint ที่เปิดสู่สาธารณะผ่าน HTTP ควรเปิดเฉพาะ ability แบบอ่านอย่างเดียวเป็นหลัก
    • พิจารณาทำระบบยืนยันตัวตนแบบกำหนดเอง (custom authentication) แทนการใช้ Application Passwords เพียงอย่างเดียวในระบบที่ต้องการความปลอดภัยสูง
    • เก็บ log และติดตาม (observability) การเรียกใช้งาน MCP tools อย่างสม่ำเสมอ

    สรุป

    WordPress MCP คือก้าวสำคัญที่ทำให้ WordPress กลายเป็นแพลตฟอร์มที่ AI agent เข้าใจและทำงานร่วมด้วยได้อย่างเป็นมาตรฐาน ด้วย Abilities API เป็นรากฐาน และ MCP Adapter เป็นสะพานเชื่อมไปสู่โปรโตคอล MCP นักพัฒนาที่มีปลั๊กอินซึ่งใช้ Abilities API อยู่แล้ว แทบไม่ต้องเขียนโค้ดเพิ่มเพื่อให้ AI เรียกใช้งานได้ทันที คำแนะนำคือให้เริ่มจาก ability แบบอ่านอย่างเดียวที่ไม่ทำลายข้อมูลก่อน ทดสอบกับ AI client อย่าง Claude Desktop หรือ Cursor แล้วค่อย ๆ ขยายไปสู่ ability ที่ซับซ้อนขึ้นเมื่อมั่นใจในระบบความปลอดภัยแล้ว