Skip to main content
Glama

openapi-mcp-proxy

by nyudenkov
schema.py2.71 kB
"""Schema and model information.""" from typing import Any, Dict, List, Optional from pydantic import BaseModel from openapi_mcp_proxy.models.pagination import ModelFilterParams class ModelInfo(BaseModel): """Information about a data model""" name: str type: str = "object" properties: Dict[str, Any] = {} required: List[str] = [] description: Optional[str] = None tags: List[str] = [] def matches_filters(self, filters: ModelFilterParams) -> bool: """Check if this model matches the provided filters.""" if filters.types and self.type not in filters.types: return False prop_count = len(self.properties) if filters.min_properties is not None and prop_count < filters.min_properties: return False if filters.max_properties is not None and prop_count > filters.max_properties: return False if filters.has_required_fields is not None: has_required = len(self.required) > 0 if has_required != filters.has_required_fields: return False if filters.tags_include: if not any(tag in self.tags for tag in filters.tags_include): return False if filters.tags_exclude: if any(tag in self.tags for tag in filters.tags_exclude): return False return True def format_display(self, detailed: bool = False) -> str: """Format model for display.""" result = f"- {self.name} ({self.type})" if detailed: if self.description: result += f" - {self.description}" result += f" [{len(self.properties)} properties" if self.required: result += f", {len(self.required)} required" result += "]" if self.tags: result += f" [Tags: {', '.join(self.tags)}]" return result def get_property_count(self) -> int: """Get the number of properties in this model.""" return len(self.properties) def get_required_count(self) -> int: """Get the number of required properties.""" return len(self.required) class ApiInfo(BaseModel): """General information about an API.""" title: str version: str description: str = "" base_url: str tags: List[str] = [] def format_display(self) -> str: """Format API info for display.""" result = f"API: {self.title} (v{self.version})\n" result += f"Description: {self.description}\n" result += f"Base URL: {self.base_url}\n" if self.tags: result += f"Tags: {', '.join(self.tags)}\n" return result

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/nyudenkov/openapi-mcp-proxy'

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