claude-mpm 4.24.0__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 (623) 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/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  5. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  6. claude_mpm/agents/MEMORY.md +1 -1
  7. claude_mpm/agents/PM_INSTRUCTIONS.md +735 -925
  8. claude_mpm/agents/WORKFLOW.md +5 -254
  9. claude_mpm/agents/__init__.py +6 -0
  10. claude_mpm/agents/agent_loader.py +14 -48
  11. claude_mpm/agents/base_agent.json +7 -4
  12. claude_mpm/agents/frontmatter_validator.py +71 -3
  13. claude_mpm/agents/templates/circuit-breakers.md +1391 -0
  14. claude_mpm/agents/templates/context-management-examples.md +544 -0
  15. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
  16. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  17. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  18. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  19. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  20. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  21. claude_mpm/cli/__init__.py +37 -2
  22. claude_mpm/cli/__main__.py +4 -0
  23. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  24. claude_mpm/cli/commands/__init__.py +2 -0
  25. claude_mpm/cli/commands/agent_source.py +774 -0
  26. claude_mpm/cli/commands/agent_state_manager.py +180 -31
  27. claude_mpm/cli/commands/agents.py +1116 -55
  28. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  29. claude_mpm/cli/commands/agents_discover.py +338 -0
  30. claude_mpm/cli/commands/aggregate.py +1 -1
  31. claude_mpm/cli/commands/analyze.py +3 -3
  32. claude_mpm/cli/commands/auto_configure.py +725 -242
  33. claude_mpm/cli/commands/config.py +95 -6
  34. claude_mpm/cli/commands/configure.py +1875 -46
  35. claude_mpm/cli/commands/configure_agent_display.py +29 -10
  36. claude_mpm/cli/commands/configure_navigation.py +63 -46
  37. claude_mpm/cli/commands/debug.py +12 -12
  38. claude_mpm/cli/commands/doctor.py +10 -2
  39. claude_mpm/cli/commands/hook_errors.py +277 -0
  40. claude_mpm/cli/commands/local_deploy.py +1 -4
  41. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  42. claude_mpm/cli/commands/mpm_init/core.py +229 -2
  43. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  44. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  45. claude_mpm/cli/commands/mpm_init/prompts.py +286 -6
  46. claude_mpm/cli/commands/postmortem.py +401 -0
  47. claude_mpm/cli/commands/profile.py +277 -0
  48. claude_mpm/cli/commands/run.py +123 -165
  49. claude_mpm/cli/commands/skill_source.py +694 -0
  50. claude_mpm/cli/commands/skills.py +782 -20
  51. claude_mpm/cli/commands/summarize.py +413 -0
  52. claude_mpm/cli/executor.py +96 -3
  53. claude_mpm/cli/interactive/agent_wizard.py +1030 -45
  54. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  55. claude_mpm/cli/parsers/agents_parser.py +307 -10
  56. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  57. claude_mpm/cli/parsers/base_parser.py +65 -0
  58. claude_mpm/cli/parsers/config_parser.py +162 -39
  59. claude_mpm/cli/parsers/profile_parser.py +148 -0
  60. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  61. claude_mpm/cli/parsers/skills_parser.py +146 -0
  62. claude_mpm/cli/parsers/source_parser.py +138 -0
  63. claude_mpm/cli/startup.py +1280 -118
  64. claude_mpm/cli/startup_display.py +480 -0
  65. claude_mpm/cli/utils.py +1 -1
  66. claude_mpm/cli_module/commands.py +1 -1
  67. claude_mpm/commands/mpm-config.md +21 -134
  68. claude_mpm/commands/mpm-doctor.md +16 -20
  69. claude_mpm/commands/mpm-help.md +13 -283
  70. claude_mpm/commands/mpm-init.md +88 -489
  71. claude_mpm/commands/mpm-monitor.md +23 -401
  72. claude_mpm/commands/mpm-organize.md +72 -247
  73. claude_mpm/commands/mpm-postmortem.md +21 -0
  74. claude_mpm/commands/mpm-session-resume.md +30 -0
  75. claude_mpm/commands/mpm-status.md +13 -68
  76. claude_mpm/commands/mpm-ticket-view.md +109 -0
  77. claude_mpm/commands/mpm-version.md +13 -106
  78. claude_mpm/commands/mpm.md +10 -0
  79. claude_mpm/config/agent_presets.py +488 -0
  80. claude_mpm/config/agent_sources.py +352 -0
  81. claude_mpm/config/skill_presets.py +392 -0
  82. claude_mpm/config/skill_sources.py +590 -0
  83. claude_mpm/constants.py +13 -0
  84. claude_mpm/core/claude_runner.py +5 -34
  85. claude_mpm/core/config.py +15 -1
  86. claude_mpm/core/constants.py +1 -1
  87. claude_mpm/core/framework/__init__.py +3 -16
  88. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  89. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  90. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  91. claude_mpm/core/framework/loaders/instruction_loader.py +66 -5
  92. claude_mpm/core/framework_loader.py +4 -2
  93. claude_mpm/core/hook_error_memory.py +381 -0
  94. claude_mpm/core/hook_manager.py +41 -2
  95. claude_mpm/core/interactive_session.py +91 -10
  96. claude_mpm/core/logger.py +16 -1
  97. claude_mpm/core/oneshot_session.py +71 -8
  98. claude_mpm/core/optimized_startup.py +59 -0
  99. claude_mpm/core/output_style_manager.py +173 -43
  100. claude_mpm/core/protocols/__init__.py +23 -0
  101. claude_mpm/core/protocols/runner_protocol.py +103 -0
  102. claude_mpm/core/protocols/session_protocol.py +131 -0
  103. claude_mpm/core/shared/config_loader.py +1 -1
  104. claude_mpm/core/shared/singleton_manager.py +11 -4
  105. claude_mpm/core/socketio_pool.py +3 -3
  106. claude_mpm/core/system_context.py +38 -0
  107. claude_mpm/core/unified_agent_registry.py +134 -16
  108. claude_mpm/core/unified_config.py +22 -0
  109. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  110. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  111. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  112. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  113. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  114. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  115. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  116. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  117. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  118. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  119. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  120. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  121. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  122. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  123. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  124. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  125. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  126. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  127. claude_mpm/experimental/cli_enhancements.py +1 -5
  128. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  129. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  130. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  131. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  132. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  133. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  134. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  135. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  136. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  137. claude_mpm/hooks/claude_hooks/event_handlers.py +214 -79
  138. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  139. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  140. claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
  141. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  142. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  143. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  144. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  145. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  146. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  147. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  148. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  149. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  150. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  151. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  152. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  153. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  154. claude_mpm/hooks/memory_integration_hook.py +46 -1
  155. claude_mpm/init.py +63 -19
  156. claude_mpm/models/agent_definition.py +7 -0
  157. claude_mpm/models/git_repository.py +198 -0
  158. claude_mpm/scripts/claude-hook-handler.sh +60 -20
  159. claude_mpm/scripts/launch_monitor.py +93 -13
  160. claude_mpm/scripts/start_activity_logging.py +3 -1
  161. claude_mpm/services/agents/agent_builder.py +48 -12
  162. claude_mpm/services/agents/agent_preset_service.py +238 -0
  163. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  164. claude_mpm/services/agents/agent_review_service.py +280 -0
  165. claude_mpm/services/agents/agent_selection_service.py +484 -0
  166. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  167. claude_mpm/services/agents/cache_git_manager.py +621 -0
  168. claude_mpm/services/agents/deployment/agent_deployment.py +148 -2
  169. claude_mpm/services/agents/deployment/agent_discovery_service.py +104 -73
  170. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  171. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  172. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  174. claude_mpm/services/agents/deployment/agent_template_builder.py +238 -15
  175. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  176. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  177. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  178. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +422 -31
  179. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  180. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  181. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +841 -0
  182. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  183. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  184. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  185. claude_mpm/services/agents/git_source_manager.py +663 -0
  186. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  187. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  188. claude_mpm/services/agents/local_template_manager.py +50 -10
  189. claude_mpm/services/agents/recommender.py +5 -3
  190. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  191. claude_mpm/services/agents/sources/__init__.py +13 -0
  192. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  193. claude_mpm/services/agents/sources/git_source_sync_service.py +1094 -0
  194. claude_mpm/services/agents/startup_sync.py +259 -0
  195. claude_mpm/services/agents/toolchain_detector.py +478 -0
  196. claude_mpm/services/analysis/__init__.py +35 -0
  197. claude_mpm/services/analysis/clone_detector.py +1030 -0
  198. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  199. claude_mpm/services/analysis/postmortem_service.py +765 -0
  200. claude_mpm/services/cli/session_pause_manager.py +1 -1
  201. claude_mpm/services/command_deployment_service.py +271 -6
  202. claude_mpm/services/core/base.py +7 -2
  203. claude_mpm/services/core/interfaces/__init__.py +1 -3
  204. claude_mpm/services/core/interfaces/health.py +1 -4
  205. claude_mpm/services/core/models/__init__.py +2 -11
  206. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  207. claude_mpm/services/diagnostics/checks/agent_check.py +2 -4
  208. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  209. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  210. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  211. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  212. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  213. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  214. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  215. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  216. claude_mpm/services/event_bus/config.py +3 -1
  217. claude_mpm/services/event_bus/direct_relay.py +3 -3
  218. claude_mpm/services/events/consumers/logging.py +1 -2
  219. claude_mpm/services/git/__init__.py +21 -0
  220. claude_mpm/services/git/git_operations_service.py +579 -0
  221. claude_mpm/services/github/__init__.py +21 -0
  222. claude_mpm/services/github/github_cli_service.py +397 -0
  223. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  224. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  225. claude_mpm/services/instructions/__init__.py +9 -0
  226. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  227. claude_mpm/services/local_ops/__init__.py +3 -13
  228. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  229. claude_mpm/services/local_ops/health_manager.py +1 -4
  230. claude_mpm/services/local_ops/resource_monitor.py +1 -1
  231. claude_mpm/services/mcp_config_manager.py +75 -145
  232. claude_mpm/services/mcp_service_verifier.py +6 -3
  233. claude_mpm/services/model/model_router.py +1 -2
  234. claude_mpm/services/monitor/daemon.py +38 -11
  235. claude_mpm/services/monitor/daemon_manager.py +134 -21
  236. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  237. claude_mpm/services/monitor/server.py +700 -24
  238. claude_mpm/services/pm_skills_deployer.py +676 -0
  239. claude_mpm/services/port_manager.py +1 -1
  240. claude_mpm/services/pr/__init__.py +14 -0
  241. claude_mpm/services/pr/pr_template_service.py +329 -0
  242. claude_mpm/services/profile_manager.py +331 -0
  243. claude_mpm/services/project/documentation_manager.py +2 -1
  244. claude_mpm/services/project/project_organizer.py +4 -0
  245. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  246. claude_mpm/services/runner_configuration_service.py +16 -3
  247. claude_mpm/services/self_upgrade_service.py +120 -12
  248. claude_mpm/services/session_management_service.py +16 -4
  249. claude_mpm/services/skills/__init__.py +21 -0
  250. claude_mpm/services/skills/git_skill_source_manager.py +1297 -0
  251. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  252. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  253. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  254. claude_mpm/services/skills_config.py +547 -0
  255. claude_mpm/services/skills_deployer.py +1072 -0
  256. claude_mpm/services/socketio/dashboard_server.py +1 -0
  257. claude_mpm/services/socketio/event_normalizer.py +51 -6
  258. claude_mpm/services/socketio/handlers/connection.py +1 -1
  259. claude_mpm/services/socketio/handlers/git.py +1 -1
  260. claude_mpm/services/socketio/server/core.py +387 -112
  261. claude_mpm/services/socketio/server/main.py +1 -3
  262. claude_mpm/services/system_instructions_service.py +1 -3
  263. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  264. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  265. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  266. claude_mpm/services/unified/unified_deployment.py +1 -5
  267. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  268. claude_mpm/services/version_control/git_operations.py +103 -0
  269. claude_mpm/services/visualization/__init__.py +1 -5
  270. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  271. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  272. claude_mpm/skills/skill_manager.py +92 -3
  273. claude_mpm/skills/skills_registry.py +0 -1
  274. claude_mpm/templates/questions/__init__.py +38 -0
  275. claude_mpm/templates/questions/base.py +193 -0
  276. claude_mpm/templates/questions/pr_strategy.py +311 -0
  277. claude_mpm/templates/questions/project_init.py +385 -0
  278. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  279. claude_mpm/tools/__main__.py +8 -8
  280. claude_mpm/utils/agent_dependency_loader.py +91 -12
  281. claude_mpm/utils/agent_filters.py +261 -0
  282. claude_mpm/utils/dependency_cache.py +3 -1
  283. claude_mpm/utils/gitignore.py +244 -0
  284. claude_mpm/utils/migration.py +372 -0
  285. claude_mpm/utils/progress.py +387 -0
  286. claude_mpm/utils/robust_installer.py +49 -7
  287. claude_mpm/utils/structured_questions.py +619 -0
  288. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +445 -122
  289. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +298 -503
  290. claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
  291. claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
  292. claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
  293. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  294. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  295. claude_mpm/agents/BASE_OPS.md +0 -219
  296. claude_mpm/agents/BASE_PM.md +0 -468
  297. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  298. claude_mpm/agents/BASE_QA.md +0 -167
  299. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  300. claude_mpm/agents/base_agent_loader.py +0 -626
  301. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  302. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  303. claude_mpm/agents/templates/agent-manager.json +0 -273
  304. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  305. claude_mpm/agents/templates/api_qa.json +0 -183
  306. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  307. claude_mpm/agents/templates/clerk-ops.json +0 -235
  308. claude_mpm/agents/templates/code_analyzer.json +0 -101
  309. claude_mpm/agents/templates/content-agent.json +0 -358
  310. claude_mpm/agents/templates/dart_engineer.json +0 -307
  311. claude_mpm/agents/templates/data_engineer.json +0 -225
  312. claude_mpm/agents/templates/documentation.json +0 -238
  313. claude_mpm/agents/templates/engineer.json +0 -210
  314. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  315. claude_mpm/agents/templates/golang_engineer.json +0 -270
  316. claude_mpm/agents/templates/imagemagick.json +0 -264
  317. claude_mpm/agents/templates/java_engineer.json +0 -346
  318. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  319. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  320. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  321. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  322. claude_mpm/agents/templates/memory_manager.json +0 -158
  323. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  324. claude_mpm/agents/templates/ops.json +0 -185
  325. claude_mpm/agents/templates/php-engineer.json +0 -287
  326. claude_mpm/agents/templates/product_owner.json +0 -338
  327. claude_mpm/agents/templates/project_organizer.json +0 -144
  328. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  329. claude_mpm/agents/templates/python_engineer.json +0 -387
  330. claude_mpm/agents/templates/qa.json +0 -243
  331. claude_mpm/agents/templates/react_engineer.json +0 -239
  332. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  333. claude_mpm/agents/templates/research.json +0 -188
  334. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  335. claude_mpm/agents/templates/rust_engineer.json +0 -275
  336. claude_mpm/agents/templates/security.json +0 -202
  337. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  338. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  339. claude_mpm/agents/templates/ticketing.json +0 -178
  340. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  341. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  342. claude_mpm/agents/templates/version_control.json +0 -159
  343. claude_mpm/agents/templates/web_qa.json +0 -400
  344. claude_mpm/agents/templates/web_ui.json +0 -189
  345. claude_mpm/cli/commands/agents_detect.py +0 -380
  346. claude_mpm/cli/commands/agents_recommend.py +0 -309
  347. claude_mpm/cli/ticket_cli.py +0 -35
  348. claude_mpm/commands/mpm-agents-detect.md +0 -168
  349. claude_mpm/commands/mpm-agents-recommend.md +0 -214
  350. claude_mpm/commands/mpm-agents.md +0 -122
  351. claude_mpm/commands/mpm-auto-configure.md +0 -269
  352. claude_mpm/commands/mpm-resume.md +0 -372
  353. claude_mpm/commands/mpm-tickets.md +0 -151
  354. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  355. claude_mpm/dashboard/analysis_runner.py +0 -455
  356. claude_mpm/dashboard/index.html +0 -13
  357. claude_mpm/dashboard/open_dashboard.py +0 -66
  358. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  359. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  360. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  361. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  362. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  363. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  364. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  365. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  366. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  367. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  368. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  369. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  370. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  371. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  372. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  373. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  374. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  375. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  376. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  377. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  378. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  379. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  380. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  381. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  382. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  383. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  384. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  385. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  386. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  387. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  390. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  391. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  392. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  393. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  394. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  395. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  396. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  397. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  398. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  399. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  400. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  401. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  402. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  403. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  404. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  405. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  406. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  407. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  408. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  409. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  410. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  411. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  412. claude_mpm/dashboard/static/built/react/events.js +0 -30
  413. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  414. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  415. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  416. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  417. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  418. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  419. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  420. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  421. claude_mpm/dashboard/static/css/activity.css +0 -1958
  422. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  423. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  424. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  425. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  426. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  443. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  444. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  445. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  446. claude_mpm/dashboard/static/events.html +0 -607
  447. claude_mpm/dashboard/static/index.html +0 -635
  448. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  449. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  450. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  451. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  452. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  453. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  454. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  455. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  456. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  457. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  458. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  459. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  460. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  461. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  462. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  463. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  464. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  465. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  466. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  467. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  468. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  469. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  470. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  471. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  472. claude_mpm/dashboard/static/js/dashboard.js +0 -1896
  473. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  474. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  475. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  476. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  477. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  478. claude_mpm/dashboard/static/js/socket-client.js +0 -1457
  479. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  480. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  481. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  482. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  483. claude_mpm/dashboard/static/legacy/files.html +0 -747
  484. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  485. claude_mpm/dashboard/static/monitors.html +0 -431
  486. claude_mpm/dashboard/static/production/events.html +0 -659
  487. claude_mpm/dashboard/static/production/main.html +0 -698
  488. claude_mpm/dashboard/static/production/monitors.html +0 -483
  489. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  490. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  491. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  492. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  493. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  494. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  495. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  496. claude_mpm/dashboard/templates/code_simple.html +0 -153
  497. claude_mpm/dashboard/templates/index.html +0 -606
  498. claude_mpm/dashboard/test_dashboard.html +0 -372
  499. claude_mpm/scripts/mcp_server.py +0 -75
  500. claude_mpm/scripts/mcp_wrapper.py +0 -39
  501. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  502. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  503. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  504. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  505. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  506. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  507. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  508. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  509. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  510. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  511. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
  512. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  513. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  514. claude_mpm/services/mcp_gateway/main.py +0 -589
  515. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  516. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  517. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  518. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  519. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -419
  520. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  521. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -714
  522. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  523. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  524. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  525. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  526. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  527. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  528. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -551
  529. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  530. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  531. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  532. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  533. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  534. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  535. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  536. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  537. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  538. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  539. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  540. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  541. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  542. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  543. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  544. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  545. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  546. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  547. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  548. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  549. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  550. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  551. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  552. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  553. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  554. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  555. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  556. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  557. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  558. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  559. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  560. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  561. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  562. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  563. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  564. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  565. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  566. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  567. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  568. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  569. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  570. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  571. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  572. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  573. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  574. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  575. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  576. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  577. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  578. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  579. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  580. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  581. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  582. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  583. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  584. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  585. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  586. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  587. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  588. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  589. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  590. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  591. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  592. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  593. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  594. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  595. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  596. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  597. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  598. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  599. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  600. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  601. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  602. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  603. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  604. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  605. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  606. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  607. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  608. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  609. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  610. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  611. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  612. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  613. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  614. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  615. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  616. claude_mpm-4.24.0.dist-info/entry_points.txt +0 -10
  617. claude_mpm-4.24.0.dist-info/licenses/LICENSE +0 -21
  618. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  619. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  620. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  621. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  622. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
  623. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
