DealX

ทางการ

MCP Server สำหรับแพลตฟอร์ม DealX

คุณทำอะไรได้บ้างด้วย Deal X MCP?

  • ค้นหาโฆษณาด้วยคำสำคัญ — ค้นหารายการบนแพลตฟอร์ม DealX โดยใช้ข้อความค้นหาผ่าน search_ads
  • จัดเรียงและแบ่งหน้าผลลัพธ์ — ควบคุมลำดับการจัดเรียง (เช่น รายการใหม่ล่าสุดก่อนด้วย -created), ระยะห่างของหน้า และจำนวนผลลัพธ์
  • จำกัดจำนวนผลลัพธ์ — กำหนดขนาดหน้าแบบกำหนดเองได้สูงสุด 100 โฆษณาต่อคำขอ

เอกสาร

@dealx/mcp-server

นี่คือเซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ แพลตฟอร์ม DealX ซึ่งช่วยให้ LLM สามารถโต้ตอบกับแพลตฟอร์ม DealX ได้ โดยเฉพาะการค้นหาโฆษณา

สารบัญ

การปรับใช้แบบโฮสต์

มีการปรับใช้แบบโฮสต์ให้บริการบน Fronteir AI

ภาพรวม

เซิร์ฟเวอร์ DealX MCP ใช้ Model Context Protocol เพื่อมอบวิธีมาตรฐานให้ LLM สามารถโต้ตอบกับ แพลตฟอร์ม DealX ได้ ในปัจจุบันรองรับการค้นหาโฆษณา โดยมีแผนจะเพิ่มฟังก์ชันการทำงานอื่นๆ ในอนาคต

MCP คืออะไร?

Model Context Protocol (MCP) เป็นวิธีมาตรฐานสำหรับ LLM ในการโต้ตอบกับระบบภายนอก โดยมีอินเทอร์เฟซที่มีโครงสร้างเพื่อให้ LLM เข้าถึงข้อมูลและดำเนินการต่างๆ ในโลกแห่งความเป็นจริงได้ เซิร์ฟเวอร์นี้ใช้ข้อกำหนด MCP เพื่อให้ LLM สามารถโต้ตอบกับแพลตฟอร์ม DealX ได้

การติดตั้ง

ข้อกำหนดเบื้องต้น

  • Node.js (v20 หรือใหม่กว่า)
  • npm (v11 หรือใหม่กว่า)

การกำหนดค่า MCP

