Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-mcp/src/lexigram/ai/mcp/__init__.py: 56%

18 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1"""lexigram-mcp — MCP Server for Lexigram Framework. 

2 

3Canonical import paths 

4----------------------- 

5MCPServer: from lexigram.ai.mcp import MCPServer 

6MCPClient: from lexigram.ai.mcp import MCPClient 

7MCPConfig: from lexigram.ai.mcp import MCPConfig 

8ToolHandler: from lexigram.ai.mcp import ToolHandler 

9ResourceHandler: from lexigram.ai.mcp import ResourceHandler 

10PromptHandler: from lexigram.ai.mcp import PromptHandler 

11StdioTransport: from lexigram.ai.mcp import StdioTransport 

12SSETransport: from lexigram.ai.mcp import SSETransport 

13MCPModule: from lexigram.ai.mcp import MCPModule 

14MCPProvider: from lexigram.ai.mcp import MCPProvider 

15 

16Quick Start 

17----------- 

18 

19 from lexigram.ai.mcp import MCPServer, MCPModule 

20 from lexigram import LexigramApplication 

21 

22 app = LexigramApplication( 

23 modules=[..., MCPModule()], 

24 ) 

25 

26 await app.run() 

27""" 

28 

29from __future__ import annotations 

30 

31import importlib.metadata 

32import pkgutil 

33from typing import TYPE_CHECKING, Any 

34 

35__path__ = pkgutil.extend_path(__path__, __name__) 

36 

37from lexigram.ai.mcp.constants import __version__ as __version__ 

38 

39if TYPE_CHECKING: 

40 from lexigram.ai.mcp import MCPModule # type: ignore[attr-defined] 

41 from lexigram.ai.mcp.adapters import ToolRegistryAdapter 

42 from lexigram.ai.mcp.client.core import ( 

43 MCPClient, 

44 MCPClientTransport, 

45 SSEClientTransport, 

46 StdioClientTransport, 

47 ) 

48 from lexigram.ai.mcp.client.module import ( 

49 MCPClientModule, 

50 MCPClientProvider, 

51 MCPClientRegistry, 

52 MCPConnection, 

53 ) 

54 from lexigram.ai.mcp.config import MCPConfig 

55 from lexigram.ai.mcp.controllers import ( 

56 ControllerPromptProvider, 

57 ControllerResourceProvider, 

58 ControllerToolProvider, 

59 MCPController, 

60 ModulePromptProvider, 

61 ModuleResourceProvider, 

62 ModuleToolProvider, 

63 ServiceToolProvider, 

64 ) 

65 from lexigram.ai.mcp.decorators import ( 

66 prompt, 

67 resource, 

68 tool, 

69 ) 

70 from lexigram.ai.mcp.di.provider import MCPProvider 

71 from lexigram.ai.mcp.exceptions import ( 

72 MCPError, 

73 MCPInitializationError, 

74 MCPMethodNotFoundError, 

75 MCPPromptError, 

76 MCPProtocolError, 

77 MCPResourceError, 

78 MCPToolCallError, 

79 MCPTransportError, 

80 ) 

81 from lexigram.ai.mcp.hooks import ( 

82 MCPServerStartedHook, 

83 MCPServerStoppedHook, 

84 MCPToolInvokedHook, 

85 ) 

86 from lexigram.ai.mcp.protocols import ( 

87 MCPPromptHandlerProtocol, 

88 MCPPromptProviderProtocol, 

89 MCPResourceHandlerProtocol, 

90 MCPResourceProviderProtocol, 

91 MCPServerProtocol, 

92 MCPToolHandlerProtocol, 

93 MCPToolProviderProtocol, 

94 MCPTransportProtocol, 

95 ) 

96 from lexigram.ai.mcp.server import MCPServer 

97 from lexigram.ai.mcp.server.handlers import ( 

98 PromptHandler, 

99 ResourceHandler, 

100 ToolHandler, 

101 ) 

102 from lexigram.ai.mcp.transport import ( 

103 AbstractTransport, 

104 SSETransport, 

105 StdioTransport, 

106 ) 

