Skip to main content
Glama

OpenAPI to Model Context Protocol (MCP)

#!/usr/bin/env python3 """ Simple demo of the FastMCP OpenAPI server. Shows how to run the server with stdio transport. """ import os import sys import asyncio # Add src to path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) async def main(): """Main demo function.""" from fastmcp_server import FastMCPOpenAPIServer from config import ServerConfig # Configure for Norwegian Weather API (no auth required) os.environ.update({ 'OPENAPI_URL': 'https://api.met.no/weatherapi/locationforecast/2.0/swagger', 'SERVER_NAME': 'weather_fastmcp', 'MCP_HTTP_ENABLED': 'false' # Use stdio transport }) print("FastMCP OpenAPI Server Demo") print("=" * 30) print("API: Norwegian Weather Service") print("Transport: stdio (for MCP clients)") print("=" * 30) # Create and initialize server config = ServerConfig() server = FastMCPOpenAPIServer(config) await server.initialize() print(f"✓ Server initialized with {len(server.operations)} operations") print("✓ Ready for MCP client connections") print("\nTo use with Claude Desktop, add this to your MCP config:") print(f""" {{ "mcpServers": {{ "weather": {{ "command": "{sys.executable}", "args": ["{os.path.abspath(__file__)}"], "transport": "stdio" }} }} }} """) # For demo, just show what tools are available tools = await server.mcp.get_tools() print(f"\nAvailable tools ({len(tools)}):") tools_list = list(tools.values()) if isinstance(tools, dict) else list(tools) for tool in tools_list[:10]: # Show first 10 print(f" - {tool.name}") if len(tools_list) > 10: print(f" ... and {len(tools_list) - 10} more tools") print("\nStarting stdio server...") # This will run the server with stdio transport server.run_stdio() if __name__ == "__main__": asyncio.run(main())

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