claude-mpm 5.1.9__py3-none-any.whl → 5.4.48__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (248) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +1 -1
  5. claude_mpm/agents/MEMORY.md +1 -1
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +843 -900
  7. claude_mpm/agents/WORKFLOW.md +5 -254
  8. claude_mpm/agents/agent_loader.py +13 -44
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/frontmatter_validator.py +2 -2
  11. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  12. claude_mpm/cli/__main__.py +4 -0
  13. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  14. claude_mpm/cli/commands/agent_state_manager.py +18 -27
  15. claude_mpm/cli/commands/agents.py +9 -40
  16. claude_mpm/cli/commands/auto_configure.py +210 -25
  17. claude_mpm/cli/commands/config.py +88 -2
  18. claude_mpm/cli/commands/configure.py +1098 -159
  19. claude_mpm/cli/commands/configure_agent_display.py +25 -6
  20. claude_mpm/cli/commands/mpm_init/core.py +225 -46
  21. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  22. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  23. claude_mpm/cli/commands/postmortem.py +1 -1
  24. claude_mpm/cli/commands/profile.py +277 -0
  25. claude_mpm/cli/commands/skills.py +218 -197
  26. claude_mpm/cli/commands/summarize.py +413 -0
  27. claude_mpm/cli/executor.py +21 -3
  28. claude_mpm/cli/interactive/agent_wizard.py +2 -2
  29. claude_mpm/cli/parsers/agents_parser.py +0 -9
  30. claude_mpm/cli/parsers/auto_configure_parser.py +0 -138
  31. claude_mpm/cli/parsers/base_parser.py +12 -0
  32. claude_mpm/cli/parsers/config_parser.py +153 -83
  33. claude_mpm/cli/parsers/profile_parser.py +148 -0
  34. claude_mpm/cli/parsers/skills_parser.py +0 -5
  35. claude_mpm/cli/startup.py +876 -149
  36. claude_mpm/commands/mpm-config.md +28 -0
  37. claude_mpm/commands/mpm-doctor.md +9 -22
  38. claude_mpm/commands/mpm-help.md +5 -287
  39. claude_mpm/commands/mpm-init.md +81 -507
  40. claude_mpm/commands/mpm-monitor.md +15 -402
  41. claude_mpm/commands/mpm-organize.md +120 -0
  42. claude_mpm/commands/mpm-postmortem.md +6 -108
  43. claude_mpm/commands/mpm-session-resume.md +12 -363
  44. claude_mpm/commands/mpm-status.md +5 -69
  45. claude_mpm/commands/mpm-ticket-view.md +52 -495
  46. claude_mpm/commands/mpm-version.md +5 -107
  47. claude_mpm/config/agent_sources.py +27 -0
  48. claude_mpm/core/config.py +2 -4
  49. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  50. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  51. claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
  52. claude_mpm/core/framework_loader.py +4 -2
  53. claude_mpm/core/logger.py +13 -0
  54. claude_mpm/core/optimized_startup.py +59 -0
  55. claude_mpm/core/shared/config_loader.py +1 -1
  56. claude_mpm/core/socketio_pool.py +3 -3
  57. claude_mpm/core/unified_agent_registry.py +5 -15
  58. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  59. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  60. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  61. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  62. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  63. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  64. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  65. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  66. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  67. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  68. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  69. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  70. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  71. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  72. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  73. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  74. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  75. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  76. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  77. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  78. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  79. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  80. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  85. claude_mpm/hooks/claude_hooks/event_handlers.py +211 -78
  86. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  87. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  88. claude_mpm/hooks/claude_hooks/memory_integration.py +26 -9
  89. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  90. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  91. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  92. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  93. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  94. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  95. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  96. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  97. claude_mpm/hooks/kuzu_memory_hook.py +5 -5
  98. claude_mpm/hooks/memory_integration_hook.py +46 -1
  99. claude_mpm/init.py +63 -19
  100. claude_mpm/models/git_repository.py +3 -3
  101. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  102. claude_mpm/scripts/launch_monitor.py +93 -13
  103. claude_mpm/services/agents/agent_builder.py +3 -3
  104. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  105. claude_mpm/services/agents/agent_review_service.py +280 -0
  106. claude_mpm/services/agents/cache_git_manager.py +6 -6
  107. claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
  108. claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -5
  109. claude_mpm/services/agents/deployment/agent_format_converter.py +23 -13
  110. claude_mpm/services/agents/deployment/agent_template_builder.py +32 -20
  111. claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
  112. claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
  113. claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
  114. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +247 -35
  115. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +392 -87
  116. claude_mpm/services/agents/git_source_manager.py +53 -4
  117. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  118. claude_mpm/services/agents/recommender.py +5 -3
  119. claude_mpm/services/agents/single_tier_deployment_service.py +2 -2
  120. claude_mpm/services/agents/sources/git_source_sync_service.py +120 -7
  121. claude_mpm/services/agents/startup_sync.py +22 -2
  122. claude_mpm/services/agents/toolchain_detector.py +10 -6
  123. claude_mpm/services/analysis/__init__.py +11 -1
  124. claude_mpm/services/analysis/clone_detector.py +1030 -0
  125. claude_mpm/services/command_deployment_service.py +81 -10
  126. claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
  127. claude_mpm/services/diagnostics/checks/agent_sources_check.py +1 -1
  128. claude_mpm/services/event_bus/config.py +3 -1
  129. claude_mpm/services/git/git_operations_service.py +101 -16
  130. claude_mpm/services/monitor/daemon.py +9 -2
  131. claude_mpm/services/monitor/daemon_manager.py +39 -3
  132. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  133. claude_mpm/services/monitor/server.py +698 -22
  134. claude_mpm/services/pm_skills_deployer.py +711 -0
  135. claude_mpm/services/profile_manager.py +331 -0
  136. claude_mpm/services/self_upgrade_service.py +120 -12
  137. claude_mpm/services/skills/__init__.py +3 -0
  138. claude_mpm/services/skills/git_skill_source_manager.py +130 -2
  139. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  140. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  141. claude_mpm/services/skills_deployer.py +127 -9
  142. claude_mpm/services/socketio/dashboard_server.py +1 -0
  143. claude_mpm/services/socketio/event_normalizer.py +51 -6
  144. claude_mpm/services/socketio/server/core.py +386 -108
  145. claude_mpm/services/version_control/git_operations.py +103 -0
  146. claude_mpm/skills/skill_manager.py +92 -3
  147. claude_mpm/utils/agent_dependency_loader.py +14 -2
  148. claude_mpm/utils/agent_filters.py +17 -44
  149. claude_mpm/utils/migration.py +4 -4
  150. claude_mpm/utils/robust_installer.py +47 -3
  151. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/METADATA +53 -87
  152. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/RECORD +157 -197
  153. claude_mpm-5.4.48.dist-info/entry_points.txt +5 -0
  154. claude_mpm-5.4.48.dist-info/licenses/LICENSE +94 -0
  155. claude_mpm-5.4.48.dist-info/licenses/LICENSE-FAQ.md +153 -0
  156. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  157. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  158. claude_mpm/agents/BASE_OPS.md +0 -219
  159. claude_mpm/agents/BASE_PM.md +0 -480
  160. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  161. claude_mpm/agents/BASE_QA.md +0 -167
  162. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  163. claude_mpm/agents/base_agent_loader.py +0 -601
  164. claude_mpm/cli/commands/agents_detect.py +0 -380
  165. claude_mpm/cli/commands/agents_recommend.py +0 -309
  166. claude_mpm/cli/ticket_cli.py +0 -35
  167. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  168. claude_mpm/commands/mpm-agents-detect.md +0 -177
  169. claude_mpm/commands/mpm-agents-list.md +0 -131
  170. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  171. claude_mpm/commands/mpm-config-view.md +0 -150
  172. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  173. claude_mpm/dashboard/analysis_runner.py +0 -455
  174. claude_mpm/dashboard/index.html +0 -13
  175. claude_mpm/dashboard/open_dashboard.py +0 -66
  176. claude_mpm/dashboard/static/css/activity.css +0 -1958
  177. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  178. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  179. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  180. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  181. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  182. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  183. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  184. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  185. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  186. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  187. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  188. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  189. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  190. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  191. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  192. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  193. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  194. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  195. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  196. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  197. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  198. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  199. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  200. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  201. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  202. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  203. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  204. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  205. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  206. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  207. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  208. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  209. claude_mpm/dashboard/templates/code_simple.html +0 -153
  210. claude_mpm/dashboard/templates/index.html +0 -606
  211. claude_mpm/dashboard/test_dashboard.html +0 -372
  212. claude_mpm/scripts/mcp_server.py +0 -75
  213. claude_mpm/scripts/mcp_wrapper.py +0 -39
  214. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  215. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  216. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  217. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  218. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  219. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  220. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  221. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  222. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  223. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  224. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  225. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  226. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  227. claude_mpm/services/mcp_gateway/main.py +0 -589
  228. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  229. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  230. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  231. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  232. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  233. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  235. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  236. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  237. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  238. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  239. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  240. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  241. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  242. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  243. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  244. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  245. claude_mpm-5.1.9.dist-info/entry_points.txt +0 -10
  246. claude_mpm-5.1.9.dist-info/licenses/LICENSE +0 -21
  247. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/WHEEL +0 -0
  248. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/top_level.txt +0 -0
