get-trending-topics
Retrieve trending topics from social platforms like Farcaster, Twitter, and Telegram to analyze popular conversations and trends. Specify platform and limit for tailored results.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of trending topics to return | |
| platform | Yes | Social platform (farcaster, twitter, telegram) |
Implementation Reference
- src/mcp/tools/contentTools.ts:351-379 (handler)The handler function for the 'get-trending-topics' tool. It retrieves the appropriate provider for the platform, calls getTrendingTopics on it with the limit, formats the topics using formatTrendingTopics, and returns them as text content. Handles errors by returning an error message.async ({ platform, limit = 10 }) => { try { const provider = providerRegistry.getProviderForPlatform(platform); if (!provider) { return { content: [{ type: "text", text: `Provider for platform '${platform}' not found or not enabled` }], isError: true }; } const topics = await provider.getTrendingTopics({ limit }); return { content: [{ type: "text", text: formatTrendingTopics(topics, platform) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching ${platform} trending topics: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } }
- Zod input schema defining the parameters for the get-trending-topics tool: required platform string and optional limit number.{ platform: z.string().describe("Social platform (farcaster, twitter, telegram)"), limit: z.number().optional().describe("Maximum number of trending topics to return") },
- src/mcp/tools/contentTools.ts:345-380 (registration)The server.tool call that registers the 'get-trending-topics' tool with MCP server, providing the name, input schema, and handler function.server.tool( "get-trending-topics", { platform: z.string().describe("Social platform (farcaster, twitter, telegram)"), limit: z.number().optional().describe("Maximum number of trending topics to return") }, async ({ platform, limit = 10 }) => { try { const provider = providerRegistry.getProviderForPlatform(platform); if (!provider) { return { content: [{ type: "text", text: `Provider for platform '${platform}' not found or not enabled` }], isError: true }; } const topics = await provider.getTrendingTopics({ limit }); return { content: [{ type: "text", text: formatTrendingTopics(topics, platform) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching ${platform} trending topics: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );
- Helper function used by the handler to format the array of trending topics into a numbered list string for the response.function formatTrendingTopics(topics: string[], platform: string): string { if (topics.length === 0) { return `No trending topics available for ${platform}.`; } const formattedTopics = topics.map((topic, index) => { return `${index + 1}. ${topic}`; }).join('\n'); return `Trending Topics on ${platform}:\n\n${formattedTopics}`; }