# Copyright (c) Microsoft. All rights reserved. import asyncio import os from agent_framework import Agent, MCPStreamableHTTPTool from agent_framework.openai import OpenAIResponsesClient from dotenv import load_dotenv from httpx import AsyncClient # Load environment variables from .env file load_dotenv() """ MCP Authentication Example This example demonstrates how to authenticate with MCP servers using API key headers. For more authentication examples including OAuth 2.0 flows, see: - https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-auth-client - https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/servers/simple-auth """ async def api_key_auth_example() -> None: """Example of using API key authentication with MCP server.""" # Configuration mcp_server_url = os.getenv("MCP_SERVER_URL", "your-mcp-server-url") api_key = os.getenv("MCP_API_KEY") # Create authentication headers # Common patterns: # - Bearer token: "Authorization": f"Bearer {api_key}" # - API key header: "X-API-Key": api_key # - Custom header: "Authorization": f"ApiKey {api_key}" auth_headers = { "Authorization": f"Bearer {api_key}", } # Create HTTP client with authentication headers http_client = AsyncClient(headers=auth_headers) # Create MCP tool with the configured HTTP client async with ( MCPStreamableHTTPTool( name="MCP tool", description="MCP tool description", url=mcp_server_url, http_client=http_client, # Pass HTTP client with authentication headers ) as mcp_tool, Agent( client=OpenAIResponsesClient(), name="Agent", instructions="You are a helpful assistant.", tools=mcp_tool, ) as agent, ): query = "What tools are available to you?" print(f"User: {query}") result = await agent.run(query) print(f"Agent: {result.text}") if __name__ == "__main__": asyncio.run(api_key_auth_example())