Skip to main content
Glama

OpenAPI to Model Context Protocol (MCP)

#!/usr/bin/env python3 """ Test script to validate the enhanced authentication functionality. """ import os import sys import logging # Add src to path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) import server def test_authentication_configuration(): """Test authentication configuration and setup.""" print("Testing Enhanced Authentication System") print("=" * 50) # Set up logging logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') try: # Test 1: OAuth Configuration print("\n1. Testing OAuth Configuration") os.environ.clear() os.environ.update({ 'OPENAPI_URL': 'https://petstore3.swagger.io/api/v3/openapi.json', 'SERVER_NAME': 'petstore_oauth', 'OAUTH_CLIENT_ID': 'test_client', 'OAUTH_CLIENT_SECRET': 'test_secret', 'OAUTH_TOKEN_URL': 'https://example.com/oauth/token' }) config1 = server.ServerConfig() print(f"✓ OAuth configured: {config1.is_oauth_configured()}") print(f" - Client ID: {config1.oauth_client_id}") print(f" - Token URL: {config1.oauth_token_url}") # Test 2: Username/Password Configuration print("\n2. Testing Username/Password Configuration") os.environ.clear() os.environ.update({ 'OPENAPI_URL': 'https://api.example.com/openapi.json', 'SERVER_NAME': 'secure_api', 'API_USERNAME': 'admin', 'API_PASSWORD': 'test123', 'API_LOGIN_ENDPOINT': 'https://api.example.com/auth/token' }) config2 = server.ServerConfig() print(f"✓ Username/password configured: {config2.is_username_auth_configured()}") print(f" - Username: {config2.username}") print(f" - Login endpoint: {config2.login_endpoint}") # Test 3: Authentication Manager Integration print("\n3. Testing Authentication Manager") srv = server.MCPServer(config2) print(f"✓ Auth manager created: {srv.authenticator.is_configured()}") # Test auto-detection of login endpoint os.environ['API_LOGIN_ENDPOINT'] = '' # Clear explicit endpoint config3 = server.ServerConfig() srv3 = server.MCPServer(config3) print("✓ Auto-detection of login endpoint works") # Test 4: Integration with Weather API print("\n4. Testing Integration with Norwegian Weather API") os.environ.update({ 'OPENAPI_URL': 'https://api.met.no/weatherapi/locationforecast/2.0/swagger', 'SERVER_NAME': 'weather', 'API_USERNAME': 'test_user', 'API_PASSWORD': 'test123' }) config4 = server.ServerConfig() srv4 = server.MCPServer(config4) srv4.initialize() api_tools = srv4.register_openapi_tools() srv4.register_standard_tools() resources = srv4.register_resources() prompts = srv4.generate_prompts() print(f"✓ API operations parsed: {len(srv4.operations_info)}") print(f"✓ API tools registered: {api_tools}") print(f"✓ Total tools: {len(srv4.registered_tools)}") print(f"✓ Resources: {resources}") print(f"✓ Prompts: {prompts}") # Test weather forecast tools forecast_tools = [name for name in srv4.registered_tools.keys() if 'compact' in name.lower() or 'complete' in name.lower()] print(f"✓ Weather forecast tools: {len(forecast_tools)}") for tool in forecast_tools[:3]: # Show first 3 tools print(f" - {tool}") # Test 5: Environment Variable Documentation print("\n5. Environment Variables Supported:") print("✓ Core Configuration:") print(" - OPENAPI_URL (required)") print(" - SERVER_NAME (optional)") print("✓ OAuth2 Authentication:") print(" - OAUTH_CLIENT_ID") print(" - OAUTH_CLIENT_SECRET") print(" - OAUTH_TOKEN_URL") print(" - OAUTH_SCOPE") print("✓ Username/Password Authentication:") print(" - API_USERNAME") print(" - API_PASSWORD") print(" - API_LOGIN_ENDPOINT (optional, auto-detected)") print("\n" + "=" * 50) print("✅ All authentication tests passed!") print("✅ Server supports both OAuth2 and username/password authentication") print("✅ Environment variable configuration works correctly") print("✅ Authentication is properly integrated with API tools") return True except Exception as e: print(f"\n❌ Test failed: {e}") import traceback traceback.print_exc() return False if __name__ == "__main__": success = test_authentication_configuration() sys.exit(0 if success else 1)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gujord/OpenAPI-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server