Skip to main content
Glama
rafaljanicki

X (Twitter) MCP server

by rafaljanicki

get_user_followers

Retrieve a list of followers for a specific user on X (Twitter) using user ID, with options to set count and cursor for pagination.

Instructions

Retrieves a list of followers for a given user

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNo
cursorNo
user_idYes

Implementation Reference

  • The handler function for the 'get_user_followers' tool. It checks rate limits, initializes the Twitter client, fetches the followers using Tweepy's get_users_followers method, and returns a list of user dictionaries.
    @server.tool(name="get_user_followers", description="Retrieves a list of followers for a given user") async def get_user_followers(user_id: str, count: Optional[int] = 100, cursor: Optional[str] = None) -> List[Dict]: """Retrieves a list of followers for a given user. Args: user_id (str): The user ID whose followers are to be retrieved. count (Optional[int]): The number of followers to retrieve per page. Default is 100. Max is 100 for V2 API. cursor (Optional[str]): A pagination token for fetching the next set of results. """ if not check_rate_limit("follow_actions"): raise Exception("Follow action rate limit exceeded") client, _ = initialize_twitter_clients() followers = client.get_users_followers(id=user_id, max_results=count, pagination_token=cursor, user_fields=["id", "name", "username"]) return [user.data for user in followers.data]
  • The @server.tool decorator registers the get_user_followers function as an MCP tool with the specified name and description.
    @server.tool(name="get_user_followers", description="Retrieves a list of followers for a given user")
  • The function signature and docstring define the input schema (parameters: user_id (str), count (Optional[int]=100), cursor (Optional[str]=None)) and output (List[Dict]).
    async def get_user_followers(user_id: str, count: Optional[int] = 100, cursor: Optional[str] = None) -> List[Dict]: """Retrieves a list of followers for a given user. Args: user_id (str): The user ID whose followers are to be retrieved. count (Optional[int]): The number of followers to retrieve per page. Default is 100. Max is 100 for V2 API. cursor (Optional[str]): A pagination token for fetching the next set of results. """
  • Helper function to lazily initialize the Tweepy Twitter v2 Client and v1.1 API.
    def initialize_twitter_clients() -> tuple[tweepy.Client, tweepy.API]: """Initialize Twitter API clients on-demand.""" global _twitter_client, _twitter_v1_api if _twitter_client is not None and _twitter_v1_api is not None: return _twitter_client, _twitter_v1_api # Verify required environment variables required_env_vars = [ "TWITTER_API_KEY", "TWITTER_API_SECRET", "TWITTER_ACCESS_TOKEN", "TWITTER_ACCESS_TOKEN_SECRET", "TWITTER_BEARER_TOKEN", ] for var in required_env_vars: if not os.getenv(var): raise EnvironmentError(f"Missing required environment variable: {var}") # Initialize v2 API client _twitter_client = tweepy.Client( consumer_key=os.getenv("TWITTER_API_KEY"), consumer_secret=os.getenv("TWITTER_API_SECRET"), access_token=os.getenv("TWITTER_ACCESS_TOKEN"), access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET"), bearer_token=os.getenv("TWITTER_BEARER_TOKEN") ) # Initialize v1.1 API for media uploads and other unsupported v2 endpoints auth = tweepy.OAuth1UserHandler( consumer_key=os.getenv("TWITTER_API_KEY"), consumer_secret=os.getenv("TWITTER_API_SECRET"), access_token=os.getenv("TWITTER_ACCESS_TOKEN"), access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET") ) _twitter_v1_api = tweepy.API(auth) return _twitter_client, _twitter_v1_api
  • Helper function to check rate limits before performing actions like fetching followers.
    def check_rate_limit(action_type: str) -> bool: """Check if the action is within rate limits.""" config = RATE_LIMITS.get(action_type) if not config: return True # No limit defined counter = rate_limit_counters[action_type] now = datetime.now() if now >= counter["reset_time"]: counter["count"] = 0 counter["reset_time"] = now + config["window"] if counter["count"] >= config["limit"]: return False counter["count"] += 1 return True

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/rafaljanicki/x-twitter-mcp-server'

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