Skip to main content
Glama

get-smzdm-rank

Retrieve trending shopping recommendations, deals, buying guides, product reviews, and consumer insights from SMZDM's popular Chinese shopping platform.

Instructions

获取什么值得买热门,包含商品推荐、优惠信息、购物攻略、产品评测及消费经验分享的实用中文消费类资讯

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitNo

Implementation Reference

  • Core handler function that proxies the tool execution to the remote API at https://mcp.xiaobenyang.com/api, using the tool name 'get-smzdm-rank' as the 'func' header value and args as body. Returns the response as MCP content.
    const calcXiaoBenYangApi = async function (fullArgs: Record<string, any>) {
        // 发起 POST 请求
        let response = await fetch('https://mcp.xiaobenyang.com/api', {
            method: 'POST',
            headers: {
                'XBY-APIKEY': apiKey,
                'func': fullArgs.toolName,
                'mcpid': mcpID
            },
            body: new URLSearchParams(fullArgs)
        });
        const apiResult = await response.text();
    
        return {
            content: [
                {
                    type: "text",
                    text: apiResult // 将字符串结果放入 content 中
                }
            ]
        } as { [x: string]: unknown; content: [{ type: "text"; text: string }] };
    };
  • Wrapper handler called by the registered tool handler lambda. Adds the toolName ('get-smzdm-rank') to args and invokes the core API proxy.
    const handleXiaoBenYangApi = async (args: Record<string, any>, toolName: string) => {
        // 校验aid是否存在
        if (toolName === undefined || toolName === null) {
            throw new Error("缺少必要参数 'aid'");
        }
        // 合并参数
        const fullArgs = {...args, toolName: toolName};
        // 调用API
        return calcXiaoBenYangApi(fullArgs);
    };
  • src/mcp.ts:50-65 (registration)
    Helper function to register a tool with the MCP server, using the generic handler. Called for each tool including 'get-smzdm-rank'.
    const addToolXiaoBenYangApi = function (
        name: string,
        desc: string,
        params: Record<string, ZodType>
    ) {
        server.registerTool(
            name,
            {
                title: name,
                description: desc,
                inputSchema: params,
            }
            ,
            async (args: Record<string, any>) => handleXiaoBenYangApi(args, name)
        )
    };
  • src/mcp.ts:90-133 (registration)
    Dynamic registration loop that fetches tool list from remote (https://mcp.xiaobenyang.com/getMcpDesc?mcpId=1777316659328003), builds Zod schema, and registers each tool (including get-smzdm-rank) via addToolXiaoBenYangApi.
    for (const apiDesc of apiDescList) {
        let inputSchema = JSON.parse(apiDesc.inputSchema);
        const zodDict: Record<string, z.ZodTypeAny> = {};
    
        Object.entries(inputSchema.properties).forEach(([name, propConfig]) => {
            let zodType;
            let pt = (propConfig as { type: string }).type;
            switch (pt) {
                case 'string':
                    zodType = z.string();
                    break;
                case 'number':
                    zodType = z.number();
                    break;
                case 'boolean':
                    zodType = z.boolean();
                    break;
                case 'integer':
                    zodType = z.int32();
                    break;
                case 'array':
                    zodType = z.array(z.any());
                    break;
                case 'object':
                    zodType = z.object(z.any());
                    break;
                default:
                    zodType = z.any();
            }
    
            if (inputSchema.required?.includes(name)) {
                zodDict[name] = zodType;
            } else {
                zodDict[name] = zodType.optional();
            }
        });
    
    
        addToolXiaoBenYangApi(
            apiDesc.name,
            apiDesc.description ? apiDesc.description : apiDesc.name,
            zodDict);
    }
    isRegistered = true;
  • Fetches the remote tool descriptions including schemas for the mcpID, used to dynamically generate input schemas for tools like get-smzdm-rank.
    const res = await fetch('https://mcp.xiaobenyang.com/getMcpDesc?mcpId=' + mcpID, {
        method: 'GET',
    });
    
    if (!res.ok) {
        throw new Error(`请求失败:${res.status}`);
    }
    
    const data = await res.json();
    const apiDescList = data.tools;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiaobenyang-com/Hot-News'

If you have feedback or need assistance with the MCP directory API, please join our Discord server