get_subreddit_info
Fetch detailed information about any Reddit subreddit, including description, subscribers, active users, creation date, NSFW status, and URL using a subreddit name.
Instructions
π Get subreddit information π― What it does: Fetches detailed info about any Reddit subreddit π Required: subreddit name (without r/ prefix) π‘ Examples: β’ Get info: {"subreddit": "programming"} β’ Check subreddit: {"subreddit": "AskReddit"} β’ View details: {"subreddit": "MachineLearning"} π Output: Subreddit details with description, subscribers, active users, creation date, NSFW status, and URL
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subreddit | Yes | Subreddit name to get information about |
Implementation Reference
- src/index.ts:576-594 (handler)MCP tool handler for 'get_subreddit_info': extracts subreddit parameter, calls the Reddit API service, handles errors, formats the subreddit info using formatSubredditInfo helper, and returns a standardized MCP success response.createToolHandler(async (params: z.infer<typeof SimpleSubredditInfoSchema>) => { const { subreddit } = params; const result = await redditAPI.getSubredditInfo(subreddit); if (!result.success) { return createErrorResponse("Error getting subreddit info", result.error); } const data = result.data; if (!data || !data.data) { return createErrorResponse("Subreddit not found"); } const subredditInfo = data.data; const formattedInfo = formatSubredditInfo(subredditInfo); return createSuccessResponse(formattedInfo); })
- src/index.ts:565-595 (registration)Registration of the 'get_subreddit_info' tool on the MCP server, including name, detailed description, input schema, and handler function.server.tool( "get_subreddit_info", "π Get subreddit information\n" + "π― What it does: Fetches detailed info about any Reddit subreddit\n" + "π Required: subreddit name (without r/ prefix)\n" + "π‘ Examples:\n" + " β’ Get info: {\"subreddit\": \"programming\"}\n" + " β’ Check subreddit: {\"subreddit\": \"AskReddit\"}\n" + " β’ View details: {\"subreddit\": \"MachineLearning\"}\n" + "π Output: Subreddit details with description, subscribers, active users, creation date, NSFW status, and URL", SimpleSubredditInfoSchema.shape, createToolHandler(async (params: z.infer<typeof SimpleSubredditInfoSchema>) => { const { subreddit } = params; const result = await redditAPI.getSubredditInfo(subreddit); if (!result.success) { return createErrorResponse("Error getting subreddit info", result.error); } const data = result.data; if (!data || !data.data) { return createErrorResponse("Subreddit not found"); } const subredditInfo = data.data; const formattedInfo = formatSubredditInfo(subredditInfo); return createSuccessResponse(formattedInfo); }) );
- src/types/index.ts:113-115 (schema)Zod input schema for the tool: requires a 'subreddit' string parameter.export const SimpleSubredditInfoSchema = z.object({ subreddit: z.string().describe("Subreddit name to get information about") });
- src/services/reddit-api.ts:386-390 (helper)Helper method in RedditAPIService that performs the actual API call to fetch subreddit information from Reddit's /r/{subreddit}/about.json endpoint.async getSubredditInfo(subreddit: string): Promise<ApiCallResult> { return this.makeRequest<{ data: RedditSubreddit }>( `/r/${subreddit}/about.json`, ); }
- src/index.ts:161-185 (helper)Helper function to format subreddit information into a human-readable string with emojis and details for the MCP response.function formatSubredditInfo(subreddit: RedditSubreddit): string { const name = subreddit.display_name || 'Unknown'; const title = subreddit.title || 'No title'; const description = subreddit.description || 'No description'; const subscribers = subreddit.subscribers || 0; const activeUsers = subreddit.active_user_count || 0; const createdDate = subreddit.created_utc ? new Date(subreddit.created_utc * 1000).toLocaleDateString() : 'Unknown'; const over18 = subreddit.over18 || false; let result = `π **r/${name}**\n`; result += `π ${title}\n`; result += `π Description: ${description}\n`; result += `π₯ Subscribers: ${subscribers.toLocaleString()}\n`; result += `π’ Active Users: ${activeUsers.toLocaleString()}\n`; result += `π Created: ${createdDate}\n`; result += `π NSFW: ${over18 ? 'Yes' : 'No'}\n`; if (subreddit.public_description) { result += `π Public Description: ${subreddit.public_description}\n`; } result += `π URL: https://reddit.com/r/${name}\n`; return result; }