Skip to main content
Glama
tandat8503

Reddit MCP Server

by tandat8503

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

TableJSON Schema
NameRequiredDescriptionDefault
subredditYesSubreddit name to get information about

Implementation Reference

  • 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);
      })
    );
  • 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")
    });
  • 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`,
      );
    }
  • 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;
    }

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/tandat8503/mcp-reddit'

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