107 from lexigram.ai.mcp.types import ( 

108 MCPInitializeResult, 

109 MCPJSONRPCRequest, 

110 MCPJSONRPCResponse, 

111 MCPPrompt, 

112 MCPPromptMessage, 

113 MCPResource, 

114 MCPResourceContent, 

115 MCPServerCapabilities, 

116 MCPServerInfo, 

117 MCPToolDefinition, 

118 MCPToolResult, 

119 ) 

120 

121_LAZY_IMPORTS: dict[str, str] = { 

122 "AbstractTransport": "lexigram.ai.mcp.transport", 

123 "ControllerPromptProvider": "lexigram.ai.mcp.controllers", 

124 "ControllerResourceProvider": "lexigram.ai.mcp.controllers", 

125 "ControllerToolProvider": "lexigram.ai.mcp.controllers", 

126 # Hooks 

127 "MCPServerStartedHook": "lexigram.ai.mcp.hooks", 

128 "MCPServerStoppedHook": "lexigram.ai.mcp.hooks", 

129 "MCPToolInvokedHook": "lexigram.ai.mcp.hooks", 

130 "MCPController": "lexigram.ai.mcp.controllers", 

131 "MCPInitializeResult": "lexigram.ai.mcp.types", 

132 "MCPJSONRPCRequest": "lexigram.ai.mcp.types", 

133 "MCPJSONRPCResponse": "lexigram.ai.mcp.types", 

134 "MCPPrompt": "lexigram.ai.mcp.types", 

135 "MCPPromptMessage": "lexigram.ai.mcp.types", 

136 "MCPResource": "lexigram.ai.mcp.types", 

137 "MCPResourceContent": "lexigram.ai.mcp.types", 

138 "MCPServerCapabilities": "lexigram.ai.mcp.types", 

139 "MCPServerInfo": "lexigram.ai.mcp.types", 

140 "MCPToolDefinition": "lexigram.ai.mcp.types", 

141 "MCPToolResult": "lexigram.ai.mcp.types", 

142 "ModulePromptProvider": "lexigram.ai.mcp.controllers", 

143 "ModuleResourceProvider": "lexigram.ai.mcp.controllers", 

144 "ModuleToolProvider": "lexigram.ai.mcp.controllers", 

145 "ServiceToolProvider": "lexigram.ai.mcp.controllers", 

146 "MCPClient": "lexigram.ai.mcp.client.core", 

147 "MCPClientModule": "lexigram.ai.mcp.client.module", 

148 "MCPClientProvider": "lexigram.ai.mcp.client.module", 

149 "MCPClientRegistry": "lexigram.ai.mcp.client.module", 

150 "MCPConnection": "lexigram.ai.mcp.client.module", 

151 "MCPClientTransport": "lexigram.ai.mcp.client.core", 

152 "MCPConfig": "lexigram.ai.mcp.config", 

153 "MCPError": "lexigram.ai.mcp.exceptions", 

154 "MCPInitializationError": "lexigram.ai.mcp.exceptions", 

155 "MCPMethodNotFoundError": "lexigram.ai.mcp.exceptions", 

156 "MCPModule": "lexigram.ai.mcp.module", 

157 "MCPPromptError": "lexigram.ai.mcp.exceptions", 

158 "MCPProtocolError": "lexigram.ai.mcp.exceptions", 

159 "MCPProvider": "lexigram.ai.mcp.di.provider", 

160 "MCPResourceError": "lexigram.ai.mcp.exceptions", 

161 "MCPServer": "lexigram.ai.mcp.server", 

162 "MCPToolCallError": "lexigram.ai.mcp.exceptions", 

163 "MCPTransportError": "lexigram.ai.mcp.exceptions", 

164 # Protocols 

165 "MCPToolProviderProtocol": "lexigram.ai.mcp.protocols", 

166 "MCPResourceProviderProtocol": "lexigram.ai.mcp.protocols", 

167 "MCPPromptProviderProtocol": "lexigram.ai.mcp.protocols", 

168 "MCPTransportProtocol": "lexigram.ai.mcp.protocols", 

169 "MCPServerProtocol": "lexigram.ai.mcp.protocols", 

170 "MCPToolHandlerProtocol": "lexigram.ai.mcp.protocols", 

171 "MCPResourceHandlerProtocol": "lexigram.ai.mcp.protocols", 

172 "MCPPromptHandlerProtocol": "lexigram.ai.mcp.protocols", 

173 "PromptHandler": "lexigram.ai.mcp.server.handlers", 

174 "ResourceHandler": "lexigram.ai.mcp.server.handlers", 

175 "SSETransport": "lexigram.ai.mcp.transport", 

176 "SSEClientTransport": "lexigram.ai.mcp.client.core", 

177 "StdioClientTransport": "lexigram.ai.mcp.client.core", 

178 "StdioTransport": "lexigram.ai.mcp.transport", 

179 "ToolHandler": "lexigram.ai.mcp.server.handlers", 

180 "ToolRegistryAdapter": "lexigram.ai.mcp.adapters", 

181 "prompt": "lexigram.ai.mcp.decorators", 

182 "resource": "lexigram.ai.mcp.decorators", 

183 "tool": "lexigram.ai.mcp.decorators", 

184} 

