"""OAuth client example for connecting to a Keycloak-protected FastMCP server.

To run:
    python client.py
"""

import asyncio

from fastmcp import Client

SERVER_URL = "http://127.0.0.1:8000/mcp"


async def main():
    async with Client(SERVER_URL, auth="oauth") as client:
        assert await client.ping()
        print("Successfully authenticated!")

        tools = await client.list_tools()
        print(f"Available tools ({len(tools)}):")
        for tool in tools:
            print(f"   - {tool.name}: {tool.description}")

        print("Calling protected tool: get_access_token_claims")
        result = await client.call_tool("get_access_token_claims")
        claims = result.data
        print(f"   sub: {claims.get('sub', 'N/A')}")
        print(f"   scope: {claims.get('scope', 'N/A')}")
        print(f"   azp: {claims.get('azp', 'N/A')}")


if __name__ == "__main__":
    asyncio.run(main())