@@ -1,1237 +0,0 @@
1
- # Complete MCP Server Development Workflow
2
-
3
- ## Overview
4
-
5
- This document provides the complete 4-phase workflow for developing high-quality MCP servers. Follow these steps in order, loading additional reference files as indicated.
6
-
7
- **Time Allocation:**
8
- - Phase 1 (Research & Planning): 40%
9
- - Phase 2 (Implementation): 30%
10
- - Phase 3 (Review & Refine): 15%
11
- - Phase 4 (Evaluations): 15%
12
-
13
- ---
14
-
15
- ## Phase 1: Deep Research and Planning (40% of effort)
16
-
17
- The most critical phase. Insufficient research leads to poor tool design that must be completely rewritten.
18
-
19
- ### Step 1.1: Understand Agent-Centric Design Principles
20
-
21
- **BEFORE writing any code**, understand how to design for AI agents.
22
-
23
- **Action:**
24
- - **Read [design_principles.md](./design_principles.md) completely**
25
- - Study the five core principles:
26
- 1. Build for workflows, not API endpoints
27
- 2. Optimize for limited context
28
- 3. Design actionable error messages
29
- 4. Follow natural task subdivisions
30
- 5. Use evaluation-driven development
31
-
32
- **Key Takeaways to Internalize:**
33
- - MCP servers serve AI agents, not humans
34
- - Agents have limited context - every token matters
35
- - Agents need workflow tools, not API wrappers
36
- - Error messages must teach correct usage
37
- - Tool names should reflect tasks, not API structure
38
-
39
- **Time:** 20-30 minutes of focused reading
40
-
41
- **Checkpoint:** Can you explain why wrapping API endpoints directly is insufficient?
42
-
43
- ### Step 1.2: Study MCP Protocol Documentation
44
-
45
- **Action:**
46
- - Use WebFetch to load: `https://modelcontextprotocol.io/llms-full.txt`
47
- - Read the complete MCP specification
48
- - Understand:
49
- - Tool registration and invocation
50
- - Input schema requirements (JSON Schema format)
51
- - Response format (content array with text/image/resource types)
52
- - Error handling (isError flag in responses)
53
- - Tool annotations (readOnlyHint, destructiveHint, etc.)
54
- - Transport options (stdio, SSE, HTTP)
55
-
56
- **Key Sections to Focus On:**
57
- - Tools overview and definition structure
58
- - Tool implementation patterns
59
- - Error handling standards
60
- - Security considerations
61
- - Best practices
62
-
63
- **Time:** 30-45 minutes
64
-
65
- **Checkpoint:** Do you understand how tools are registered and how responses are formatted?
66
-
67
- ### Step 1.3: Study Framework Documentation
68
-
69
- Choose your implementation language and load the corresponding SDK documentation.
70
-
71
- #### For Python (FastMCP):
72
-
73
- **Action:**
74
- - Use WebFetch to load: `https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md`
75
- - Also load: [python_mcp_server.md](./python_mcp_server.md)
76
-
77
- **Focus On:**
78
- - FastMCP initialization: `mcp = FastMCP("service_mcp")`
79
- - Tool decorator: `@mcp.tool(name, annotations)`
80
- - Pydantic model integration for input validation
81
- - Context injection for logging/progress
82
- - Resource registration (if needed)
83
- - Lifespan management
84
- - Transport configuration
85
-
86
- **Time:** 30-40 minutes
87
-
88
- #### For Node/TypeScript (MCP SDK):
89
-
90
- **Action:**
91
- - Use WebFetch to load: `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md`
92
- - Also load: [node_mcp_server.md](./node_mcp_server.md)
93
-
94
- **Focus On:**
95
- - McpServer initialization
96
- - `server.registerTool` pattern
97
- - Zod schema integration
98
- - StdioServerTransport setup
99
- - Type safety requirements
100
- - Build configuration
101
-
102
- **Time:** 30-40 minutes
103
-
104
- **Checkpoint:** Can you write a skeleton server with one simple tool?
105
-
106
- ### Step 1.4: Exhaustively Study API Documentation
107
-
108
- **This is the most important research step.** Incomplete API knowledge leads to missing critical tools.
109
-
110
- **Action:**
111
- - Read **ALL** available API documentation for the service you're integrating
112
- - Use WebSearch and WebFetch to gather comprehensive information
113
- - Parallelize this step if there are multiple documentation sources
114
-
115
- **What to Document:**
116
-
117
- #### Authentication & Authorization
118
- - Authentication methods (API keys, OAuth, tokens)
119
- - How to obtain credentials
120
- - Where credentials are passed (headers, query params)
121
- - Permission requirements for different operations
122
- - Rate limiting rules and headers
123
-
124
- #### Available Endpoints
125
- - List ALL endpoints and their purposes
126
- - HTTP methods (GET, POST, PUT, DELETE, PATCH)
127
- - URL patterns and path parameters
128
- - Query parameters and their constraints
129
- - Request body schemas
130
- - Response schemas and status codes
131
-
132
- #### Data Models
133
- - Key resources (users, projects, tasks, messages, etc.)
134
- - Field names, types, and constraints
135
- - Required vs optional fields
136
- - Relationships between resources
137
- - ID formats and patterns
138
-
139
- #### Pagination & Filtering
140
- - Pagination mechanisms (offset/limit, cursor-based, page numbers)
141
- - Default page sizes and maximum limits
142
- - Filter/search capabilities
143
- - Sorting options
144
-
145
- #### Error Responses
146
- - Error formats and status codes
147
- - Common error scenarios
148
- - Retry strategies
149
- - Rate limit error handling
150
-
151
- **Time:** 1-2 hours (varies by API complexity)
152
-
153
- **Checkpoint:** Can you list the 10 most important endpoints and explain what each does?
154
-
155
- ### Step 1.5: Create a Comprehensive Implementation Plan
156
-
157
- Now synthesize all research into a concrete plan.
158
-
159
- #### Plan Component 1: Tool Selection
160
-
161
- **Identify High-Value Tools:**
162
- - Which endpoints enable the most common workflows?
163
- - What would an agent most frequently need to accomplish?
164
- - Which operations naturally combine into workflow tools?
165
-
166
- **Prioritize by Impact:**
167
- 1. Search/find tools (agents need to discover resources)
168
- 2. Read/get tools (agents need to retrieve information)
169
- 3. Create/update tools (agents need to modify state)
170
- 4. Workflow tools (combinations of the above)
171
-
172
- **Example Tool List:**
173
- ```
174
- High Priority (Implement First):
175
- - search_users(query, team, status) - Find users by various criteria
176
- - get_project_status(project_name) - Overview of project metrics
177
- - list_recent_activity(project, limit) - What's been happening
178
-
179
- Medium Priority:
180
- - create_task(project, title, assignee, due_date)
181
- - update_task_status(task_id, status, note)
182
- - assign_task(task_id, user)
183
-
184
- Low Priority (Nice to Have):
185
- - export_project_data(project, format)
186
- - generate_report(project, date_range)
187
- ```
188
-
189
- #### Plan Component 2: Shared Utilities and Helpers
190
-
191
- **API Request Infrastructure:**
192
- ```python
193
- # Python example
194
- async def _make_api_request(endpoint, method="GET", **kwargs):
195
- """Centralized API calling with auth, timeouts, error handling"""
196
-
197
- def _handle_api_error(error):
198
- """Convert API errors to actionable error messages"""
199
-
200
- async def _paginate_results(endpoint, params, max_items):
201
- """Handle pagination across multiple API calls"""
202
- ```
203
-
204
- **Response Formatting:**
205
- ```python
206
- def _format_as_markdown(data):
207
- """Convert JSON data to human-readable markdown"""
208
-
209
- def _format_as_json(data):
210
- """Convert to structured JSON with consistent schema"""
211
-
212
- def _truncate_if_needed(response):
213
- """Enforce CHARACTER_LIMIT with helpful truncation message"""
214
- ```
215
-
216
- **Common Operations:**
217
- ```python
218
- async def _resolve_user_id(identifier):
219
- """Accept name or ID, return ID (for flexible inputs)"""
220
-
221
- async def _validate_project_exists(project_name):
222
- """Check project exists, return helpful error if not"""
223
- ```
224
-
225
- #### Plan Component 3: Input/Output Design
226
-
227
- **For Each Tool, Define:**
228
-
229
- **Input Parameters:**
230
- - Required vs optional parameters
231
- - Parameter types and constraints (min/max, patterns, enums)
232
- - Validation rules (Pydantic models or Zod schemas)
233
- - Examples of valid inputs
234
- - Default values
235
-
236
- **Example Input Design:**
237
- ```python
238
- class SearchUsersInput(BaseModel):
239
- query: str = Field(..., min_length=2, max_length=200,
240
- description="Search string (e.g., 'john', 'marketing', 'active')")
241
- team: Optional[str] = Field(None,
242
- description="Filter by team name")
243
- status: Optional[str] = Field(None,
244
- description="Filter by status: 'active', 'inactive', 'pending'")
245
- limit: int = Field(20, ge=1, le=100,
246
- description="Max results (1-100)")
247
- offset: int = Field(0, ge=0,
248
- description="Skip N results for pagination")
249
- response_format: ResponseFormat = Field(ResponseFormat.MARKDOWN,
250
- description="'markdown' or 'json'")
251
- ```
252
-
253
- **Output Formats:**
254
- - Markdown format (default, human-readable)
255
- - JSON format (optional, machine-readable)
256
- - Character limit strategy (typically 25,000 chars)
257
- - Truncation handling
258
- - Pagination metadata
259
-
260
- **Example Output Design:**
261
- ```markdown
262
- Markdown format:
263
- # Search Results: "marketing"
264
-
265
- Found 47 users (showing 20)
266
-
267
- ## John Doe (U123)
268
- - Email: john@example.com
269
- - Team: Marketing
270
- - Status: Active
271
-
272
- JSON format:
273
- {
274
- "total": 47,
275
- "count": 20,
276
- "offset": 0,
277
- "users": [
278
- {"id": "U123", "name": "John Doe", "email": "john@example.com", ...}
279
- ],
280
- "has_more": true,
281
- "next_offset": 20
282
- }
283
- ```
284
-
285
- #### Plan Component 4: Error Handling Strategy
286
-
287
- **For Each Potential Error:**
288
-
289
- **Authentication Errors (401):**
290
- ```
291
- Error: Invalid API credentials.
292
- Check that EXAMPLE_API_KEY environment variable is set correctly.
293
- Visit https://example.com/settings/api to generate a new key.
294
- ```
295
-
296
- **Authorization Errors (403):**
297
- ```
298
- Error: Permission denied accessing project 'website-redesign'.
299
- You may not have access to this project. Use list_projects() to see
300
- available projects, or contact your admin to request access.
301
- ```
302
-
303
- **Not Found Errors (404):**
304
- ```
305
- Error: Project 'webiste-redesign' not found.
306
- Did you mean 'website-redesign'? Use list_projects() to see exact names.
307
- ```
308
-
309
- **Rate Limit Errors (429):**
310
- ```
311
- Error: Rate limit exceeded (max 100 requests/minute).
312
- Wait 60 seconds before retrying, or reduce request frequency.
313
- ```
314
-
315
- **Validation Errors:**
316
- ```
317
- Error: Date format invalid. Expected YYYY-MM-DD (e.g., '2024-01-15'),
318
- received '01/15/2024'. Please use ISO date format.
319
- ```
320
-
321
- **Truncation Warnings:**
322
- ```
323
- Response truncated from 1,247 items to 50 items (25,000 character limit).
324
- To see more results:
325
- - Add filters: use team='marketing' or status='active'
326
- - Use pagination: set offset=50 to see next page
327
- - Use JSON format: response_format='json' is more compact
328
- ```
329
-
330
- **Plan Error Handling Code:**
331
- - Create consistent error formatter function
332
- - Map HTTP status codes to actionable messages
333
- - Include suggested next steps in every error
334
- - Reference related tools when helpful
335
-
336
- #### Plan Component 5: Document Loading Strategy
337
-
338
- **Create a Loading Sequence:**
339
-
340
- ```
341
- Phase 1.1: Load design_principles.md
342
-
343
- Phase 1.2: Load MCP protocol docs
344
-
345
- Phase 1.3: Load Python/TypeScript SDK docs + language guide
346
-
347
- Phase 1.4: Fetch API documentation exhaustively
348
-
349
- Phase 1.5: Create this plan
350
-
351
- Phase 2.1: Begin implementation
352
-
353
- Phase 2.4: Load mcp_best_practices.md for validation
354
-
355
- Phase 3.3: Load language-specific checklist
356
-
357
- Phase 4: Load evaluation.md
358
- ```
359
-
360
- **Time for Entire Planning Phase:** 3-4 hours
361
-
362
- **Deliverable:** Written implementation plan documenting:
363
- - 5-15 high-priority tools with descriptions
364
- - Shared utility functions needed
365
- - Input/output schemas for each tool
366
- - Error handling strategy
367
- - Example tool calls and responses
368
-
369
- ---
370
-
371
- ## Phase 2: Implementation (30% of effort)
372
-
373
- Now execute your plan systematically.
374
-
375
- ### Step 2.1: Set Up Project Structure
376
-
377
- #### For Python (FastMCP):
378
-
379
- **Single File Structure (Simple Servers):**
380
- ```
381
- service_mcp.py # All code in one file
382
- requirements.txt # Dependencies
383
- README.md # Usage instructions
384
- evaluation.xml # Your evaluations
385
- ```
386
-
387
- **Multi-File Structure (Complex Servers):**
388
- ```
389
- service_mcp/
390
- ├── __init__.py
391
- ├── server.py # Main FastMCP initialization
392
- ├── tools/
393
- │ ├── search_tools.py # Search/find operations
394
- │ ├── crud_tools.py # Create/read/update/delete
395
- │ └── workflow_tools.py # Combined workflow operations
396
- ├── models.py # Pydantic input models
397
- ├── utils.py # Shared utilities
398
- ├── constants.py # API_URL, CHARACTER_LIMIT, etc.
399
- └── requirements.txt
400
- ```
401
-
402
- **Initialize:**
403
- ```python
404
- # service_mcp.py or server.py
405
- from mcp.server.fastmcp import FastMCP
406
-
407
- mcp = FastMCP("service_mcp")
408
-
409
- # Constants at module level
410
- API_BASE_URL = "https://api.example.com/v1"
411
- CHARACTER_LIMIT = 25000
412
-
413
- if __name__ == "__main__":
414
- mcp.run()
415
- ```
416
-
417
- **Dependencies (requirements.txt):**
418
- ```
419
- mcp>=1.0.0
420
- pydantic>=2.0.0
421
- httpx>=0.24.0
422
- ```
423
-
424
- #### For Node/TypeScript (MCP SDK):
425
-
426
- **Project Structure:**
427
- ```
428
- service-mcp-server/
429
- ├── package.json
430
- ├── tsconfig.json
431
- ├── README.md
432
- ├── src/
433
- │ ├── index.ts # Main entry point
434
- │ ├── types.ts # TypeScript interfaces
435
- │ ├── tools/ # Tool implementations
436
- │ ├── services/ # API clients
437
- │ ├── schemas/ # Zod schemas
438
- │ └── constants.ts # Configuration
439
- └── dist/ # Compiled JavaScript
440
- ```
441
-
442
- **Initialize (package.json):**
443
- ```json
444
- {
445
- "name": "service-mcp-server",
446
- "version": "1.0.0",
447
- "type": "module",
448
- "main": "dist/index.js",
449
- "scripts": {
450
- "build": "tsc",
451
- "start": "node dist/index.js"
452
- },
453
- "dependencies": {
454
- "@modelcontextprotocol/sdk": "^1.6.1",
455
- "axios": "^1.7.9",
456
- "zod": "^3.23.8"
457
- }
458
- }
459
- ```
460
-
461
- **Initialize (src/index.ts):**
462
- ```typescript
463
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
464
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
465
-
466
- const server = new McpServer({
467
- name: "service-mcp-server",
468
- version: "1.0.0"
469
- });
470
-
471
- // Constants
472
- export const API_BASE_URL = "https://api.example.com/v1";
473
- export const CHARACTER_LIMIT = 25000;
474
-
475
- async function main() {
476
- const transport = new StdioServerTransport();
477
- await server.connect(transport);
478
- console.error("Service MCP server running via stdio");
479
- }
480
-
481
- main().catch(console.error);
482
- ```
483
-
484
- ### Step 2.2: Implement Core Infrastructure First
485
-
486
- **DO NOT start with tools.** Build shared utilities first.
487
-
488
- #### Shared API Request Function
489
-
490
- **Python:**
491
- ```python
492
- async def _make_api_request(
493
- endpoint: str,
494
- method: str = "GET",
495
- data: Optional[dict] = None,
496
- params: Optional[dict] = None
497
- ) -> dict:
498
- """Centralized API calling with auth, timeouts, retries."""
499
- async with httpx.AsyncClient() as client:
500
- response = await client.request(
501
- method,
502
- f"{API_BASE_URL}/{endpoint}",
503
- json=data,
504
- params=params,
505
- headers={
506
- "Authorization": f"Bearer {os.getenv('EXAMPLE_API_KEY')}",
507
- "Content-Type": "application/json"
508
- },
509
- timeout=30.0
510
- )
511
- response.raise_for_status()
512
- return response.json()
513
- ```
514
-
515
- **TypeScript:**
516
- ```typescript
517
- async function makeApiRequest<T>(
518
- endpoint: string,
519
- method: "GET" | "POST" | "PUT" | "DELETE" = "GET",
520
- data?: any,
521
- params?: any
522
- ): Promise<T> {
523
- const response = await axios({
524
- method,
525
- url: `${API_BASE_URL}/${endpoint}`,
526
- data,
527
- params,
528
- headers: {
529
- "Authorization": `Bearer ${process.env.EXAMPLE_API_KEY}`,
530
- "Content-Type": "application/json"
531
- },
532
- timeout: 30000
533
- });
534
- return response.data;
535
- }
536
- ```
537
-
538
- #### Error Handler
539
-
540
- **Python:**
541
- ```python
542
- def _handle_api_error(e: Exception) -> str:
543
- """Convert exceptions to actionable error messages."""
544
- if isinstance(e, httpx.HTTPStatusError):
545
- status = e.response.status_code
546
- if status == 401:
547
- return "Error: Invalid API credentials. Check EXAMPLE_API_KEY environment variable."
548
- elif status == 403:
549
- return "Error: Permission denied. You don't have access to this resource."
550
- elif status == 404:
551
- return "Error: Resource not found. Check the ID is correct."
552
- elif status == 429:
553
- return "Error: Rate limit exceeded. Wait before making more requests."
554
- return f"Error: API request failed with status {status}"
555
- elif isinstance(e, httpx.TimeoutException):
556
- return "Error: Request timed out. Try again or check network connection."
557
- return f"Error: Unexpected error: {type(e).__name__}"
558
- ```
559
-
560
- #### Response Formatters
561
-
562
- **Python:**
563
- ```python
564
- def _format_as_markdown(data: list, title: str) -> str:
565
- """Format list of items as readable markdown."""
566
- lines = [f"# {title}", ""]
567
- for item in data:
568
- lines.append(f"## {item['name']} ({item['id']})")
569
- lines.append(f"- **Status**: {item['status']}")
570
- lines.append("")
571
- return "\n".join(lines)
572
-
573
- def _format_as_json(data: dict) -> str:
574
- """Format as pretty-printed JSON."""
575
- return json.dumps(data, indent=2)
576
-
577
- def _check_character_limit(text: str) -> str:
578
- """Enforce character limit with truncation message."""
579
- if len(text) > CHARACTER_LIMIT:
580
- truncated = text[:CHARACTER_LIMIT]
581
- truncated += "\n\n[Response truncated at 25,000 character limit]"
582
- return truncated
583
- return text
584
- ```
585
-
586
- **Time:** 1-2 hours to build solid infrastructure
587
-
588
- ### Step 2.3: Implement Tools Systematically
589
-
590
- For each tool in your plan, follow this pattern:
591
-
592
- #### Step A: Define Input Schema
593
-
594
- **Python (Pydantic):**
595
- ```python
596
- from pydantic import BaseModel, Field, ConfigDict
597
- from enum import Enum
598
-
599
- class ResponseFormat(str, Enum):
600
- MARKDOWN = "markdown"
601
- JSON = "json"
602
-
603
- class SearchUsersInput(BaseModel):
604
- model_config = ConfigDict(
605
- str_strip_whitespace=True,
606
- validate_assignment=True,
607
- extra='forbid'
608
- )
609
-
610
- query: str = Field(
611
- ...,
612
- description="Search string to match (e.g., 'john', 'team:marketing')",
613
- min_length=2,
614
- max_length=200
615
- )
616
- limit: int = Field(
617
- default=20,
618
- description="Maximum results to return (1-100)",
619
- ge=1,
620
- le=100
621
- )
622
- offset: int = Field(
623
- default=0,
624
- description="Results to skip for pagination",
625
- ge=0
626
- )
627
- response_format: ResponseFormat = Field(
628
- default=ResponseFormat.MARKDOWN,
629
- description="Output format: 'markdown' or 'json'"
630
- )
631
- ```
632
-
633
- **TypeScript (Zod):**
634
- ```typescript
635
- import { z } from "zod";
636
-
637
- enum ResponseFormat {
638
- MARKDOWN = "markdown",
639
- JSON = "json"
640
- }
641
-
642
- const SearchUsersInputSchema = z.object({
643
- query: z.string()
644
- .min(2, "Query must be at least 2 characters")
645
- .max(200, "Query too long")
646
- .describe("Search string to match"),
647
- limit: z.number()
648
- .int()
649
- .min(1)
650
- .max(100)
651
- .default(20)
652
- .describe("Maximum results (1-100)"),
653
- offset: z.number()
654
- .int()
655
- .min(0)
656
- .default(0)
657
- .describe("Results to skip for pagination"),
658
- response_format: z.nativeEnum(ResponseFormat)
659
- .default(ResponseFormat.MARKDOWN)
660
- .describe("Output format")
661
- }).strict();
662
-
663
- type SearchUsersInput = z.infer<typeof SearchUsersInputSchema>;
664
- ```
665
-
666
- #### Step B: Write Comprehensive Tool Description
667
-
668
- **Key Elements:**
669
- 1. One-line summary
670
- 2. Detailed explanation of functionality
671
- 3. Parameter documentation with examples
672
- 4. Return value schema
673
- 5. Usage examples (when to use, when NOT to use)
674
- 6. Error handling documentation
675
-
676
- **Example:**
677
- ```python
678
- @mcp.tool(
679
- name="example_search_users",
680
- annotations={
681
- "title": "Search Example Users",
682
- "readOnlyHint": True,
683
- "destructiveHint": False,
684
- "idempotentHint": True,
685
- "openWorldHint": True
686
- }
687
- )
688
- async def example_search_users(params: SearchUsersInput) -> str:
689
- """Search for users in the Example system by name, email, or team.
690
-
691
- This tool searches across all user profiles, supporting partial matches
692
- and flexible filtering. It does NOT create or modify users - only searches.
693
-
694
- Args:
695
- params (SearchUsersInput): Search parameters including:
696
- - query (str): Search string (e.g., "john", "team:marketing")
697
- - limit (int): Max results 1-100 (default: 20)
698
- - offset (int): Pagination offset (default: 0)
699
- - response_format: 'markdown' or 'json' (default: 'markdown')
700
-
701
- Returns:
702
- str: Search results formatted as markdown or JSON
703
-
704
- JSON format schema:
705
- {
706
- "total": int, # Total matches found
707
- "count": int, # Results in this response
708
- "offset": int, # Current offset
709
- "users": [
710
- {
711
- "id": str, # User ID (e.g., "U123")
712
- "name": str, # Full name
713
- "email": str, # Email address
714
- "team": str, # Team name (optional)
715
- "status": str # 'active', 'inactive', 'pending'
716
- }
717
- ],
718
- "has_more": bool, # More results available
719
- "next_offset": int # Offset for next page
720
- }
721
-
722
- Examples:
723
- - Find marketing team: params with query="team:marketing"
724
- - Find by name: params with query="john"
725
- - Get detailed data: params with response_format="json"
726
-
727
- Don't use when:
728
- - You need to CREATE a user -> use example_create_user instead
729
- - You have a user ID and need full details -> use example_get_user
730
-
731
- Error Handling:
732
- - "No users found": Returns empty results with suggestion to broaden search
733
- - "Rate limit exceeded": Advises waiting before retry
734
- - "Invalid query": Provides example of valid query format
735
- """
736
- ```
737
-
738
- #### Step C: Implement Tool Logic
739
-
740
- **Pattern:**
741
- ```python
742
- async def example_search_users(params: SearchUsersInput) -> str:
743
- try:
744
- # 1. Make API request using shared utilities
745
- data = await _make_api_request(
746
- "users/search",
747
- params={"q": params.query, "limit": params.limit, "offset": params.offset}
748
- )
749
-
750
- users = data.get("users", [])
751
- total = data.get("total", 0)
752
-
753
- # 2. Handle empty results
754
- if not users:
755
- return f"No users found matching '{params.query}'. Try a broader search term."
756
-
757
- # 3. Format response based on requested format
758
- if params.response_format == ResponseFormat.MARKDOWN:
759
- result = _format_users_markdown(users, total, params.query)
760
- else:
761
- result = _format_users_json(users, total, params.offset)
762
-
763
- # 4. Enforce character limit
764
- result = _check_character_limit(result)
765
-
766
- return result
767
-
768
- except Exception as e:
769
- # 5. Convert errors to actionable messages
770
- return _handle_api_error(e)
771
- ```
772
-
773
- #### Step D: Add Tool Annotations
774
-
775
- Always include these annotations:
776
-
777
- ```python
778
- annotations={
779
- "title": "Human-Readable Tool Name",
780
- "readOnlyHint": True/False, # Does it modify state?
781
- "destructiveHint": True/False, # Does it delete/destroy data?
782
- "idempotentHint": True/False, # Same call twice = same result?
783
- "openWorldHint": True/False # Does it interact externally?
784
- }
785
- ```
786
-
787
- **Examples:**
788
- - Search tool: readOnly=True, destructive=False, idempotent=True, openWorld=True
789
- - Create tool: readOnly=False, destructive=False, idempotent=False, openWorld=True
790
- - Delete tool: readOnly=False, destructive=True, idempotent=True, openWorld=True
791
-
792
- **Repeat for Each Tool in Your Plan**
793
-
794
- **Time:** 30-60 minutes per tool (5-10 tools = 3-6 hours)
795
-
796
- ### Step 2.4: Follow Language-Specific Best Practices
797
-
798
- Before finalizing implementation:
799
-
800
- #### For Python:
801
- - Load [python_mcp_server.md](./python_mcp_server.md)
802
- - Verify using Pydantic v2 with `model_config`
803
- - Check all async/await patterns
804
- - Confirm type hints throughout
805
- - Review quality checklist
806
-
807
- #### For TypeScript:
808
- - Load [node_mcp_server.md](./node_mcp_server.md)
809
- - Verify Zod schemas use `.strict()`
810
- - Check TypeScript strict mode enabled
811
- - Confirm no `any` types
812
- - Review quality checklist
813
- - Run `npm run build` to verify
814
-
815
- **Time:** 1 hour
816
-
817
- ---
818
-
819
- ## Phase 3: Review and Refine (15% of effort)
820
-
821
- ### Step 3.1: Code Quality Review
822
-
823
- **DRY Principle (Don't Repeat Yourself):**
824
- - [ ] No duplicated code between tools
825
- - [ ] Common operations extracted to utility functions
826
- - [ ] API request logic centralized
827
- - [ ] Error handling consistent
828
-
829
- **Composability:**
830
- - [ ] Shared utilities can be combined flexibly
831
- - [ ] Tools use shared formatters
832
- - [ ] Validation logic is reusable
833
-
834
- **Consistency:**
835
- - [ ] Similar operations return similar formats
836
- - [ ] Tool names follow same patterns
837
- - [ ] Error messages have consistent structure
838
- - [ ] Pagination handled identically across tools
839
-
840
- **Error Handling:**
841
- - [ ] All external API calls wrapped in try/catch
842
- - [ ] Every error returns actionable message
843
- - [ ] Timeout scenarios handled
844
- - [ ] Authentication errors caught
845
-
846
- **Type Safety:**
847
- - [ ] Python: Type hints on all functions
848
- - [ ] TypeScript: No `any` types
849
- - [ ] Input validation via Pydantic/Zod
850
- - [ ] Output types documented
851
-
852
- **Documentation:**
853
- - [ ] Every tool has comprehensive docstring
854
- - [ ] Return schemas fully documented
855
- - [ ] Usage examples provided
856
- - [ ] Error scenarios explained
857
-
858
- **Time:** 1-2 hours
859
-
860
- ### Step 3.2: Test and Build
861
-
862
- **IMPORTANT:** MCP servers are long-running processes. Never run them directly:
863
- - ❌ `python server.py` - WILL HANG FOREVER
864
- - ❌ `node dist/index.js` - WILL HANG FOREVER
865
-
866
- **Safe Testing Options:**
867
-
868
- #### Option 1: Use Evaluation Harness (Recommended)
869
- ```bash
870
- python scripts/evaluation.py \
871
- -t stdio \
872
- -c python \
873
- -a your_server.py \
874
- evaluation.xml
875
- ```
876
- The harness manages the server process for you.
877
-
878
- #### Option 2: Run in tmux
879
- ```bash
880
- # Terminal 1
881
- tmux new -s mcp-server
882
- python your_server.py
883
- # Detach with Ctrl+B then D
884
-
885
- # Terminal 2
886
- # Test with evaluation harness or manual testing
887
- ```
888
-
889
- #### For Python:
890
-
891
- **Verify Syntax:**
892
- ```bash
893
- python -m py_compile your_server.py
894
- ```
895
-
896
- **Check Imports:**
897
- Read through the file to verify:
898
- - All imports are valid
899
- - Pydantic models defined before use
900
- - No circular dependencies
901
-
902
- **Test Pattern:**
903
- ```bash
904
- # In tmux or use evaluation harness
905
- timeout 5s python your_server.py
906
- # Should timeout (proving it's listening)
907
- ```
908
-
909
- #### For TypeScript:
910
-
911
- **Build:**
912
- ```bash
913
- npm run build
914
- ```
915
- **MUST complete without errors.**
916
-
917
- **Verify Output:**
918
- ```bash
919
- ls dist/index.js # Must exist
920
- ```
921
-
922
- **Test Pattern:**
923
- ```bash
924
- # In tmux or use evaluation harness
925
- timeout 5s node dist/index.js
926
- # Should timeout (proving it's listening)
927
- ```
928
-
929
- **Time:** 30 minutes
930
-
931
- ### Step 3.3: Use Quality Checklist
932
-
933
- #### Python Checklist:
934
- Load the "Quality Checklist" section from [python_mcp_server.md](./python_mcp_server.md)
935
-
936
- Key items:
937
- - [ ] Server name format: `{service}_mcp`
938
- - [ ] All tools use `@mcp.tool` decorator
939
- - [ ] Pydantic models for all inputs
940
- - [ ] Annotations on all tools
941
- - [ ] Async/await throughout
942
- - [ ] CHARACTER_LIMIT enforced
943
- - [ ] Pagination implemented
944
- - [ ] Shared utilities used
945
-
946
- #### TypeScript Checklist:
947
- Load the "Quality Checklist" section from [node_mcp_server.md](./node_mcp_server.md)
948
-
949
- Key items:
950
- - [ ] Server name format: `{service}-mcp-server`
951
- - [ ] `npm run build` succeeds
952
- - [ ] dist/index.js exists
953
- - [ ] Zod schemas with `.strict()`
954
- - [ ] TypeScript strict mode
955
- - [ ] No `any` types
956
- - [ ] CHARACTER_LIMIT enforced
957
- - [ ] Pagination implemented
958
-
959
- **Time:** 30 minutes
960
-
961
- ---
962
-
963
- ## Phase 4: Create Evaluations (15% of effort)
964
-
965
- ### Step 4.1: Load Evaluation Guide
966
-
967
- **Action:**
968
- - Load [evaluation.md](./evaluation.md) completely
969
- - Understand evaluation purpose and requirements
970
-
971
- **Key Points:**
972
- - Evaluations test if agents can answer realistic questions
973
- - Questions must be read-only, independent, complex
974
- - Answers must be single verifiable values
975
- - Create 10 questions that require multiple tool calls
976
-
977
- ### Step 4.2: Understand Evaluation Requirements
978
-
979
- **Each Question Must Be:**
980
- - Independent (not dependent on other questions)
981
- - Read-only (no state modifications required)
982
- - Complex (requiring multiple tool calls, potentially dozens)
983
- - Realistic (based on actual use cases)
984
- - Verifiable (single clear answer via string comparison)
985
- - Stable (answer won't change over time)
986
-
987
- **Each Answer Must Be:**
988
- - Single value (not a list or complex object)
989
- - Verifiable via direct string comparison
990
- - Human-readable when possible (names over IDs)
991
- - Stable over time (based on historical data)
992
-
993
- ### Step 4.3: Create Evaluation Process
994
-
995
- **Step 1: Tool Inspection**
996
- ```python
997
- # List your implemented tools
998
- tools = [
999
- "example_search_users",
1000
- "example_get_project_status",
1001
- "example_list_recent_activity",
1002
- # ... etc
1003
- ]
1004
-
1005
- # Understand capabilities
1006
- for tool in tools:
1007
- print(f"{tool}: {tool_description}")
1008
- ```
1009
-
1010
- **Step 2: Content Exploration**
1011
- - Use READ-ONLY tools to explore available data
1012
- - Identify specific users, projects, tasks for questions
1013
- - Find historical data that won't change
1014
- - Use `limit=10` to avoid overwhelming context
1015
-
1016
- **Step 3: Generate Questions**
1017
- Create 10 questions that:
1018
- - Require understanding your API's data
1019
- - Test multiple tools working together
1020
- - Challenge agents with realistic complexity
1021
- - Have stable, verifiable answers
1022
-
1023
- **Example Questions:**
1024
- ```xml
1025
- <qa_pair>
1026
- <question>Find the project that was completed in Q3 2023 and had the highest number of tasks marked as 'critical' priority. What was the project manager's email address?</question>
1027
- <answer>sarah.johnson@example.com</answer>
1028
- </qa_pair>
1029
-
1030
- <qa_pair>
1031
- <question>Among all users in the Engineering team who joined before January 2024, which user has closed the most bug reports? Provide their full name.</question>
1032
- <answer>Michael Chen</answer>
1033
- </qa_pair>
1034
- ```
1035
-
1036
- **Step 4: Verify Answers**
1037
- - Solve each question yourself using the MCP server tools
1038
- - Verify the answer is stable (won't change)
1039
- - Confirm answer can be found with available tools
1040
- - Adjust questions if too easy or impossible
1041
-
1042
- ### Step 4.4: Create evaluation.xml File
1043
-
1044
- ```xml
1045
- <evaluation>
1046
- <qa_pair>
1047
- <question>Your first question here</question>
1048
- <answer>verifiable answer</answer>
1049
- </qa_pair>
1050
- <qa_pair>
1051
- <question>Your second question here</question>
1052
- <answer>verifiable answer</answer>
1053
- </qa_pair>
1054
- <!-- 8 more qa_pairs -->
1055
- </evaluation>
1056
- ```
1057
-
1058
- ### Step 4.5: Run Evaluation
1059
-
1060
- ```bash
1061
- # Install dependencies
1062
- pip install anthropic mcp
1063
-
1064
- # Set API key
1065
- export ANTHROPIC_API_KEY=your_key
1066
-
1067
- # Run evaluation
1068
- python scripts/evaluation.py \
1069
- -t stdio \
1070
- -c python \
1071
- -a your_server.py \
1072
- -e EXAMPLE_API_KEY=your_api_key \
1073
- -o report.md \
1074
- evaluation.xml
1075
- ```
1076
-
1077
- **Review Results:**
1078
- - Which questions passed/failed?
1079
- - What was the agent's feedback on your tools?
1080
- - Where did agents struggle?
1081
- - What improvements are suggested?
1082
-
1083
- ### Step 4.6: Iterate Based on Results
1084
-
1085
- **If Accuracy < 80%:**
1086
- - Review failed questions
1087
- - Read agent feedback carefully
1088
- - Identify patterns in failures
1089
- - Improve tools based on feedback
1090
- - Re-run evaluations
1091
-
1092
- **Common Improvements:**
1093
- - Add better search/filter capabilities
1094
- - Improve error messages with examples
1095
- - Reduce response verbosity
1096
- - Add missing workflow tools
1097
- - Improve tool descriptions
1098
-
1099
- **Time:** 2-3 hours
1100
-
1101
- ---
1102
-
1103
- ## Workflow Decision Tree
1104
-
1105
- ```
1106
- START: Building MCP Server
1107
-
1108
- Have you read design_principles.md?
1109
- No → Read design_principles.md first
1110
- Yes → Continue
1111
-
1112
- Have you loaded MCP protocol docs?
1113
- No → Load https://modelcontextprotocol.io/llms-full.txt
1114
- Yes → Continue
1115
-
1116
- Have you loaded SDK docs for your language?
1117
- No → Load Python or TypeScript SDK + guide
1118
- Yes → Continue
1119
-
1120
- Have you studied ALL API documentation?
1121
- No → Exhaustively research API (1-2 hours)
1122
- Yes → Continue
1123
-
1124
- Have you created implementation plan?
1125
- No → Document tools, utilities, I/O, errors
1126
- Yes → Begin Phase 2
1127
-
1128
- Have you built shared utilities?
1129
- No → Build API client, error handler, formatters
1130
- Yes → Continue
1131
-
1132
- Have you implemented tools with validation?
1133
- No → Implement each tool systematically
1134
- Yes → Continue
1135
-
1136
- Does `python server.py` or `npm run build` work?
1137
- No → Fix syntax/build errors
1138
- Yes → Continue
1139
-
1140
- Have you reviewed code quality?
1141
- No → Check DRY, composability, consistency
1142
- Yes → Continue
1143
-
1144
- Have you created 10 evaluation questions?
1145
- No → Load evaluation.md and create evaluations
1146
- Yes → Continue
1147
-
1148
- Does evaluation show 80%+ accuracy?
1149
- No → Iterate on tools based on feedback
1150
- Yes → SUCCESS - Server is ready!
1151
- ```
1152
-
1153
- ---
1154
-
1155
- ## Common Pitfalls and Solutions
1156
-
1157
- ### Pitfall 1: Starting Implementation Too Early
1158
- **Symptom:** Building tools without understanding agent needs
1159
- **Solution:** Complete Phase 1 research thoroughly (40% of time)
1160
-
1161
- ### Pitfall 2: API Wrapper Mentality
1162
- **Symptom:** One tool per API endpoint
1163
- **Solution:** Review design_principles.md - build workflow tools
1164
-
1165
- ### Pitfall 3: Verbose Responses
1166
- **Symptom:** Agents run out of context
1167
- **Solution:** Default to concise, offer detailed option, enforce CHARACTER_LIMIT
1168
-
1169
- ### Pitfall 4: Generic Error Messages
1170
- **Symptom:** Agents get stuck on errors
1171
- **Solution:** Every error must include specific next steps
1172
-
1173
- ### Pitfall 5: Skipping Evaluations
1174
- **Symptom:** Tools seem good but agents fail in practice
1175
- **Solution:** Create evaluations in Phase 4, iterate based on results
1176
-
1177
- ### Pitfall 6: Running Server Directly
1178
- **Symptom:** `python server.py` hangs forever
1179
- **Solution:** Use evaluation harness or tmux, never run directly
1180
-
1181
- ### Pitfall 7: Incomplete API Research
1182
- **Symptom:** Missing important tools
1183
- **Solution:** Exhaustively study API docs in Phase 1.4
1184
-
1185
- ### Pitfall 8: Duplicated Code
1186
- **Symptom:** Similar logic across multiple tools
1187
- **Solution:** Extract shared utilities in Phase 2.2
1188
-
1189
- ---
1190
-
1191
- ## Time Estimates by Phase
1192
-
1193
- **Small Server (5-8 tools):**
1194
- - Phase 1: 3-4 hours
1195
- - Phase 2: 3-4 hours
1196
- - Phase 3: 1-2 hours
1197
- - Phase 4: 2-3 hours
1198
- - **Total: 9-13 hours**
1199
-
1200
- **Medium Server (10-15 tools):**
1201
- - Phase 1: 4-5 hours
1202
- - Phase 2: 6-8 hours
1203
- - Phase 3: 2-3 hours
1204
- - Phase 4: 3-4 hours
1205
- - **Total: 15-20 hours**
1206
-
1207
- **Large Server (20+ tools):**
1208
- - Phase 1: 5-6 hours
1209
- - Phase 2: 10-12 hours
1210
- - Phase 3: 3-4 hours
1211
- - Phase 4: 4-5 hours
1212
- - **Total: 22-27 hours**
1213
-
1214
- ---
1215
-
1216
- ## Success Criteria
1217
-
1218
- Your MCP server is ready when:
1219
-
1220
- - [ ] All reference documentation has been loaded and studied
1221
- - [ ] Implementation plan documents tools, I/O, and error handling
1222
- - [ ] Shared utilities are implemented and reused across tools
1223
- - [ ] All tools have comprehensive descriptions and examples
1224
- - [ ] Input validation uses Pydantic (Python) or Zod (TypeScript)
1225
- - [ ] Error messages are actionable with specific guidance
1226
- - [ ] CHARACTER_LIMIT is enforced with truncation messages
1227
- - [ ] Pagination is implemented where applicable
1228
- - [ ] Code follows language-specific best practices
1229
- - [ ] Build/syntax check succeeds
1230
- - [ ] Quality checklist is complete
1231
- - [ ] 10 evaluation questions created
1232
- - [ ] Evaluation shows 80%+ agent success rate
1233
- - [ ] Agent feedback is positive and specific
1234
-
1235
- ---
1236
-
1237
- **Next:** Return to [SKILL.md](../SKILL.md) for navigation to other reference files.