Skip to main content
Glama
Hawstein

MCP Server Reddit

by Hawstein

get_subreddit_hot_posts

Retrieve trending posts from any Reddit community to monitor popular discussions and content.

Instructions

Get hot posts from a specific subreddit

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
subreddit_nameYesName of the subreddit (e.g. 'Python', 'news')
limitNoNumber of posts to return (default: 10)

Implementation Reference

  • The core handler function that fetches hot posts from the specified subreddit using redditwarp client, builds Post objects using helper, and returns the list.
    def get_subreddit_hot_posts(self, subreddit_name: str, limit: int = 10) -> list[Post]:
        """Get hot posts from a specific subreddit"""
        posts = []
        for subm in self.client.p.subreddit.pull.hot(subreddit_name, limit):
            posts.append(self._build_post(subm))
        return posts
  • Pydantic model defining the structure of a Post, used as the return type for get_subreddit_hot_posts (list[Post]).
    class Post(BaseModel):
        id: str
        title: str
        author: str
        score: int
        subreddit: str
        url: str
        created_at: str
        comment_count: int
        post_type: PostType
        content: str | None
  • Tool registration in MCP server's list_tools(), including name, description, and input schema validation.
    Tool(
        name=RedditTools.GET_SUBREDDIT_HOT_POSTS.value,
        description="Get hot posts from a specific subreddit",
        inputSchema={
            "type": "object",
            "properties": {
                "subreddit_name": {
                    "type": "string",
                    "description": "Name of the subreddit (e.g. 'Python', 'news')",
                },
                "limit": {
                    "type": "integer",
                    "description": "Number of posts to return (default: 10)",
                    "default": 10,
                    "minimum": 1,
                    "maximum": 100
                }
            },
            "required": ["subreddit_name"]
        }
    ),
  • Dispatch logic in MCP server's call_tool() that validates arguments and invokes the handler function.
    case RedditTools.GET_SUBREDDIT_HOT_POSTS.value:
        subreddit_name = arguments.get("subreddit_name")
        if not subreddit_name:
            raise ValueError("Missing required argument: subreddit_name")
        limit = arguments.get("limit", 10)
        result = reddit_server.get_subreddit_hot_posts(subreddit_name, limit)
  • Helper function used by the handler to construct Post models from raw redditwarp submission objects.
    def _build_post(self, submission) -> Post:
        """Helper method to build Post object from submission"""
        return Post(
            id=submission.id36,
            title=submission.title,
            author=submission.author_display_name or '[deleted]',
            score=submission.score,
            subreddit=submission.subreddit.name,
            url=submission.permalink,
            created_at=submission.created_at.astimezone().isoformat(),
            comment_count=submission.comment_count,
            post_type=self._get_post_type(submission),
            content=self._get_post_content(submission)
        )

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

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