Skip to main content
Glama
responses.py5.44 kB
""" 工具响应模型 定义所有 MCP 工具的标准化返回类型,支持 outputSchema 自动生成。 """ from pydantic import BaseModel, Field from typing import Optional, List, Dict, Any, Union from datetime import datetime from pathlib import Path class BaseToolResponse(BaseModel): """工具响应基类""" success: bool = Field(description="操作是否成功") timestamp: datetime = Field(default_factory=datetime.now, description="操作时间") class Config: json_encoders = { datetime: lambda v: v.isoformat() } # ================== 计算器工具响应模型 ================== class CalculationResult(BaseToolResponse): """计算结果模型""" result: float = Field(description="计算结果") expression: Optional[str] = Field(None, description="计算表达式") operation: str = Field(description="操作类型") class BMIResult(BaseToolResponse): """BMI计算结果""" bmi: float = Field(description="BMI值", ge=0) category: str = Field(description="BMI分类") weight_kg: float = Field(description="体重(千克)", gt=0) height_m: float = Field(description="身高(米)", gt=0) class StatisticsResult(BaseToolResponse): """统计计算结果""" average: float = Field(description="平均值") count: int = Field(description="数据点数量", ge=0) sum: float = Field(description="总和") minimum: Optional[float] = Field(None, description="最小值") maximum: Optional[float] = Field(None, description="最大值") # ================== 文本处理工具响应模型 ================== class TextAnalysisResult(BaseToolResponse): """文本分析结果""" words: int = Field(description="单词数", ge=0) characters: int = Field(description="字符数", ge=0) characters_no_spaces: int = Field(description="不含空格的字符数", ge=0) lines: int = Field(description="行数", ge=1) class CaseConversionResult(BaseToolResponse): """文本大小写转换结果""" original: str = Field(description="原始文本") converted: str = Field(description="转换后的文本") case_type: str = Field(description="转换类型") class ExtractionResult(BaseToolResponse): """文本提取结果""" matches: List[str] = Field(description="匹配的内容列表") count: int = Field(description="匹配数量", ge=0) pattern: str = Field(description="使用的模式") # ================== 文件操作工具响应模型 ================== class FileOperationResult(BaseToolResponse): """文件操作结果""" message: str = Field(description="操作结果描述") file_path: str = Field(description="文件路径") size_bytes: Optional[int] = Field(None, description="文件大小(字节)") operation: str = Field(description="执行的操作类型") class FileInfoResult(BaseToolResponse): """文件信息结果""" path: str = Field(description="文件路径") name: str = Field(description="文件名") type: str = Field(description="类型(file/directory)") size_bytes: int = Field(description="文件大小(字节)", ge=0) created: float = Field(description="创建时间戳") modified: float = Field(description="修改时间戳") exists: bool = Field(description="文件是否存在") class DirectoryResult(BaseToolResponse): """目录操作结果""" path: str = Field(description="目录路径") files: List[str] = Field(description="文件列表") directories: List[str] = Field(description="子目录列表") total_files: int = Field(description="文件总数", ge=0) total_directories: int = Field(description="目录总数", ge=0) # ================== 系统信息工具响应模型 ================== class SystemInfoResult(BaseToolResponse): """系统信息结果""" cpu_usage: float = Field(description="CPU使用率(百分比)", ge=0, le=100) memory_usage: float = Field(description="内存使用率(百分比)", ge=0, le=100) disk_usage: float = Field(description="磁盘使用率(百分比)", ge=0, le=100) platform: str = Field(description="操作系统平台") python_version: str = Field(description="Python版本") # ================== 通用工具响应模型 ================== class SimpleResult(BaseToolResponse): """简单结果模型,用于基础操作""" result: Union[str, int, float, bool] = Field(description="操作结果") details: Optional[str] = Field(None, description="详细信息") class ErrorResult(BaseToolResponse): """错误结果模型""" success: bool = Field(default=False, description="操作失败") error_type: str = Field(description="错误类型") error_message: str = Field(description="错误信息") error_code: Optional[str] = Field(None, description="错误代码") # ================== 类型导出 ================== __all__ = [ # 基础类型 "BaseToolResponse", # 计算器类型 "CalculationResult", "BMIResult", "StatisticsResult", # 文本处理类型 "TextAnalysisResult", "CaseConversionResult", "ExtractionResult", # 文件操作类型 "FileOperationResult", "FileInfoResult", "DirectoryResult", # 系统信息类型 "SystemInfoResult", # 通用类型 "SimpleResult", "ErrorResult", ]

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/WW-AI-Lab/Awesome-MCP-Scaffold'

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