Skip to main content
Glama
pab1it0

Chess.com MCP Server

get_club_members

Retrieve member lists for Chess.com clubs to analyze community participation and identify active players.

Instructions

Get members of a club on Chess.com

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
url_idYes

Implementation Reference

  • The main handler function for the 'get_club_members' tool. It is decorated with @mcp.tool for registration and fetches club members data from the Chess.com API endpoint 'club/{url_id}/members' using the shared make_api_request helper.
    @mcp.tool(description="Get members of a club on Chess.com")
    async def get_club_members(url_id: str) -> Dict[str, Any]:
        """
        Get members of a club on Chess.com.
    
        Args:
            url_id: The URL identifier of the club
    
        Returns:
            Club members data
        """
        logger.info("Fetching club members", url_id=url_id)
        return await make_api_request(f"club/{url_id}/members")
  • Shared helper function used by get_club_members (and other tools) to perform HTTP requests to the Chess.com API.
    async def make_api_request(
        endpoint: str,
        params: Optional[Dict[str, Any]] = None,
        accept_json: bool = True
    ) -> Union[Dict[str, Any], str]:
        """
        Make a request to the Chess.com API.
    
        Args:
            endpoint: The API endpoint to request
            params: Optional query parameters
            accept_json: Whether to accept JSON response (True) or PGN (False)
    
        Returns:
            JSON response as dict or text response as string
    
        Raises:
            httpx.HTTPError: If the request fails
        """
        url = f"{config.base_url}/{endpoint}"
        headers = {
            "accept": "application/json" if accept_json else "application/x-chess-pgn"
        }
    
        logger.debug(
            "Making API request",
            endpoint=endpoint,
            url=url,
            accept_json=accept_json,
            has_params=params is not None
        )
    
        async with httpx.AsyncClient() as client:
            try:
                response = await client.get(url, headers=headers, params=params or {})
                response.raise_for_status()
    
                if accept_json:
                    result = response.json()
                    logger.debug("API request successful", endpoint=endpoint, response_type="json")
                    return result
                else:
                    result = response.text
                    logger.debug("API request successful", endpoint=endpoint, response_type="text")
                    return result
    
            except httpx.HTTPError as e:
                logger.error(
                    "API request failed",
                    endpoint=endpoint,
                    url=url,
                    error=str(e),
                    error_type=type(e).__name__
                )
                raise

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/pab1it0/chess-mcp'

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