Skip to main content
Glama
index.js3.34 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const YANYUE_API_BASE = "https://www.yanyue.cn"; const USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"; // 辅助函数:发起API请求 async function makeYanyueRequest(url) { const headers = { "User-Agent": USER_AGENT, Accept: "application/json", }; try { const response = await fetch(url, { headers }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return (await response.json()); } catch (error) { console.error("Error request:", error); return null; } } // 格式化搜索结果 function formatResult(product) { return { id: product.productid, name: product.productname, chinese_name: product.productname_hascn, brand: { name: product.brand.brandname, origin: product.brand.parent.brandname, }, price: { pack: product.packprice, single: product.barprice, unit: product.priceunit === "0" ? "CNY" : "unknown", }, rating: product.comscore, image: product.coverpic, specifications: { type: product.type.typename, tar_content: product.tar, nicotine: product.nicotine, cigarettes_per_pack: product.cigarette_count, length_mm: product.ciglength, }, production: { place: product.chandi || "unknown", }, }; } // 创建MCP服务器实例 const server = new McpServer({ name: "cigarettes", version: "1.0.0" }); // 注册搜索卷烟接口 server.tool("searchCigarettes", "根据关键词搜索卷烟信息", { keyword: z.string().min(1).describe("搜索关键词"), }, async ({ keyword }) => { const searchUrl = `${YANYUE_API_BASE}/api/rc/product/yanlist?pagenum=99&productname=${encodeURIComponent(keyword)}`; const searchData = await makeYanyueRequest(searchUrl); if (!searchData) { return { content: [ { type: "text", text: "Failed to retrieve cigarette data", }, ], }; } const productlist = searchData.productlist || []; if (productlist.length === 0) { return { content: [ { type: "text", text: `No results found for ${keyword}`, }, ], }; } const formattedResults = productlist.map(formatResult); const resultsText = `Search results for "${keyword}":\n\n${JSON.stringify(formattedResults, null, 2)}`; return { content: [ { type: "text", text: resultsText, }, ], }; }); // 启动服务器 async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Weather MCP Server running on stdio"); } main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); });

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/gandli/yanyue-mcp'

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