185 

186 

187def __getattr__(name: str) -> Any: 

188 if name in _LAZY_IMPORTS: 

189 import importlib as _importlib 

190 

191 module = _importlib.import_module(_LAZY_IMPORTS[name]) 

192 value = getattr(module, name) 

193 globals()[name] = value 

194 return value 

195 raise AttributeError(f"module {__name__!r} has no attribute {name!r}") 

196 

197 

198def __dir__() -> list[str]: 

199 return sorted(set(__all__) | set(_LAZY_IMPORTS.keys())) 

200 

201 

202__all__ = [ 

203 "AbstractTransport", 

204 "ControllerPromptProvider", 

205 "ControllerResourceProvider", 

206 "ControllerToolProvider", 

207 "MCPClient", 

208 "MCPClientModule", 

209 "MCPClientProvider", 

210 "MCPClientRegistry", 

211 "MCPClientTransport", 

212 "MCPConfig", 

213 "MCPConnection", 

214 "MCPController", 

215 "MCPError", 

216 "MCPInitializationError", 

217 "MCPInitializeResult", 

218 "MCPJSONRPCRequest", 

219 "MCPJSONRPCResponse", 

220 "MCPMethodNotFoundError", 

221 "MCPModule", 

222 "MCPPrompt", 

223 "MCPPromptError", 

224 "MCPPromptHandlerProtocol", 

225 "MCPPromptMessage", 

226 "MCPPromptProviderProtocol", 

227 "MCPProtocolError", 

228 "MCPProvider", 

229 "MCPResource", 

230 "MCPResourceContent", 

231 "MCPResourceError", 

232 "MCPResourceHandlerProtocol", 

233 "MCPResourceProviderProtocol", 

234 "MCPServer", 

235 "MCPServerCapabilities", 

236 "MCPServerInfo", 

237 "MCPServerProtocol", 

238 "MCPServerStartedHook", 

239 "MCPServerStoppedHook", 

240 "MCPToolCallError", 

241 "MCPToolDefinition", 

242 "MCPToolHandlerProtocol", 

243 "MCPToolInvokedHook", 

244 "MCPToolProviderProtocol", 

245 "MCPTransportProtocol", 

246 "ModulePromptProvider", 

247 "ModuleResourceProvider", 

248 "ModuleToolProvider", 

249 "PromptHandler", 

250 "ResourceHandler", 

251 "SSEClientTransport", 

252 "SSETransport", 

253 "ServiceToolProvider", 

254 "StdioClientTransport", 

255 "StdioTransport", 

256 "ToolHandler", 

257 "ToolRegistryAdapter", 

258 "prompt", 

259 "resource", 

260 "tool", 

261]