หากต้องการใช้เซิร์ฟเวอร์นี้กับ LLM อย่าง Claude คุณต้องเพิ่มเซิร์ฟเวอร์นี้ลงในการกำหนดค่า MCP ของ LLM:

  1. เปิดไฟล์การกำหนดค่า MCP ของ LLM:

    • แอป Claude Desktop:
      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
      • Windows: %APPDATA%\Claude\claude_desktop_config.json
      • Linux: ~/.config/Claude/claude_desktop_config.json
    • Cline (ส่วนขยาย VS Code):
      • ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  2. เพิ่มเซิร์ฟเวอร์ DealX MCP ลงในส่วน mcpServers:

    {
      "mcpServers": {
        "dealx": {
          "command": "npx",
          "args": ["-y", "@dealx/mcp-server"],
          "env": {
            "DEALX_API_URL": "https://dealx.com.ua"
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    

การติดตั้งผ่าน npm

วิธีที่ง่ายที่สุดในการติดตั้งเซิร์ฟเวอร์ DealX MCP คือผ่าน npm:

npm install -g @dealx/mcp-server

การติดตั้งสำหรับการพัฒนา

หากคุณต้องการแก้ไขเซิร์ฟเวอร์หรือมีส่วนร่วมในการพัฒนา:

  1. โคลนที่เก็บ:

    git clone <repository-url>
    cd dealx/mcp
    
  2. ติดตั้งส่วนประกอบที่จำเป็น:

    npm install
    
  3. สร้างไฟล์ .env โดยอิงจากไฟล์ .env.example:

    cp .env.example .env
    
  4. แก้ไขไฟล์ .env เพื่อตั้งค่าที่เหมาะสม:

    # DealX API URL
    DEALX_API_URL=http://localhost:3001
    
    # Optional: Specify the port for the MCP server
    MCP_SERVER_PORT=3100
    
    # Optional: Log level (debug, info, warn, error)
    LOG_LEVEL=info
    
  5. สร้างเซิร์ฟเวอร์:

    npm run build
    

การใช้งาน

การเริ่มต้นเซิร์ฟเวอร์

คุณสามารถรันเซิร์ฟเวอร์ได้หลายวิธี:

  1. หากติดตั้งแบบโกลบอล:

    node node_modules/@dealx/mcp-server/build/index.js
    
  2. ใช้ npx โดยไม่ต้องติดตั้ง:

    npx -y @dealx/mcp-server
    
  3. ด้วยตัวแปรสภาพแวดล้อม:

    DEALX_API_URL=https://dealx.com.ua npx -y @dealx/mcp-server
    
  4. สำหรับการพัฒนา:

    npm start
    

การใช้งานกับ LLM

เมื่อกำหนดค่าในการตั้งค่า MCP ของ LLM แล้ว คุณสามารถใช้ภาษาธรรมชาติเพื่อโต้ตอบกับแพลตฟอร์ม DealX ได้

ตัวอย่างพร้อมท์:

  • "ค้นหาโฆษณาบน DealX ด้วยคำว่า 'laptop'"
  • "ค้นหาโฆษณา 5 รายการล่าสุดสำหรับ 'iPhone' บน DealX"
  • "ค้นหาอพาร์ตเมนต์ใน Kyiv บน DealX"

เครื่องมือที่พร้อมใช้งาน

search_ads

ค้นหาโฆษณาบนแพลตฟอร์ม DealX

พารามิเตอร์:

  • query (สตริง, ไม่บังคับ): สตริงคำค้นหา
  • sort (สตริง, ไม่บังคับ): ลำดับการจัดเรียง (เช่น "-created" สำหรับใหม่สุดก่อน)
  • offset (ตัวเลข, ไม่บังคับ): ออฟเซ็ตการแบ่งหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1)
  • limit (ตัวเลข, ไม่บังคับ): จำนวนผลลัพธ์ต่อหน้า (สูงสุด 100, ค่าเริ่มต้น: 30)

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

{
  "query": "laptop",
  "sort": "-created",
  "offset": 1,
  "limit": 10
}

การขยายเซิร์ฟเวอร์

เซิร์ฟเวอร์ถูกออกแบบมาให้ขยายด้วยเครื่องมือเพิ่มเติมได้ง่าย นี่คือวิธีการเพิ่มเครื่องมือใหม่:

  • กำหนดเครื่องมือในออบเจกต์ TOOLS ใน src/index.ts:

    const TOOLS = {
      SEARCH_ADS: "search_ads",
      NEW_TOOL: "new_tool", // Add your new tool here
    };
    
  • สร้างไฟล์ใหม่ในไดเรกทอรี src/tools สำหรับการใช้งานเครื่องมือของคุณ:

    // src/tools/new-tool.ts
    import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
    
    interface NewToolParams {
      // Define your tool parameters here
    }
    
    export async function newTool(params: NewToolParams) {
      try {
        // Implement your tool logic here
    
        return {
          content: [
            {
              type: "text",
              text: JSON.stringify(result, null, 2),
            },
          ],
        };
      } catch (error) {
        // Handle errors
        // ...
      }
    }
    
  • เพิ่มเครื่องมือลงในตัวจัดการ ListToolsRequestSchema ใน src/index.ts:

    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        // Existing tools...
        {
          name: TOOLS.NEW_TOOL,
          description: "Description of your new tool",
          inputSchema: {
            type: "object",
            properties: {
              // Define your tool parameters here
            },
            required: [], // List required parameters
          },
        },
      ],
    }));
    
  • เพิ่มเครื่องมือลงในตัวจัดการ CallToolRequestSchema ใน src/index.ts:

    this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
      const { name, arguments: args } = request.params;
    
      switch (name) {
        // Existing cases...
        case TOOLS.NEW_TOOL:
          return await newTool(args);
        default:
          throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
      }
    });
    
  • นำเข้าเครื่องมือใหม่ของคุณใน src/index.ts:

    import { newTool } from "./tools/new-tool.js";
    

