claude-mpm 5.0.9__py3-none-any.whl → 5.4.41__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 (263) 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/{PM_INSTRUCTIONS_TEACH.md → CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md} +721 -41
  5. claude_mpm/agents/MEMORY.md +1 -1
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +468 -468
  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 +70 -2
  11. claude_mpm/agents/templates/circuit-breakers.md +431 -45
  12. claude_mpm/cli/__init__.py +0 -1
  13. claude_mpm/cli/__main__.py +4 -0
  14. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  15. claude_mpm/cli/commands/agent_state_manager.py +18 -27
  16. claude_mpm/cli/commands/agents.py +175 -37
  17. claude_mpm/cli/commands/auto_configure.py +723 -236
  18. claude_mpm/cli/commands/config.py +88 -2
  19. claude_mpm/cli/commands/configure.py +1262 -157
  20. claude_mpm/cli/commands/configure_agent_display.py +25 -6
  21. claude_mpm/cli/commands/mpm_init/core.py +225 -46
  22. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  23. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  24. claude_mpm/cli/commands/postmortem.py +1 -1
  25. claude_mpm/cli/commands/profile.py +277 -0
  26. claude_mpm/cli/commands/skills.py +214 -189
  27. claude_mpm/cli/commands/summarize.py +413 -0
  28. claude_mpm/cli/executor.py +21 -3
  29. claude_mpm/cli/interactive/agent_wizard.py +85 -10
  30. claude_mpm/cli/parsers/agents_parser.py +54 -9
  31. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  32. claude_mpm/cli/parsers/base_parser.py +12 -0
  33. claude_mpm/cli/parsers/config_parser.py +153 -83
  34. claude_mpm/cli/parsers/profile_parser.py +148 -0
  35. claude_mpm/cli/parsers/skills_parser.py +3 -2
  36. claude_mpm/cli/startup.py +879 -149
  37. claude_mpm/commands/mpm-config.md +28 -0
  38. claude_mpm/commands/mpm-doctor.md +9 -22
  39. claude_mpm/commands/mpm-help.md +5 -287
  40. claude_mpm/commands/mpm-init.md +81 -507
  41. claude_mpm/commands/mpm-monitor.md +15 -402
  42. claude_mpm/commands/mpm-organize.md +120 -0
  43. claude_mpm/commands/mpm-postmortem.md +6 -108
  44. claude_mpm/commands/mpm-session-resume.md +12 -363
  45. claude_mpm/commands/mpm-status.md +5 -69
  46. claude_mpm/commands/mpm-ticket-view.md +52 -495
  47. claude_mpm/commands/mpm-version.md +5 -107
  48. claude_mpm/config/agent_sources.py +27 -0
  49. claude_mpm/core/config.py +2 -4
  50. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  51. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  52. claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
  53. claude_mpm/core/framework_loader.py +4 -2
  54. claude_mpm/core/logger.py +13 -0
  55. claude_mpm/core/optimized_startup.py +59 -0
  56. claude_mpm/core/output_style_manager.py +173 -43
  57. claude_mpm/core/shared/config_loader.py +1 -1
  58. claude_mpm/core/socketio_pool.py +3 -3
  59. claude_mpm/core/unified_agent_registry.py +134 -16
  60. claude_mpm/core/unified_config.py +22 -0
  61. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  62. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  63. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  64. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  65. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  66. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  67. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  68. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  69. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  70. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  71. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  72. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  73. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  74. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  75. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  76. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  77. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  78. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  79. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  80. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  85. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  86. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  87. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  88. claude_mpm/hooks/claude_hooks/event_handlers.py +211 -78
  89. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  90. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  91. claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
  92. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  93. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  94. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  95. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  96. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  97. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  98. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  99. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  100. claude_mpm/hooks/memory_integration_hook.py +46 -1
  101. claude_mpm/init.py +63 -19
  102. claude_mpm/models/agent_definition.py +7 -0
  103. claude_mpm/models/git_repository.py +3 -3
  104. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  105. claude_mpm/scripts/launch_monitor.py +93 -13
  106. claude_mpm/scripts/start_activity_logging.py +0 -0
  107. claude_mpm/services/agents/agent_builder.py +3 -3
  108. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  109. claude_mpm/services/agents/agent_review_service.py +280 -0
  110. claude_mpm/services/agents/cache_git_manager.py +6 -6
  111. claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
  112. claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -5
  113. claude_mpm/services/agents/deployment/agent_template_builder.py +5 -3
  114. claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
  115. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +320 -29
  116. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +546 -68
  117. claude_mpm/services/agents/git_source_manager.py +36 -2
  118. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  119. claude_mpm/services/agents/recommender.py +5 -3
  120. claude_mpm/services/agents/single_tier_deployment_service.py +2 -2
  121. claude_mpm/services/agents/sources/git_source_sync_service.py +13 -6
  122. claude_mpm/services/agents/startup_sync.py +22 -2
  123. claude_mpm/services/agents/toolchain_detector.py +10 -6
  124. claude_mpm/services/analysis/__init__.py +11 -1
  125. claude_mpm/services/analysis/clone_detector.py +1030 -0
  126. claude_mpm/services/command_deployment_service.py +81 -10
  127. claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
  128. claude_mpm/services/diagnostics/checks/agent_sources_check.py +1 -1
  129. claude_mpm/services/event_bus/config.py +3 -1
  130. claude_mpm/services/git/git_operations_service.py +101 -16
  131. claude_mpm/services/monitor/daemon.py +9 -2
  132. claude_mpm/services/monitor/daemon_manager.py +39 -3
  133. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  134. claude_mpm/services/monitor/server.py +698 -22
  135. claude_mpm/services/pm_skills_deployer.py +676 -0
  136. claude_mpm/services/profile_manager.py +331 -0
  137. claude_mpm/services/project/project_organizer.py +4 -0
  138. claude_mpm/services/self_upgrade_service.py +120 -12
  139. claude_mpm/services/skills/__init__.py +3 -0
  140. claude_mpm/services/skills/git_skill_source_manager.py +130 -2
  141. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  142. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  143. claude_mpm/services/skills_deployer.py +126 -9
  144. claude_mpm/services/socketio/dashboard_server.py +1 -0
  145. claude_mpm/services/socketio/event_normalizer.py +51 -6
  146. claude_mpm/services/socketio/server/core.py +386 -108
  147. claude_mpm/services/version_control/git_operations.py +103 -0
  148. claude_mpm/skills/skill_manager.py +92 -3
  149. claude_mpm/utils/agent_dependency_loader.py +14 -2
  150. claude_mpm/utils/agent_filters.py +17 -44
  151. claude_mpm/utils/gitignore.py +3 -0
  152. claude_mpm/utils/migration.py +4 -4
  153. claude_mpm/utils/robust_installer.py +47 -3
  154. {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +57 -87
  155. {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +160 -211
  156. claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
  157. claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
  158. claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
  159. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  160. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  161. claude_mpm/agents/BASE_OPS.md +0 -219
  162. claude_mpm/agents/BASE_PM.md +0 -480
  163. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  164. claude_mpm/agents/BASE_QA.md +0 -167
  165. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  166. claude_mpm/agents/base_agent_loader.py +0 -601
  167. claude_mpm/cli/commands/agents_detect.py +0 -380
  168. claude_mpm/cli/commands/agents_recommend.py +0 -309
  169. claude_mpm/cli/ticket_cli.py +0 -35
  170. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  171. claude_mpm/commands/mpm-agents-detect.md +0 -177
  172. claude_mpm/commands/mpm-agents-list.md +0 -131
  173. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  174. claude_mpm/commands/mpm-config-view.md +0 -150
  175. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  176. claude_mpm/dashboard/analysis_runner.py +0 -455
  177. claude_mpm/dashboard/index.html +0 -13
  178. claude_mpm/dashboard/open_dashboard.py +0 -66
  179. claude_mpm/dashboard/static/css/activity.css +0 -1958
  180. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  181. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  182. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  183. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  184. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  185. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  186. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  187. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  188. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  189. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  190. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  191. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  192. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  193. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  194. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  195. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  196. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  197. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  198. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  199. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  200. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  201. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  202. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  203. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  204. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  205. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  206. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  207. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  208. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  209. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  210. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  211. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  212. claude_mpm/dashboard/templates/code_simple.html +0 -153
  213. claude_mpm/dashboard/templates/index.html +0 -606
  214. claude_mpm/dashboard/test_dashboard.html +0 -372
  215. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  216. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  217. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  218. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  219. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  220. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  221. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  222. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  223. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  224. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  225. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  226. claude_mpm/scripts/mcp_server.py +0 -75
  227. claude_mpm/scripts/mcp_wrapper.py +0 -39
  228. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  229. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  230. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  231. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  232. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  233. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  234. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  235. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  236. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  237. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  238. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  239. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  240. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  241. claude_mpm/services/mcp_gateway/main.py +0 -589
  242. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  243. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  244. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  245. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  246. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  247. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  248. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  249. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  250. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  251. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  252. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  253. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  254. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  255. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  256. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  257. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  258. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  259. claude_mpm-5.0.9.dist-info/entry_points.txt +0 -10
  260. claude_mpm-5.0.9.dist-info/licenses/LICENSE +0 -21
  261. /claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +0 -0
  262. {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
  263. {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.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
- """