@@ -1,443 +0,0 @@
1
- """
2
- MCP Gateway Interface Definitions
3
- ==================================
4
-
5
- This module defines the core interfaces for the MCP Gateway service,
6
- establishing contracts for dependency injection and service orchestration.
7
-
8
- Part of ISS-0034: Infrastructure Setup - MCP Gateway Project Foundation
9
- """
10
-
11
- from abc import ABC, abstractmethod
12
- from dataclasses import dataclass
13
- from pathlib import Path
14
- from typing import Any, Callable, Dict, List, Optional
15
-
16
-
17
- # Tool-related data structures
18
- @dataclass
19
- class MCPToolDefinition:
20
- """Definition of an MCP tool."""
21
-
22
- name: str
23
- description: str
24
- input_schema: Dict[str, Any]
25
- output_schema: Optional[Dict[str, Any]] = None
26
- version: str = "1.0.0"
27
- metadata: Optional[Dict[str, Any]] = None
28
-
29
-
30
- @dataclass
31
- class MCPToolInvocation:
32
- """Represents a tool invocation request."""
33
-
34
- tool_name: str
35
- parameters: Dict[str, Any]
36
- context: Optional[Dict[str, Any]] = None
37
- timeout: Optional[float] = None
38
- request_id: Optional[str] = None
39
-
40
-
41
- @dataclass
42
- class MCPToolResult:
43
- """Result from a tool invocation."""
44
-
45
- success: bool
46
- data: Optional[Any] = None
47
- error: Optional[str] = None
48
- metadata: Optional[Dict[str, Any]] = None
49
- execution_time: Optional[float] = None
50
-
51
-
52
- # Core MCP interfaces
53
- class IMCPConfiguration(ABC):
54
- """
55
- Interface for MCP configuration management.
56
-
57
- Handles loading, validation, and access to MCP Gateway configuration.
58
- """
59
-
60
- @abstractmethod
61
- def load_config(self, config_path: Path) -> bool:
62
- """
63
- Load configuration from a file.
64
-
65
- Args:
66
- config_path: Path to configuration file
67
-
68
- Returns:
69
- True if configuration loaded successfully
70
- """
71
-
72
- @abstractmethod
73
- def get(self, key: str, default: Any = None) -> Any:
74
- """
75
- Get configuration value by key.
76
-
77
- Args:
78
- key: Configuration key (supports dot notation)
79
- default: Default value if key not found
80
-
81
- Returns:
82
- Configuration value or default
83
- """
84
-
85
- @abstractmethod
86
- def set(self, key: str, value: Any) -> None:
87
- """
88
- Set configuration value.
89
-
90
- Args:
91
- key: Configuration key (supports dot notation)
92
- value: Configuration value
93
- """
94
-
95
- @abstractmethod
96
- def validate(self) -> bool:
97
- """
98
- Validate the current configuration.
99
-
100
- Returns:
101
- True if configuration is valid
102
- """
103
-
104
- @abstractmethod
105
- def get_server_config(self) -> Dict[str, Any]:
106
- """
107
- Get MCP server configuration.
108
-
109
- Returns:
110
- Server configuration dictionary
111
- """
112
-
113
- @abstractmethod
114
- def get_tools_config(self) -> Dict[str, Any]:
115
- """
116
- Get tools configuration.
117
-
118
- Returns:
119
- Tools configuration dictionary
120
- """
121
-
122
-
123
- class IMCPToolAdapter(ABC):
124
- """
125
- Interface for MCP tool adapters.
126
-
127
- Tool adapters wrap external tools to make them MCP-compatible.
128
- """
129
-
130
- @abstractmethod
131
- def get_definition(self) -> MCPToolDefinition:
132
- """
133
- Get the tool definition.
134
-
135
- Returns:
136
- Tool definition with schema and metadata
137
- """
138
-
139
- @abstractmethod
140
- async def invoke(self, invocation: MCPToolInvocation) -> MCPToolResult:
141
- """
142
- Invoke the tool with given parameters.
143
-
144
- Args:
145
- invocation: Tool invocation request
146
-
147
- Returns:
148
- Tool execution result
149
- """
150
-
151
- @abstractmethod
152
- def validate_parameters(self, parameters: Dict[str, Any]) -> bool:
153
- """
154
- Validate tool parameters against schema.
155
-
156
- Args:
157
- parameters: Parameters to validate
158
-
159
- Returns:
160
- True if parameters are valid
161
- """
162
-
163
- @abstractmethod
164
- async def initialize(self) -> bool:
165
- """
166
- Initialize the tool adapter.
167
-
168
- Returns:
169
- True if initialization successful
170
- """
171
-
172
- @abstractmethod
173
- async def shutdown(self) -> None:
174
- """
175
- Shutdown the tool adapter and clean up resources.
176
- """
177
-
178
-
179
- class IMCPToolRegistry(ABC):
180
- """
181
- Interface for MCP tool registry.
182
-
183
- Manages registration, discovery, and invocation of MCP tools.
184
- """
185
-
186
- @abstractmethod
187
- def register_tool(self, adapter: IMCPToolAdapter) -> bool:
188
- """
189
- Register a tool adapter.
190
-
191
- Args:
192
- adapter: Tool adapter to register
193
-
194
- Returns:
195
- True if registration successful
196
- """
197
-
198
- @abstractmethod
199
- def unregister_tool(self, tool_name: str) -> bool:
200
- """
201
- Unregister a tool by name.
202
-
203
- Args:
204
- tool_name: Name of tool to unregister
205
-
206
- Returns:
207
- True if unregistration successful
208
- """
209
-
210
- @abstractmethod
211
- def get_tool(self, tool_name: str) -> Optional[IMCPToolAdapter]:
212
- """
213
- Get a tool adapter by name.
214
-
215
- Args:
216
- tool_name: Name of the tool
217
-
218
- Returns:
219
- Tool adapter if found, None otherwise
220
- """
221
-
222
- @abstractmethod
223
- def list_tools(self) -> List[MCPToolDefinition]:
224
- """
225
- List all registered tools.
226
-
227
- Returns:
228
- List of tool definitions
229
- """
230
-
231
- @abstractmethod
232
- async def invoke_tool(self, invocation: MCPToolInvocation) -> MCPToolResult:
233
- """
234
- Invoke a tool through the registry.
235
-
236
- Args:
237
- invocation: Tool invocation request
238
-
239
- Returns:
240
- Tool execution result
241
- """
242
-
243
- @abstractmethod
244
- def search_tools(self, query: str) -> List[MCPToolDefinition]:
245
- """
246
- Search for tools by query.
247
-
248
- Args:
249
- query: Search query
250
-
251
- Returns:
252
- List of matching tool definitions
253
- """
254
-
255
-
256
- class IMCPCommunication(ABC):
257
- """
258
- Interface for MCP communication handling.
259
-
260
- Manages stdio-based communication with MCP clients.
261
- """
262
-
263
- @abstractmethod
264
- async def send_message(self, message: Dict[str, Any]) -> None:
265
- """
266
- Send a message to the MCP client.
267
-
268
- Args:
269
- message: Message to send
270
- """
271
-
272
- @abstractmethod
273
- async def receive_message(self) -> Optional[Dict[str, Any]]:
274
- """
275
- Receive a message from the MCP client.
276
-
277
- Returns:
278
- Received message or None if no message available
279
- """
280
-
281
- @abstractmethod
282
- async def send_response(self, request_id: str, result: Any) -> None:
283
- """
284
- Send a response to a request.
285
-
286
- Args:
287
- request_id: ID of the request being responded to
288
- result: Result data
289
- """
290
-
291
- @abstractmethod
292
- async def send_error(self, request_id: str, error: str, code: int = -1) -> None:
293
- """
294
- Send an error response.
295
-
296
- Args:
297
- request_id: ID of the request that caused the error
298
- error: Error message
299
- code: Error code
300
- """
301
-
302
- @abstractmethod
303
- def is_connected(self) -> bool:
304
- """
305
- Check if communication channel is connected.
306
-
307
- Returns:
308
- True if connected
309
- """
310
-
311
-
312
- class IMCPLifecycle(ABC):
313
- """
314
- Interface for MCP service lifecycle management.
315
-
316
- Manages initialization, startup, shutdown, and health monitoring.
317
- """
318
-
319
- @abstractmethod
320
- async def initialize(self) -> bool:
321
- """
322
- Initialize the MCP service.
323
-
324
- Returns:
325
- True if initialization successful
326
- """
327
-
328
- @abstractmethod
329
- async def start(self) -> bool:
330
- """
331
- Start the MCP service.
332
-
333
- Returns:
334
- True if startup successful
335
- """
336
-
337
- @abstractmethod
338
- async def stop(self) -> None:
339
- """
340
- Stop the MCP service gracefully.
341
- """
342
-
343
- @abstractmethod
344
- async def restart(self) -> bool:
345
- """
346
- Restart the MCP service.
347
-
348
- Returns:
349
- True if restart successful
350
- """
351
-
352
- @abstractmethod
353
- def get_state(self) -> str:
354
- """
355
- Get current service state.
356
-
357
- Returns:
358
- Service state (e.g., "initialized", "running", "stopped")
359
- """
360
-
361
- @abstractmethod
362
- def is_healthy(self) -> bool:
363
- """
364
- Check if service is healthy.
365
-
366
- Returns:
367
- True if service is healthy
368
- """
369
-
370
- @abstractmethod
371
- def get_health_status(self) -> Dict[str, Any]:
372
- """
373
- Get detailed health status.
374
-
375
- Returns:
376
- Health status information
377
- """
378
-
379
-
380
- class IMCPGateway(IMCPLifecycle):
381
- """
382
- Main interface for MCP gateway implementation.
383
-
384
- Orchestrates tool registry, communication, and request handling.
385
- Acts as a protocol bridge between Claude Code and internal tools.
386
- """
387
-
388
- @abstractmethod
389
- def set_tool_registry(self, registry: IMCPToolRegistry) -> None:
390
- """
391
- Set the tool registry for the server.
392
-
393
- Args:
394
- registry: Tool registry to use
395
- """
396
-
397
- @abstractmethod
398
- def set_communication(self, communication: IMCPCommunication) -> None:
399
- """
400
- Set the communication handler.
401
-
402
- Args:
403
- communication: Communication handler to use
404
- """
405
-
406
- @abstractmethod
407
- async def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
408
- """
409
- Handle an MCP request.
410
-
411
- Args:
412
- request: MCP request message
413
-
414
- Returns:
415
- Response message
416
- """
417
-
418
- @abstractmethod
419
- async def run(self) -> None:
420
- """
421
- Run the MCP gateway main loop.
422
-
423
- This method should handle incoming requests and manage the gateway lifecycle.
424
- """
425
-
426
- @abstractmethod
427
- def register_handler(self, method: str, handler: Callable) -> None:
428
- """
429
- Register a custom request handler.
430
-
431
- Args:
432
- method: Method name to handle
433
- handler: Handler function
434
- """
435
-
436
- @abstractmethod
437
- def get_capabilities(self) -> Dict[str, Any]:
438
- """
439
- Get gateway capabilities.
440
-
441
- Returns:
442
- Dictionary of gateway capabilities
443
- """