Skip to main content
Glama

MaverickMCP

by wshobson
MIT License
165
  • Apple
insomnia_export.py4.03 kB
""" Insomnia Collection Export Utility Converts OpenAPI specifications to Insomnia workspace format. """ import uuid from typing import Any def convert_to_insomnia(openapi_dict: dict[str, Any]) -> dict[str, Any]: """ Convert OpenAPI specification to Insomnia workspace format. Args: openapi_dict: OpenAPI specification dictionary Returns: Insomnia workspace dictionary """ info = openapi_dict.get("info", {}) workspace = { "_type": "export", "__export_format": 4, "__export_date": "2024-01-01T00:00:00.000Z", "__export_source": "maverick-mcp:openapi", "resources": [], } # Create workspace resource workspace_id = f"wrk_{uuid.uuid4().hex[:12]}" workspace["resources"].append( { "_id": workspace_id, "_type": "workspace", "name": info.get("title", "API Workspace"), "description": info.get("description", "Exported from OpenAPI spec"), "scope": "collection", } ) # Create environment for base URL env_id = f"env_{uuid.uuid4().hex[:12]}" servers = openapi_dict.get("servers", []) base_url = ( servers[0].get("url", "http://localhost:8000") if servers else "http://localhost:8000" ) workspace["resources"].append( { "_id": env_id, "_type": "environment", "name": "Base Environment", "data": {"base_url": base_url}, "dataPropertyOrder": {"&": ["base_url"]}, "color": "#7d69cb", "isPrivate": False, "metaSortKey": 1, "parentId": workspace_id, } ) # Convert paths to Insomnia requests paths = openapi_dict.get("paths", {}) for path, methods in paths.items(): for method, operation in methods.items(): if method.upper() in ["GET", "POST", "PUT", "DELETE", "PATCH"]: request_id = f"req_{uuid.uuid4().hex[:12]}" request = { "_id": request_id, "_type": "request", "parentId": workspace_id, "name": operation.get("summary", f"{method.upper()} {path}"), "description": operation.get("description", ""), "url": "{{ _.base_url }}" + path, "method": method.upper(), "headers": [], "parameters": [], "body": {}, "authentication": {}, } # Add request body if present if "requestBody" in operation: content = operation["requestBody"].get("content", {}) if "application/json" in content: request["headers"].append( {"name": "Content-Type", "value": "application/json"} ) request["body"] = {"mimeType": "application/json", "text": "{}"} # Add example if available schema = content["application/json"].get("schema", {}) if "example" in schema: request["body"]["text"] = str(schema["example"]) # Add query parameters if present if "parameters" in operation: for param in operation["parameters"]: if param.get("in") == "query": request["parameters"].append( { "name": param["name"], "value": "", "description": param.get("description", ""), "disabled": not param.get("required", False), } ) workspace["resources"].append(request) return workspace

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/wshobson/maverick-mcp'

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