广告搜索协议服务器

一个允许LLM通过标准化协议与DealX平台交互的服务器,主要功能为广告搜索。

  • by DealExpress
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 DealExpress/mcp-server

使用说明

@dealx/mcp服务器

这是一个模型上下文协议(MCP)服务器,用于 DealX平台它允许LLM与DealX平台进行交互,特别是搜索广告。

目录

托管部署

托管部署可在 Frontier AI.

概述

DealX MCP服务器实现 模型上下文协议 为LLM提供一种标准化的方式与 DealX平台。目前,它支持搜索广告,并计划在未来添加更多功能。

什么是MCP?

模型上下文协议(MCP)是LLM与外部系统交互的标准化方式。它为LLM提供了一个结构化的接口,以访问数据并在现实世界中执行操作。此服务器实现了MCP规范,以允许LLM与DealX平台交互。

安装

先决条件

  • Node.js(v20或更高版本)
  • npm(v11或更高版本)

MCP配置

要将此服务器与Claude这样的LLM一起使用,您需要将其添加到LLM的MCP配置中:

  1. 打开LLM的MCP配置文件:

    • Claude桌面应用程序:
      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
      • 窗户: %APPDATA%\Claude\claude_desktop_config.json
      • Linux: ~/.config/Claude/claude_desktop_config.json
    • Cline(VS代码扩展):
      • ~/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

在LLM的MCP设置中配置后,您可以使用自然语言与DealX平台进行交互。

示例提示:

  • “在DealX上用查询‘笔记本电脑’搜索广告”
  • “在DealX上查找‘iPhone’的最新5个广告”
  • “在DealX上搜索基辅的公寓”

可用工具

搜索_ ads

在DealX平台上搜索广告。

参数:

  • query (string,可选):搜索查询字符串
  • 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无法连接到服务器:

  • 确保服务器正在运行
  • 检查LLM设置中的MCP配置是否正确
  • 验证服务器可执行文件的路径是否正确
  • 检查环境变量是否设置正确

API连接问题

如果服务器无法连接到DealX API:

  • 确保DealX API正在运行
  • 检查一下 DEALX_API_URL 环境变量设置正确
  • 验证是否可以从服务器访问API终结点

获取帮助

如果您遇到此处未涵盖的问题,请在此GitHub存储库中打开一个问题。