fastmcp/examples/auth/propelauth_oauth/client.py
Andrew Israel 5fb72c7200 Adds PropelAuth as an AuthProvider
Adds the PropelAuthProvider which delegates to the IntrospectionTokenVerifier
and optionally does an additional resource check.
Adds an example server and client which makes an authenticated request
and gets information from the token.
Updates the documentation (but only for v3 as this isn't in v2).
2026-03-02 16:18:22 -05:00

43 lines
1.2 KiB
Python

"""OAuth client example for connecting to PropelAuth-protected FastMCP servers.
This example demonstrates how to connect to a PropelAuth OAuth-protected FastMCP server.
To run:
python client.py
"""
import asyncio
from fastmcp.client import Client
SERVER_URL = "http://127.0.0.1:8000/mcp"
async def main():
try:
async with Client(SERVER_URL, auth="oauth") as client:
assert await client.ping()
print("✅ Successfully authenticated with PropelAuth!")
tools = await client.list_tools()
print(f"🔧 Available tools ({len(tools)}):")
for tool in tools:
print(f" - {tool.name}: {tool.description}")
# Test calling a tool
result = await client.call_tool(
"echo", {"message": "Hello from PropelAuth!"}
)
print(f"🎯 Echo result: {result}")
# Test calling whoami tool
whoami = await client.call_tool("whoami", {})
print(f"👤 Who am I: {whoami}")
except Exception as e:
print(f"❌ Authentication failed: {e}")
raise
if __name__ == "__main__":
asyncio.run(main())