Skip to main content
Glama
rhettlong

USCardForum MCP Server

by rhettlong

get_current_session

Retrieve current session details to verify authentication status and access user information for USCardForum interactions.

Instructions

Get information about the current session.

Returns a Session object with:
- is_authenticated: Whether logged in
- current_user: CurrentUser object with user info (if authenticated)

Use to verify authentication status.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
current_userNoLogged-in user
is_authenticatedNoWhether authenticated

Implementation Reference

  • MCP tool handler for get_current_session. Registers the tool and delegates to the shared client instance.
    @mcp.tool()
    def get_current_session() -> Session:
        """
        Get information about the current session.
    
        Returns a Session object with:
        - is_authenticated: Whether logged in
        - current_user: CurrentUser object with user info (if authenticated)
    
        Use to verify authentication status.
        """
        return get_client().get_current_session()
  • Pydantic model for Session return type, including from_api_response factory method.
    class Session(BaseModel):
        """Current session information."""
    
        current_user: CurrentUser | None = Field(None, description="Logged-in user")
        is_authenticated: bool = Field(False, description="Whether authenticated")
    
        class Config:
            extra = "ignore"
    
        @classmethod
        def from_api_response(cls, data: dict[str, Any]) -> "Session":
            """Parse from raw API response."""
            user_data = data.get("current_user") or data.get("user")
            current_user = CurrentUser(**user_data) if user_data else None
            return cls(
                current_user=current_user,
                is_authenticated=current_user is not None,
            )
  • Core API implementation that fetches session from /session/current.json endpoint and handles unauthenticated case.
    def get_current_session(self) -> Session:
        """Get current session info.
    
        Returns:
            Session data including user info (unauthenticated if no session)
        """
        try:
            payload = self._get("/session/current.json")
            return Session.from_api_response(payload)
        except requests.exceptions.HTTPError as e:
            # 404 means no session - return unauthenticated session
            if e.response is not None and e.response.status_code == 404:
                return Session(is_authenticated=False, current_user=None)
            raise
  • Client wrapper that delegates to AuthAPI.get_current_session()
    def get_current_session(self) -> Session:
        """Get current session info.
    
        Returns:
            Session data including user info
        """
        return self._auth.get_current_session()
  • Shared singleton client factory used by all tools, with optional auto-login.
    def get_client() -> DiscourseClient:
        """Get or create the Discourse client instance."""
        global _client, _login_attempted
    
        if _client is None:
            base_url = os.environ.get("USCARDFORUM_URL", "https://www.uscardforum.com")
            timeout = float(os.environ.get("USCARDFORUM_TIMEOUT", "15.0"))
            _client = DiscourseClient(base_url=base_url, timeout_seconds=timeout)
    
            # Auto-login if credentials are provided
            if not _login_attempted:
                _login_attempted = True
                username = os.environ.get("NITAN_USERNAME")
                password = os.environ.get("NITAN_PASSWORD")
    
                if username and password:
                    try:
                        result = _client.login(username, password)
                        if result.success:
                            print(f"[uscardforum] Auto-login successful as '{result.username}'")
                        elif result.requires_2fa:
                            print(
                                "[uscardforum] Auto-login failed: 2FA required. Use login() tool with second_factor_token."
                            )
                        else:
                            print(
                                f"[uscardforum] Auto-login failed: {result.error or 'Unknown error'}"
                            )
                    except Exception as e:  # pragma: no cover - logging side effect
                        print(f"[uscardforum] Auto-login error: {e}")
    
        return _client
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return structure (Session object with fields) and implies a read-only operation by focusing on information retrieval, but lacks details on error handling, rate limits, or permissions required. This is adequate but has gaps for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: it starts with the core purpose, lists return details in a bulleted format, and ends with usage guidance. Every sentence adds value without redundancy, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no annotations, but has an output schema), the description is mostly complete. It explains what the tool does and what it returns, leveraging the output schema to avoid detailing return values. However, it could improve by mentioning potential errors or edge cases (e.g., what happens if no session exists).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description appropriately adds no parameter details, focusing instead on output semantics. This meets the baseline for zero parameters, but doesn't exceed it by explaining context or assumptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get information about the current session' with specific details about what information is returned (authentication status and user info). It distinguishes itself from siblings by focusing on session status rather than content retrieval like get_topic_posts or user data like get_user_summary, though it doesn't explicitly name these distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance with 'Use to verify authentication status,' which tells the agent when to invoke this tool. However, it doesn't explicitly state when not to use it or name specific alternatives (e.g., using login for authentication attempts), keeping it from a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/rhettlong/uscardforum-mcp'

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