Coverage for src/quickmcp/types.py: 100%
49 statements
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-20 20:56 +0200
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-20 20:56 +0200
1"""
2QuickMCP Types - Type definitions for QuickMCP
3"""
5from typing import Any, Dict, List, Optional, Union
6from pydantic import BaseModel, Field
7from enum import Enum
10class ToolResult(BaseModel):
11 """
12 Standard result format for MCP tools.
13 """
14 result: Any = Field(..., description="The tool execution result")
15 success: bool = Field(default=True, description="Whether the tool executed successfully")
16 error: Optional[str] = Field(default=None, description="Error message if failed")
17 metadata: Optional[Dict[str, Any]] = Field(default=None, description="Additional metadata")
20class ResourceContent(BaseModel):
21 """
22 Content returned by MCP resources.
23 """
24 uri: str = Field(..., description="The resource URI")
25 content: str = Field(..., description="The resource content")
26 mime_type: str = Field(default="text/plain", description="MIME type of the content")
27 metadata: Optional[Dict[str, Any]] = Field(default=None, description="Additional metadata")
30class PromptMessage(BaseModel):
31 """
32 A message in a prompt template.
33 """
34 role: str = Field(..., description="Message role (user, assistant, system)")
35 content: str = Field(..., description="Message content")
38class Context(BaseModel):
39 """
40 Execution context passed to tools and resources.
41 """
42 request_id: Optional[str] = Field(default=None, description="Unique request ID")
43 user: Optional[str] = Field(default=None, description="User identifier")
44 session_id: Optional[str] = Field(default=None, description="Session identifier")
45 metadata: Dict[str, Any] = Field(default_factory=dict, description="Additional context")
48class TransportType(str, Enum):
49 """
50 Supported transport types for MCP servers.
51 """
52 STDIO = "stdio"
53 SSE = "sse"
54 HTTP = "http"
55 WEBSOCKET = "websocket"
58class ServerConfig(BaseModel):
59 """
60 Configuration for a QuickMCP server.
61 """
62 name: str = Field(..., description="Server name")
63 version: str = Field(default="1.0.0", description="Server version")
64 description: Optional[str] = Field(default=None, description="Server description")
65 transport: TransportType = Field(default=TransportType.STDIO, description="Transport type")
66 host: str = Field(default="localhost", description="Host for network transports")
67 port: int = Field(default=8000, description="Port for network transports")
68 log_level: str = Field(default="INFO", description="Logging level")
69 auto_reload: bool = Field(default=False, description="Auto-reload on code changes")
72class ToolSchema(BaseModel):
73 """
74 Schema definition for a tool.
75 """
76 name: str = Field(..., description="Tool name")
77 description: str = Field(..., description="Tool description")
78 parameters: Dict[str, Any] = Field(..., description="JSON schema for parameters")
79 returns: Dict[str, Any] = Field(..., description="JSON schema for return value")
82class ResourceSchema(BaseModel):
83 """
84 Schema definition for a resource.
85 """
86 uri_template: str = Field(..., description="URI template")
87 name: str = Field(..., description="Resource name")
88 description: str = Field(..., description="Resource description")
89 mime_type: str = Field(default="text/plain", description="MIME type")
92class ErrorResponse(BaseModel):
93 """
94 Standard error response format.
95 """
96 error: str = Field(..., description="Error message")
97 code: Optional[str] = Field(default=None, description="Error code")
98 details: Optional[Dict[str, Any]] = Field(default=None, description="Error details")