Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Python MCP Weather Server with OAuth 2.1 AuthenticationAre there any active weather alerts for Florida right now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Python MCP Weather Server with OAuth 2.1 Authentication
A production-ready Model Context Protocol (MCP) server built with FastAPI that provides weather information using the National Weather Service API. Features full MCP OAuth 2.1 compliance with PKCE, dynamic client registration, and Azure AD integration. Ready for deployment to Azure App Service with Azure Developer CLI (azd).
π Features
MCP OAuth 2.1 Specification Compliant: Complete implementation of MCP Authorization Specification (2025-03-26)
PKCE Required: Secure authorization with Proof Key for Code Exchange (RFC 7636, S256 method)
Dynamic Client Registration: Automatic client registration per RFC 7591
Authorization Server Metadata: Discovery endpoint per RFC 8414
Third-Party Authorization: Uses Azure AD as authorization server
MCP Protocol Headers: Full support for
MCP-Protocol-Version: 2025-03-26JWT Token Management: Secure token-based authentication
Weather Tools:
get_alerts: Get weather alerts for any US stateget_forecast: Get detailed weather forecast for any location
Azure Ready: Pre-configured for Azure App Service deployment
Web Test Interface: Built-in OAuth 2.1 flow testing
π MCP Authorization Implementation
This server implements the complete MCP Authorization Specification (2025-03-26):
OAuth 2.1 Endpoints
GET /.well-known/oauth-authorization-server- Authorization server metadata (RFC 8414)POST /register- Dynamic client registration (RFC 7591)GET /authorize- Authorization endpoint with PKCE (RFC 7636)POST /token- Token endpoint for code exchange and refreshGET /auth/azure/callback- Third-party authorization callback
MCP Protocol Features
β Protocol Version Headers:
MCP-Protocol-Version: 2025-03-26β PKCE Required: All clients must use S256 method
β Dynamic Registration: Automatic client onboarding
β JWT Authentication: Bearer token validation on MCP endpoints
β Proper Error Handling: 401/403/400 responses with details
β Azure AD Integration: Enterprise-grade authorization server
β οΈ Important: Complete OAuth setup required before use. See AUTH_SETUP.md for Azure AD configuration instructions.
π» Local Development
Prerequisites
Python 3.8+
Azure account with completed OAuth setup (see AUTH_SETUP.md)
Setup & Run
Complete OAuth setup first: Follow the instructions in AUTH_SETUP.md to create your Azure App Registration.
Clone and install dependencies:
git clone <your-repo-url> cd remote-mcp-webapp-python-auth-oauth python -m venv venv .\venv\Scripts\Activate.ps1 # Windows # source venv/bin/activate # macOS/Linux pip install -r requirements.txtConfigure environment variables:
cp .env.example .env # Edit .env with your Azure OAuth credentials from AUTH_SETUP.mdStart the development server:
.\start_server.ps1 # Windows # or manually: uvicorn main:app --host 0.0.0.0 --port 8000 --reloadAccess the server:
Server: http://localhost:8000/
Health Check: http://localhost:8000/health
OAuth 2.1 Test Interface: http://localhost:8000/mcp_oauth_test.html
API Docs: http://localhost:8000/docs
π Connect to the Local MCP Server
Authentication Required
Before connecting any MCP client, you must authenticate:
Get JWT Token: Visit http://localhost:8000/mcp_oauth_test.html
Complete OAuth Flow: Use the built-in OAuth 2.1 test interface
Copy JWT Token: Use the token in your MCP client configuration
Using MCP Inspector
In a new terminal window, install and run MCP Inspector:
npx @modelcontextprotocol/inspectorCTRL+click the URL displayed by the app (e.g. http://localhost:5173/#resources)
Configure authenticated connection:
Set transport type to
HTTPSet URL to:
http://localhost:8000/Add Authorization header:
Bearer <your-jwt-token>
π‘ Getting your JWT token: Visit http://localhost:8000/mcp_oauth_test.html to complete the OAuth 2.1 flow and obtain your JWT token.
Test the connection: List Tools, click on a tool, and Run Tool
Configuration for MCP Clients
Post-Deployment Setup
β οΈ Critical: After deployment, you must update your Azure App Registration:
Note your deployed URL:
https://app-web-[unique-id].azurewebsites.net/Go to Azure Portal β Microsoft Entra ID β App registrations β Your App
Click Authentication β Add redirect URI:
https://app-web-[unique-id].azurewebsites.net/auth/azure/callbackClick Save
π‘ Note: The redirect URI must be
/auth/azure/callback(not/auth/callback) for the MCP OAuth 2.1 flow to work correctly.
Test Your Deployment
After deployment, your authenticated MCP server will be available at:
OAuth 2.1 Test Interface:
https://<your-app>.azurewebsites.net/mcp_oauth_test.htmlHealth Check:
https://<your-app>.azurewebsites.net/healthMCP Capabilities:
https://<your-app>.azurewebsites.net/mcp/capabilitiesAPI Docs:
https://<your-app>.azurewebsites.net/docs
π Connect to the Remote MCP Server
Follow the same guidance as the local setup, but use your Azure App Service URL and ensure you have a valid JWT token from the deployed authentication endpoint.
Configuration for deployed server:
π§ͺ Testing
Interactive OAuth 2.1 Testing
Local: Visit http://localhost:8000/mcp_oauth_test.html
Azure: Visit
https://<your-app>.azurewebsites.net/mcp_oauth_test.html
The test interface provides:
Complete OAuth 2.1 Flow: Dynamic client registration β Authorization β Token exchange
PKCE Validation: Test the full Proof Key for Code Exchange flow
MCP Endpoint Testing: Test authenticated weather tools
JWT Token Display: View and validate your authentication tokens
Client Callback Testing: Includes
/client-callbackendpoint for OAuth flow validation
OAuth Flow Architecture
The server implements a complete OAuth 2.1 flow:
Client Registration: Dynamic client registration with auto-generated credentials
Authorization: User redirected to Azure AD for authentication
Azure Callback: Server receives Azure auth code at
/auth/azure/callbackClient Callback: Server redirects to client's callback (e.g.,
/client-callback) with authorization codeToken Exchange: Client exchanges authorization code for JWT access token
MCP Client Testing
Test with any MCP-compatible client using the authenticated endpoints and your JWT token.
π¦οΈ Data Source
This server uses the National Weather Service (NWS) API:
Real-time weather alerts and warnings
Detailed weather forecasts
Official US government weather data
No API key required
High reliability and accuracy
π Security Features
β OAuth 2.1 Compliance: Full MCP Authorization Specification implementation
β PKCE Required: S256 method for all authorization flows
β Dynamic Client Registration: Secure automatic client onboarding
β Azure AD Integration: Enterprise-grade authorization server
β JWT Token Security: Configurable expiration and secure validation
β Protocol Version Enforcement: MCP-Protocol-Version header validation
β Request Logging: Full audit trail with user identification
β CORS Protection: Proper cross-origin resource sharing policies