UNPKG

mcp-server-weibo

Version:

Model Context Protocol服务器,用于抓取微博用户信息、动态和搜索等功能

81 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.connectServer = void 0; const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js"); const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js"); const zod_1 = require("zod"); const weibo_1 = require("./weibo"); // 初始化MCP服务器,名称为"Weibo" const server = new mcp_js_1.McpServer({ name: "Weibo", version: "1.0.0" }); // 创建WeiboCrawler实例处理微博API操作 const crawler = new weibo_1.WeiboCrawler(); /** * 根据关键词搜索微博用户 */ server.tool("search_users", "根据关键词搜索微博用户并返回匹配的用户列表", { keyword: zod_1.z.string().describe("查找用户的搜索词"), limit: zod_1.z.number().describe("返回的最大用户数量") }, async ({ keyword, limit }) => { const users = await crawler.searchWeiboUsers(keyword, limit); return { content: [{ type: "text", text: JSON.stringify(users) }] }; }); /** * 获取微博用户的资料信息 */ server.tool("get_profile", "获取指定微博用户的详细资料信息", { uid: zod_1.z.number().describe("微博用户的唯一标识符") }, async ({ uid }) => { const profile = await crawler.extractWeiboProfile(uid); return { content: [{ type: "text", text: JSON.stringify(profile) }] }; }); /** * 获取微博用户的动态(帖子) */ server.tool("get_feeds", "获取指定微博用户的最新动态和帖子", { uid: zod_1.z.number().describe("微博用户的唯一标识符"), limit: zod_1.z.number().describe("返回的最大动态数量") }, async ({ uid, limit }) => { const feeds = await crawler.extractWeiboFeeds(uid, limit); return { content: [{ type: "text", text: JSON.stringify(feeds) }] }; }); /** * 获取微博热搜榜 */ server.tool("get_hot_search", "获取当前微博热搜榜的热门话题列表", { limit: zod_1.z.number().describe("返回的最大热搜条目数量") }, async ({ limit }) => { const hotSearchList = await crawler.getHotSearchList(limit); return { content: [{ type: "text", text: JSON.stringify(hotSearchList) }] }; }); /** * 根据关键词搜索微博内容 */ server.tool("search_content", "根据关键词搜索微博内容并返回相关的微博帖子", { keyword: zod_1.z.string().describe("搜索微博内容的关键词"), limit: zod_1.z.number().describe("返回的最大微博条目数量"), page: zod_1.z.number().optional().describe("起始页码,默认为1") }, async ({ keyword, limit, page }) => { const contents = await crawler.searchWeiboContent(keyword, limit, page || 1); return { content: [{ type: "text", text: JSON.stringify(contents) }] }; }); // 导出MCP服务器实例和连接函数 const connectServer = async () => { const transport = new stdio_js_1.StdioServerTransport(); await server.connect(transport); }; exports.connectServer = connectServer; exports.default = server; //# sourceMappingURL=server.js.map