Skip to main content
Glama
base_service.py2.78 kB
"""服务基类。 提供所有业务服务通用的基础功能和工具方法。 """ from __future__ import annotations from typing import TYPE_CHECKING, Any, Dict, Optional from magicapi_tools.logging_config import get_logger from magicapi_tools.utils import ( create_operation_error, handle_tool_exception, log_operation_start, log_operation_end, ) if TYPE_CHECKING: from magicapi_mcp.tool_registry import ToolContext logger = get_logger('services.base') class BaseService: """服务基类,提供通用功能。""" def __init__(self, context: "ToolContext"): """初始化服务。 Args: context: 工具上下文,包含HTTP客户端等依赖 """ self.context = context self.http_client = context.http_client self.settings = context.settings def execute_operation(self, operation_name: str, operation_func, *args, **kwargs) -> Dict[str, Any]: """执行操作的统一模板方法。 Args: operation_name: 操作名称 operation_func: 要执行的操作函数 *args: 位置参数 **kwargs: 关键字参数 Returns: 操作结果 """ log_operation_start(operation_name, kwargs) try: result = operation_func(*args, **kwargs) log_operation_end(operation_name, "success" in result if isinstance(result, dict) else True) return result except Exception as e: return handle_tool_exception(operation_name, e) def validate_response(self, ok: bool, payload: Any, operation: str) -> Optional[Dict[str, Any]]: """验证HTTP响应。 Args: ok: 请求是否成功 payload: 响应数据 operation: 操作名称 Returns: 如果验证失败返回错误信息,否则返回None """ if not ok: return create_operation_error(operation, "http_error", "HTTP请求失败", payload) if isinstance(payload, dict) and payload.get("code") != 1: error_msg = payload.get("message", "API调用失败") error_code = payload.get("code", "api_error") return create_operation_error(operation, str(error_code), error_msg, payload.get("data")) return None def extract_data_from_response(self, payload: Any, default: Any = None) -> Any: """从响应中提取数据。 Args: payload: 响应payload default: 默认值 Returns: 提取的数据或默认值 """ if isinstance(payload, dict): return payload.get("data", default) return payload if payload is not None else default

Latest Blog Posts

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/Dwsy/magic-api-mcp-server'

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