MiniMax MCP Server

Official
by MiniMax-AI
"""Minimax API client base class.""" import requests from typing import Any, Dict from minimax_mcp.exceptions import MinimaxAuthError, MinimaxRequestError class MinimaxAPIClient: """Base client for making requests to Minimax API.""" def __init__(self, api_key: str, api_host: str): """Initialize the API client. Args: api_key: The API key for authentication api_host: The API host URL """ self.api_key = api_key self.api_host = api_host self.session = requests.Session() self.session.headers.update({ 'Authorization': f'Bearer {api_key}', 'MM-API-Source': 'Minimax-MCP' }) def _make_request( self, method: str, endpoint: str, **kwargs ) -> Dict[str, Any]: """Make an HTTP request to the Minimax API. Args: method: HTTP method (GET, POST, etc.) endpoint: API endpoint path **kwargs: Additional arguments to pass to requests Returns: API response data as dictionary Raises: MinimaxAuthError: If authentication fails MinimaxRequestError: If the request fails """ url = f"{self.api_host}{endpoint}" # Set Content-Type based on whether files are being uploaded files = kwargs.get('files') if not files: self.session.headers['Content-Type'] = 'application/json' else: # Remove Content-Type header for multipart/form-data # requests library will set it automatically with the correct boundary self.session.headers.pop('Content-Type', None) try: response = self.session.request(method, url, **kwargs) # Check for other HTTP errors response.raise_for_status() data = response.json() # Check API-specific error codes base_resp = data.get("base_resp", {}) if base_resp.get("status_code") != 0: match base_resp.get("status_code"): case 1004: raise MinimaxAuthError( f"API Error: {base_resp.get('status_msg')}, please check your API key and API host." f"Trace-Id: {response.headers.get('Trace-Id')}" ) case 2038: raise MinimaxRequestError( f"API Error: {base_resp.get('status_msg')}, should complete real-name verification on the open-platform(https://platform.minimaxi.com/user-center/basic-information)." f"Trace-Id: {response.headers.get('Trace-Id')}" ) case _: raise MinimaxRequestError( f"API Error: {base_resp.get('status_code')}-{base_resp.get('status_msg')} " f"Trace-Id: {response.headers.get('Trace-Id')}" ) return data except requests.exceptions.RequestException as e: raise MinimaxRequestError(f"Request failed: {str(e)}") def get(self, endpoint: str, **kwargs) -> Dict[str, Any]: """Make a GET request.""" return self._make_request("GET", endpoint, **kwargs) def post(self, endpoint: str, **kwargs) -> Dict[str, Any]: """Make a POST request.""" return self._make_request("POST", endpoint, **kwargs)
ID: 2vrtgn1r1s