mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-14 01:29:10 +02:00
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).
43 lines
1.2 KiB
Python
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())
|