เครื่องมือในอนาคตที่วางแผนไว้

เครื่องมือต่อไปนี้มีแผนจะนำมาใช้ในอนาคต:

  • create_ad: สร้างโฆษณาใหม่บน แพลตฟอร์ม DealX
  • edit_ad: แก้ไขโฆษณาที่มีอยู่
  • delete_ad: ลบโฆษณา
  • get_threads: รับชุดข้อความสนทนาสำหรับโฆษณา
  • create_thread: สร้างชุดข้อความสนทนาใหม่

การพัฒนา

โครงสร้างโปรเจกต์

mcp/
├── build/              # Compiled JavaScript files
├── src/                # TypeScript source files
│   ├── tools/          # Tool implementations
│   │   └── search-ads.ts
│   └── index.ts        # Main server implementation
├── .env                # Environment variables (not in git)
├── .env.example        # Example environment variables
├── package.json        # Project dependencies and scripts
├── tsconfig.json       # TypeScript configuration
└── README.md           # This file

สคริปต์ npm

  • npm run build - คอมไพล์ TypeScript เป็น JavaScript
  • npm start - เริ่มต้นเซิร์ฟเวอร์โดยใช้ JavaScript ที่คอมไพล์แล้ว
  • npm run dev - เริ่มต้นเซิร์ฟเวอร์ในโหมดพัฒนาพร้อมการโหลดซ้ำอัตโนมัติ
  • npm run lint - ตรวจสอบโค้ดโดยใช้ ESLint
  • npm run format - จัดรูปแบบโค้ดโดยใช้ Prettier
  • npm test - รันการทดสอบ

การแก้ไขปัญหา

ปัญหาที่พบบ่อย

เซิร์ฟเวอร์ไม่เริ่มทำงาน

หากเซิร์ฟเวอร์ไม่เริ่มทำงาน ให้ตรวจสอบสิ่งต่อไปนี้:

  • ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Node.js เวอร์ชันที่ถูกต้อง
  • ตรวจสอบว่าติดตั้งส่วนประกอบที่จำเป็นทั้งหมดแล้ว
  • ตรวจสอบว่าไฟล์ .env มีอยู่และมีค่าที่ถูกต้อง
  • ตรวจสอบเอาต์พุตคอนโซลเพื่อดูข้อความแสดงข้อผิดพลาด

ปัญหาการเชื่อมต่อ

หาก LLM ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้:

  • ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์กำลังทำงานอยู่
  • ตรวจสอบว่าการกำหนดค่า MCP ในการตั้งค่าของ LLM ถูกต้อง
  • ตรวจสอบว่าพาธไปยังไฟล์ปฏิบัติการของเซิร์ฟเวอร์ถูกต้อง
  • ตรวจสอบว่าตัวแปรสภาพแวดล้อมถูกตั้งค่าอย่างถูกต้อง

ปัญหาการเชื่อมต่อ API

หากเซิร์ฟเวอร์ไม่สามารถเชื่อมต่อกับ DealX API ได้:

  • ตรวจสอบให้แน่ใจว่า DealX API กำลังทำงานอยู่
  • ตรวจสอบว่าตัวแปรสภาพแวดล้อม DEALX_API_URL ถูกตั้งค่าอย่างถูกต้อง
  • ตรวจสอบว่าสามารถเข้าถึงปลายทาง API ได้จากเซิร์ฟเวอร์

การขอความช่วยเหลือ

หากคุณพบปัญหาที่ไม่ได้กล่าวถึงในที่นี้ โปรดเปิด issue ในที่เก็บ GitHub นี้