DealX

официальный

MCP сервер для платформы 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 App:
      • 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 по запросу 'ноутбук'"
  • "Найди 5 самых новых объявлений для 'iPhone' на DealX"
  • "Поищи на 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

Если сервер не может подключиться к API DealX:

  • Убедитесь, что API DealX работает
  • Проверьте, что переменная окружения DEALX_API_URL задана правильно
  • Убедитесь, что конечная точка API доступна с сервера

Получение помощи

Если вы столкнулись с проблемами, не описанными здесь, пожалуйста, создайте обращение в этом репозитории GitHub.