claude-mpm 5.4.22__py3-none-any.whl → 5.6.34__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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_AGENT.md +164 -0
- claude_mpm/agents/BASE_ENGINEER.md +658 -0
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +66 -241
- claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
- claude_mpm/agents/MEMORY.md +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +374 -1257
- claude_mpm/agents/WORKFLOW.md +6 -253
- claude_mpm/agents/agent_loader.py +1 -1
- claude_mpm/agents/base_agent.json +31 -0
- claude_mpm/agents/frontmatter_validator.py +2 -2
- claude_mpm/agents/templates/circuit-breakers.md +26 -17
- claude_mpm/cli/__init__.py +5 -1
- claude_mpm/cli/commands/agent_state_manager.py +10 -10
- claude_mpm/cli/commands/agents.py +11 -13
- claude_mpm/cli/commands/agents_reconcile.py +197 -0
- claude_mpm/cli/commands/auto_configure.py +4 -4
- claude_mpm/cli/commands/autotodos.py +566 -0
- claude_mpm/cli/commands/commander.py +216 -0
- claude_mpm/cli/commands/configure.py +621 -22
- claude_mpm/cli/commands/configure_agent_display.py +12 -0
- claude_mpm/cli/commands/hook_errors.py +60 -60
- claude_mpm/cli/commands/monitor.py +2 -2
- claude_mpm/cli/commands/mpm_init/core.py +72 -0
- claude_mpm/cli/commands/postmortem.py +1 -1
- claude_mpm/cli/commands/profile.py +276 -0
- claude_mpm/cli/commands/run.py +35 -3
- claude_mpm/cli/commands/skill_source.py +51 -2
- claude_mpm/cli/commands/skills.py +182 -32
- claude_mpm/cli/executor.py +130 -16
- claude_mpm/cli/interactive/__init__.py +10 -0
- claude_mpm/cli/interactive/agent_wizard.py +32 -52
- claude_mpm/cli/interactive/questionary_styles.py +65 -0
- claude_mpm/cli/interactive/skill_selector.py +481 -0
- claude_mpm/cli/parsers/base_parser.py +83 -1
- claude_mpm/cli/parsers/commander_parser.py +116 -0
- claude_mpm/cli/parsers/profile_parser.py +147 -0
- claude_mpm/cli/parsers/run_parser.py +10 -0
- claude_mpm/cli/parsers/skill_source_parser.py +4 -0
- claude_mpm/cli/parsers/skills_parser.py +2 -3
- claude_mpm/cli/startup.py +690 -386
- claude_mpm/cli/startup_display.py +74 -6
- claude_mpm/cli/startup_logging.py +2 -2
- claude_mpm/cli/utils.py +7 -3
- claude_mpm/commander/__init__.py +78 -0
- claude_mpm/commander/adapters/__init__.py +60 -0
- claude_mpm/commander/adapters/auggie.py +260 -0
- claude_mpm/commander/adapters/base.py +288 -0
- claude_mpm/commander/adapters/claude_code.py +392 -0
- claude_mpm/commander/adapters/codex.py +237 -0
- claude_mpm/commander/adapters/communication.py +366 -0
- claude_mpm/commander/adapters/example_usage.py +310 -0
- claude_mpm/commander/adapters/mpm.py +389 -0
- claude_mpm/commander/adapters/registry.py +204 -0
- claude_mpm/commander/api/__init__.py +16 -0
- claude_mpm/commander/api/app.py +121 -0
- claude_mpm/commander/api/errors.py +133 -0
- claude_mpm/commander/api/routes/__init__.py +8 -0
- claude_mpm/commander/api/routes/events.py +184 -0
- claude_mpm/commander/api/routes/inbox.py +171 -0
- claude_mpm/commander/api/routes/messages.py +148 -0
- claude_mpm/commander/api/routes/projects.py +271 -0
- claude_mpm/commander/api/routes/sessions.py +226 -0
- claude_mpm/commander/api/routes/work.py +296 -0
- claude_mpm/commander/api/schemas.py +186 -0
- claude_mpm/commander/chat/__init__.py +7 -0
- claude_mpm/commander/chat/cli.py +146 -0
- claude_mpm/commander/chat/commands.py +96 -0
- claude_mpm/commander/chat/repl.py +310 -0
- claude_mpm/commander/config.py +51 -0
- claude_mpm/commander/config_loader.py +115 -0
- claude_mpm/commander/core/__init__.py +10 -0
- claude_mpm/commander/core/block_manager.py +325 -0
- claude_mpm/commander/core/response_manager.py +323 -0
- claude_mpm/commander/daemon.py +603 -0
- claude_mpm/commander/env_loader.py +59 -0
- claude_mpm/commander/events/__init__.py +26 -0
- claude_mpm/commander/events/manager.py +332 -0
- claude_mpm/commander/frameworks/__init__.py +12 -0
- claude_mpm/commander/frameworks/base.py +146 -0
- claude_mpm/commander/frameworks/claude_code.py +58 -0
- claude_mpm/commander/frameworks/mpm.py +62 -0
- claude_mpm/commander/inbox/__init__.py +16 -0
- claude_mpm/commander/inbox/dedup.py +128 -0
- claude_mpm/commander/inbox/inbox.py +224 -0
- claude_mpm/commander/inbox/models.py +70 -0
- claude_mpm/commander/instance_manager.py +450 -0
- claude_mpm/commander/llm/__init__.py +6 -0
- claude_mpm/commander/llm/openrouter_client.py +167 -0
- claude_mpm/commander/llm/summarizer.py +70 -0
- claude_mpm/commander/memory/__init__.py +45 -0
- claude_mpm/commander/memory/compression.py +347 -0
- claude_mpm/commander/memory/embeddings.py +230 -0
- claude_mpm/commander/memory/entities.py +310 -0
- claude_mpm/commander/memory/example_usage.py +290 -0
- claude_mpm/commander/memory/integration.py +325 -0
- claude_mpm/commander/memory/search.py +381 -0
- claude_mpm/commander/memory/store.py +657 -0
- claude_mpm/commander/models/__init__.py +18 -0
- claude_mpm/commander/models/events.py +121 -0
- claude_mpm/commander/models/project.py +162 -0
- claude_mpm/commander/models/work.py +214 -0
- claude_mpm/commander/parsing/__init__.py +20 -0
- claude_mpm/commander/parsing/extractor.py +132 -0
- claude_mpm/commander/parsing/output_parser.py +270 -0
- claude_mpm/commander/parsing/patterns.py +100 -0
- claude_mpm/commander/persistence/__init__.py +11 -0
- claude_mpm/commander/persistence/event_store.py +274 -0
- claude_mpm/commander/persistence/state_store.py +309 -0
- claude_mpm/commander/persistence/work_store.py +164 -0
- claude_mpm/commander/polling/__init__.py +13 -0
- claude_mpm/commander/polling/event_detector.py +104 -0
- claude_mpm/commander/polling/output_buffer.py +49 -0
- claude_mpm/commander/polling/output_poller.py +153 -0
- claude_mpm/commander/project_session.py +268 -0
- claude_mpm/commander/proxy/__init__.py +12 -0
- claude_mpm/commander/proxy/formatter.py +89 -0
- claude_mpm/commander/proxy/output_handler.py +191 -0
- claude_mpm/commander/proxy/relay.py +155 -0
- claude_mpm/commander/registry.py +410 -0
- claude_mpm/commander/runtime/__init__.py +10 -0
- claude_mpm/commander/runtime/executor.py +191 -0
- claude_mpm/commander/runtime/monitor.py +346 -0
- claude_mpm/commander/session/__init__.py +6 -0
- claude_mpm/commander/session/context.py +81 -0
- claude_mpm/commander/session/manager.py +59 -0
- claude_mpm/commander/tmux_orchestrator.py +361 -0
- claude_mpm/commander/web/__init__.py +1 -0
- claude_mpm/commander/work/__init__.py +30 -0
- claude_mpm/commander/work/executor.py +207 -0
- claude_mpm/commander/work/queue.py +405 -0
- claude_mpm/commander/workflow/__init__.py +27 -0
- claude_mpm/commander/workflow/event_handler.py +241 -0
- claude_mpm/commander/workflow/notifier.py +146 -0
- claude_mpm/commands/mpm-config.md +20 -249
- claude_mpm/commands/mpm-doctor.md +16 -21
- claude_mpm/commands/mpm-help.md +12 -205
- claude_mpm/commands/mpm-init.md +88 -506
- claude_mpm/commands/mpm-monitor.md +22 -401
- claude_mpm/commands/mpm-organize.md +70 -442
- claude_mpm/commands/mpm-postmortem.md +13 -107
- claude_mpm/commands/mpm-session-resume.md +20 -363
- claude_mpm/commands/mpm-status.md +13 -69
- claude_mpm/commands/mpm-ticket-view.md +60 -495
- claude_mpm/commands/mpm-version.md +13 -107
- claude_mpm/commands/mpm.md +8 -0
- claude_mpm/config/agent_presets.py +8 -7
- claude_mpm/config/skill_sources.py +16 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +154 -2
- claude_mpm/core/config.py +37 -26
- claude_mpm/core/config_constants.py +74 -9
- claude_mpm/core/constants.py +56 -12
- claude_mpm/core/framework/loaders/agent_loader.py +1 -1
- claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
- claude_mpm/core/hook_manager.py +51 -3
- claude_mpm/core/interactive_session.py +12 -11
- claude_mpm/core/logger.py +26 -9
- claude_mpm/core/logging_utils.py +39 -13
- claude_mpm/core/network_config.py +148 -0
- claude_mpm/core/oneshot_session.py +7 -6
- claude_mpm/core/optimized_startup.py +61 -0
- claude_mpm/core/output_style_manager.py +66 -18
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/core/socketio_pool.py +47 -15
- claude_mpm/core/unified_agent_registry.py +1 -1
- claude_mpm/core/unified_config.py +54 -8
- claude_mpm/core/unified_paths.py +95 -90
- claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/1WZnGYqX.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/67pF3qNn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/6RxdMKe4.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/8cZrfX0h.js +60 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/9a6T2nm-.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B443AUzu.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B8AwtY2H.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BF15LAsF.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BRcwIQNr.js +4 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BSNlmTZj.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BV6nKitt.js +43 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BViJ8lZt.js +128 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BcQ-Q0FE.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bpyvgze_.js +30 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C3rbW_a-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C8WYN38h.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C9I8FlXH.js +61 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIQcWgO2.js +36 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIctN7YN.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CKrS_JZW.js +145 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CR6P9C4A.js +89 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRRR9MD_.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CSXtMOf0.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CT-sbxSk.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWm6DJsp.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CpqQ1Kzn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D2nGpDRe.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9iCMida.js +267 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9ykgMoY.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DL2Ldur1.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DPfltzjH.js +165 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DR8nis88.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUliQN2b.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DXlhR01x.js +122 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D_lyTybS.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DngoTTgh.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DqkmHtDC.js +220 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DsDh8EYs.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DypDmXgd.js +139 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/IPYC-LnN.js +162 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JpevfAFt.js +68 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/NqQ1dWOy.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/R8CEIRAd.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Zxy7qc-l.js +64 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/qtd3IeO4.js +15 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ulBFON_C.js +65 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/wQVh1CoA.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.Dr7t0z2J.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.RgBboRvH.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DG-KkbDf.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
- claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
- claude_mpm/dashboard/static/svelte-build/index.html +36 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
- claude_mpm/experimental/cli_enhancements.py +2 -1
- claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
- claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +527 -136
- claude_mpm/hooks/claude_hooks/hook_handler.py +313 -99
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
- claude_mpm/hooks/claude_hooks/installer.py +206 -36
- claude_mpm/hooks/claude_hooks/memory_integration.py +52 -32
- claude_mpm/hooks/claude_hooks/response_tracking.py +43 -60
- claude_mpm/hooks/claude_hooks/services/__init__.py +21 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/container.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/protocols.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +67 -32
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +38 -105
- claude_mpm/hooks/claude_hooks/services/container.py +310 -0
- claude_mpm/hooks/claude_hooks/services/protocols.py +328 -0
- claude_mpm/hooks/claude_hooks/services/state_manager.py +25 -38
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +75 -77
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/hooks/session_resume_hook.py +89 -1
- claude_mpm/hooks/templates/pre_tool_use_simple.py +6 -6
- claude_mpm/hooks/templates/pre_tool_use_template.py +16 -8
- claude_mpm/init.py +276 -0
- claude_mpm/models/git_repository.py +3 -3
- claude_mpm/scripts/claude-hook-handler.sh +46 -19
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/agent_recommendation_service.py +8 -8
- claude_mpm/services/agents/agent_selection_service.py +2 -2
- claude_mpm/services/agents/cache_git_manager.py +7 -7
- claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
- claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -2
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +39 -19
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
- claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
- claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
- claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +169 -26
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +101 -75
- claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
- claude_mpm/services/agents/git_source_manager.py +23 -4
- claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
- claude_mpm/services/agents/recommender.py +5 -3
- claude_mpm/services/agents/single_tier_deployment_service.py +6 -6
- claude_mpm/services/agents/sources/git_source_sync_service.py +121 -10
- claude_mpm/services/agents/startup_sync.py +27 -4
- claude_mpm/services/cli/__init__.py +3 -0
- claude_mpm/services/cli/incremental_pause_manager.py +561 -0
- claude_mpm/services/cli/session_resume_helper.py +10 -2
- claude_mpm/services/command_deployment_service.py +44 -26
- claude_mpm/services/delegation_detector.py +175 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +31 -1
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
- claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
- claude_mpm/services/diagnostics/models.py +14 -1
- claude_mpm/services/event_log.py +325 -0
- claude_mpm/services/git/git_operations_service.py +8 -8
- claude_mpm/services/hook_installer_service.py +77 -8
- claude_mpm/services/infrastructure/__init__.py +4 -0
- claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
- claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
- claude_mpm/services/monitor/daemon_manager.py +15 -4
- claude_mpm/services/monitor/management/lifecycle.py +15 -3
- claude_mpm/services/monitor/server.py +571 -11
- claude_mpm/services/pm_skills_deployer.py +884 -0
- claude_mpm/services/profile_manager.py +337 -0
- claude_mpm/services/skills/git_skill_source_manager.py +281 -20
- claude_mpm/services/skills/selective_skill_deployer.py +211 -46
- claude_mpm/services/skills/skill_discovery_service.py +74 -4
- claude_mpm/services/skills_deployer.py +192 -70
- claude_mpm/services/socketio/dashboard_server.py +1 -0
- claude_mpm/services/socketio/event_normalizer.py +37 -6
- claude_mpm/services/socketio/handlers/hook.py +14 -7
- claude_mpm/services/socketio/server/core.py +262 -123
- claude_mpm/services/socketio/server/main.py +12 -4
- claude_mpm/skills/__init__.py +2 -1
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
- claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
- claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
- claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
- claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
- claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
- claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
- claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
- claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
- claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
- claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
- claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
- claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
- claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
- claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
- claude_mpm/skills/bundled/pm/mpm-session-pause/SKILL.md +170 -0
- claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
- claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
- claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
- claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
- claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
- claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
- claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
- claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/security-scanning.md +112 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/registry.py +295 -90
- claude_mpm/skills/skill_manager.py +98 -3
- claude_mpm/templates/.pre-commit-config.yaml +112 -0
- claude_mpm/utils/agent_dependency_loader.py +115 -4
- claude_mpm/utils/agent_filters.py +1 -1
- claude_mpm/utils/migration.py +4 -4
- claude_mpm/utils/robust_installer.py +86 -21
- claude_mpm-5.6.34.dist-info/METADATA +393 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/RECORD +486 -145
- claude_mpm-5.4.22.dist-info/METADATA +0 -996
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/WHEEL +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/entry_points.txt +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## Instructions
|
|
2
|
+
You are an assistant for answering questions that are being asked across the company. Every week, there are lots of questions that get asked across the company, and your goal is to try to summarize what those questions are. We want our company to be well-informed and on the same page, so your job is to produce a set of frequently asked questions that our employees are asking and attempt to answer them. Your singular job is to do two things:
|
|
3
|
+
|
|
4
|
+
- Find questions that are big sources of confusion for lots of employees at the company, generally about things that affect a large portion of the employee base
|
|
5
|
+
- Attempt to give a nice summarized answer to that question in order to minimize confusion.
|
|
6
|
+
|
|
7
|
+
Some examples of areas that may be interesting to folks: recent corporate events (fundraising, new executives, etc.), upcoming launches, hiring progress, changes to vision or focus, etc.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Tools Available
|
|
11
|
+
You should use the company's available tools, where communication and work happens. For most companies, it looks something like this:
|
|
12
|
+
- Slack: questions being asked across the company - it could be questions in response to posts with lots of responses, questions being asked with lots of reactions or thumbs up to show support, or anything else to show that a large number of employees want to ask the same things
|
|
13
|
+
- Email: emails with FAQs written directly in them can be a good source as well
|
|
14
|
+
- Documents: docs in places like Google Drive, linked on calendar events, etc. can also be a good source of FAQs, either directly added or inferred based on the contents of the doc
|
|
15
|
+
|
|
16
|
+
## Formatting
|
|
17
|
+
The formatting should be pretty basic:
|
|
18
|
+
|
|
19
|
+
- *Question*: [insert question - 1 sentence]
|
|
20
|
+
- *Answer*: [insert answer - 1-2 sentence]
|
|
21
|
+
|
|
22
|
+
## Guidance
|
|
23
|
+
Make sure you're being holistic in your questions. Don't focus too much on just the user in question or the team they are a part of, but try to capture the entire company. Try to be as holistic as you can in reading all the tools available, producing responses that are relevant to all at the company.
|
|
24
|
+
|
|
25
|
+
## Answer Guidelines
|
|
26
|
+
- Base answers on official company communications when possible
|
|
27
|
+
- If information is uncertain, indicate that clearly
|
|
28
|
+
- Link to authoritative sources (docs, announcements, emails)
|
|
29
|
+
- Keep tone professional but approachable
|
|
30
|
+
- Flag if a question requires executive input or official response
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Instructions
|
|
2
|
+
You are being asked to write internal company communication that doesn't fit into the standard formats (3P
|
|
3
|
+
updates, newsletters, or FAQs).
|
|
4
|
+
|
|
5
|
+
Before proceeding:
|
|
6
|
+
1. Ask the user about their target audience
|
|
7
|
+
2. Understand the communication's purpose
|
|
8
|
+
3. Clarify the desired tone (formal, casual, urgent, informational)
|
|
9
|
+
4. Confirm any specific formatting requirements
|
|
10
|
+
|
|
11
|
+
Use these general principles:
|
|
12
|
+
- Be clear and concise
|
|
13
|
+
- Use active voice
|
|
14
|
+
- Put the most important information first
|
|
15
|
+
- Include relevant links and references
|
|
16
|
+
- Match the company's communication style
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-builder
|
|
3
|
+
description: Create high-quality MCP servers that enable LLMs to effectively interact with external services. Use when building MCP integrations for APIs or services in Python (FastMCP) or Node/TypeScript (MCP SDK).
|
|
4
|
+
license: Complete terms in LICENSE.txt
|
|
5
|
+
progressive_disclosure:
|
|
6
|
+
entry_point:
|
|
7
|
+
summary: "Build agent-friendly MCP servers through research-driven design, thoughtful implementation, and evaluation-based iteration"
|
|
8
|
+
when_to_use: "When integrating external APIs/services via MCP protocol. Prioritize agent workflows over API wrappers, optimize for context efficiency, design actionable errors."
|
|
9
|
+
quick_start: "1. Research protocol & API docs 2. Plan agent-centric tools 3. Implement with validation 4. Create evaluations 5. Iterate based on agent feedback"
|
|
10
|
+
references:
|
|
11
|
+
- design_principles.md
|
|
12
|
+
- workflow.md
|
|
13
|
+
- mcp_best_practices.md
|
|
14
|
+
- python_mcp_server.md
|
|
15
|
+
- node_mcp_server.md
|
|
16
|
+
- evaluation.md
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# MCP Server Development Guide
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
Build high-quality MCP (Model Context Protocol) servers that enable LLMs to accomplish real-world tasks through well-designed tools. Quality is measured not by API coverage, but by how effectively agents can use your tools to complete realistic workflows.
|
|
24
|
+
|
|
25
|
+
**Core insight:** MCP servers expose tools for AI agents, not human users. Design for agent constraints (limited context, no visual UI, workflow-oriented) rather than human convenience.
|
|
26
|
+
|
|
27
|
+
## When to Use This Skill
|
|
28
|
+
|
|
29
|
+
Activate when:
|
|
30
|
+
- Building MCP servers for external API integration
|
|
31
|
+
- Adding tools to existing MCP servers
|
|
32
|
+
- Improving MCP server tool design for better agent usability
|
|
33
|
+
- Creating evaluations to test MCP server effectiveness
|
|
34
|
+
- Debugging why agents struggle with your MCP tools
|
|
35
|
+
|
|
36
|
+
**Language Support:**
|
|
37
|
+
- Python: FastMCP framework (recommended for rapid development)
|
|
38
|
+
- Node/TypeScript: MCP SDK (recommended for production services)
|
|
39
|
+
|
|
40
|
+
## The Iron Law
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
DESIGN FOR AGENTS, NOT HUMANS
|
|
44
|
+
|
|
45
|
+
Every tool must optimize for:
|
|
46
|
+
- Context efficiency (agents have limited tokens)
|
|
47
|
+
- Workflow completion (not just API calls)
|
|
48
|
+
- Actionable errors (guide agents to success)
|
|
49
|
+
- Natural task subdivision (how agents think)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If your tools are just thin API wrappers, you're violating the Iron Law.
|
|
53
|
+
|
|
54
|
+
## Core Principles
|
|
55
|
+
|
|
56
|
+
1. **Agent-Centric Design First**: Study design principles before coding. Tools should enable workflows, not mirror APIs.
|
|
57
|
+
|
|
58
|
+
2. **Research-Driven Planning**: Load MCP docs, SDK docs, and exhaustive API documentation before writing code.
|
|
59
|
+
|
|
60
|
+
3. **Evaluation-Based Iteration**: Create realistic evaluations early. Let agent feedback drive improvements.
|
|
61
|
+
|
|
62
|
+
4. **Context Optimization**: Every response token matters. Default to concise, offer detailed when needed.
|
|
63
|
+
|
|
64
|
+
5. **Actionable Errors**: Error messages should teach agents correct usage patterns.
|
|
65
|
+
|
|
66
|
+
## Quick Start
|
|
67
|
+
|
|
68
|
+
### Phase 1: Research and Planning (40% of effort)
|
|
69
|
+
1. **Study Design Principles**: Load [design_principles.md](./reference/design_principles.md) to understand agent-centric design
|
|
70
|
+
2. **Load Protocol Docs**: Fetch `https://modelcontextprotocol.io/llms-full.txt` for MCP specification
|
|
71
|
+
3. **Study SDK Docs**: Load Python or TypeScript SDK documentation from GitHub
|
|
72
|
+
4. **Study API Exhaustively**: Read ALL API documentation, endpoints, authentication, rate limits
|
|
73
|
+
5. **Create Implementation Plan**: Define tools, shared utilities, pagination strategy, error handling
|
|
74
|
+
|
|
75
|
+
See [workflow.md](./reference/workflow.md) for complete Phase 1 steps.
|
|
76
|
+
|
|
77
|
+
### Phase 2: Implementation (30% of effort)
|
|
78
|
+
1. **Setup Project**: Create structure following language-specific guide
|
|
79
|
+
2. **Build Shared Utilities**: API helpers, error handlers, formatters BEFORE tools
|
|
80
|
+
3. **Implement Tools**: Use Pydantic (Python) or Zod (TypeScript) for validation
|
|
81
|
+
4. **Follow Best Practices**: Load language-specific guide for patterns
|
|
82
|
+
|
|
83
|
+
See [workflow.md](./reference/workflow.md) for complete Phase 2 steps and language guides.
|
|
84
|
+
|
|
85
|
+
### Phase 3: Review and Refine (15% of effort)
|
|
86
|
+
1. **Code Quality Review**: Check DRY, composability, consistency, type safety
|
|
87
|
+
2. **Test Build**: Verify syntax, imports, build process
|
|
88
|
+
3. **Quality Checklist**: Use language-specific checklist
|
|
89
|
+
|
|
90
|
+
See [workflow.md](./reference/workflow.md) for complete Phase 3 steps.
|
|
91
|
+
|
|
92
|
+
### Phase 4: Create Evaluations (15% of effort)
|
|
93
|
+
1. **Understand Purpose**: Evaluations test if agents can answer realistic questions using your tools
|
|
94
|
+
2. **Create 10 Questions**: Complex, read-only, independent, verifiable questions
|
|
95
|
+
3. **Verify Answers**: Solve yourself to ensure stability and correctness
|
|
96
|
+
4. **Run Evaluation**: Use provided scripts to test agent effectiveness
|
|
97
|
+
|
|
98
|
+
See [evaluation.md](./reference/evaluation.md) for complete evaluation guidelines.
|
|
99
|
+
|
|
100
|
+
## Navigation
|
|
101
|
+
|
|
102
|
+
### Core Design and Workflow
|
|
103
|
+
- **[🎯 Design Principles](./reference/design_principles.md)** - Agent-centric design philosophy: workflows over APIs, context optimization, actionable errors, natural task subdivision. Read FIRST before implementation.
|
|
104
|
+
|
|
105
|
+
- **[🔄 Complete Workflow](./reference/workflow.md)** - Detailed 4-phase development process with step-by-step instructions, decision trees, and when to load each reference file.
|
|
106
|
+
|
|
107
|
+
### Universal MCP Guidelines
|
|
108
|
+
- **[📋 MCP Best Practices](./reference/mcp_best_practices.md)** - Naming conventions, response formats, pagination, character limits, security, tool annotations, error handling. Applies to all MCP servers.
|
|
109
|
+
|
|
110
|
+
### Language-Specific Implementation
|
|
111
|
+
- **[🐍 Python Implementation](./reference/python_mcp_server.md)** - FastMCP patterns, Pydantic validation, async/await, complete examples, quality checklist. Load during Phase 2 for Python servers.
|
|
112
|
+
|
|
113
|
+
- **[⚡ TypeScript Implementation](./reference/node_mcp_server.md)** - MCP SDK patterns, Zod validation, project structure, complete examples, quality checklist. Load during Phase 2 for TypeScript servers.
|
|
114
|
+
|
|
115
|
+
### Evaluation and Testing
|
|
116
|
+
- **[✅ Evaluation Guide](./reference/evaluation.md)** - Creating realistic questions, answer verification, XML format, running evaluations, interpreting results. Load during Phase 4.
|
|
117
|
+
|
|
118
|
+
## Key Reminders
|
|
119
|
+
|
|
120
|
+
- **Research First**: Spend 40% of time researching before coding
|
|
121
|
+
- **Agent-Centric**: Design for AI workflows, not API completeness
|
|
122
|
+
- **Context Efficient**: Every token counts - default concise, offer detailed
|
|
123
|
+
- **Actionable Errors**: Guide agents to correct usage
|
|
124
|
+
- **Shared Utilities**: Extract common code - avoid duplication
|
|
125
|
+
- **Evaluation-Driven**: Create evals early, iterate based on feedback
|
|
126
|
+
- **MCP Servers Block**: Never run servers directly - use evaluation harness or tmux
|
|
127
|
+
|
|
128
|
+
## Red Flags - STOP
|
|
129
|
+
|
|
130
|
+
If you catch yourself:
|
|
131
|
+
- "Just wrapping these API endpoints directly"
|
|
132
|
+
- "Returning all available data fields"
|
|
133
|
+
- "Error message just says what failed" (not how to fix)
|
|
134
|
+
- Starting implementation without reading design principles
|
|
135
|
+
- Coding before loading MCP protocol documentation
|
|
136
|
+
- Creating tools without knowing agent use cases
|
|
137
|
+
- Skipping evaluation creation
|
|
138
|
+
- Running `python server.py` directly (will hang forever)
|
|
139
|
+
|
|
140
|
+
**ALL of these mean: STOP. Return to design principles and workflow.**
|
|
141
|
+
|
|
142
|
+
## Integration with Other Skills
|
|
143
|
+
|
|
144
|
+
- **systematic-debugging**: Debug MCP server issues methodically
|
|
145
|
+
- **test-driven-development**: Create failing tests before implementation
|
|
146
|
+
- **verification-before-completion**: Verify build succeeds before claiming completion
|
|
147
|
+
- **defense-in-depth**: Add input validation at multiple layers
|
|
148
|
+
|
|
149
|
+
## Real-World Impact
|
|
150
|
+
|
|
151
|
+
From MCP server development experience:
|
|
152
|
+
- Well-designed servers: 80-90% task completion rate by agents
|
|
153
|
+
- API wrapper approach: 30-40% task completion rate
|
|
154
|
+
- Context-optimized responses: 3x more information in same token budget
|
|
155
|
+
- Actionable errors: 60% reduction in agent retry attempts
|
|
156
|
+
- Evaluation-driven iteration: 2-3x improvement in agent success rate
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
**Remember:** The quality of an MCP server is measured by how well it enables LLMs to accomplish realistic tasks, not by how comprehensively it wraps an API.
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
# Agent-Centric Design Principles for MCP Servers
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Before implementing any MCP server, understand how to design tools for AI agents. Agents are fundamentally different users than humans - they have limited context, no visual UI, and think in terms of workflows rather than API calls.
|
|
6
|
+
|
|
7
|
+
**Core Philosophy:** Build thoughtful, high-impact workflow tools, not API endpoint wrappers.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Why Agent-Centric Design Matters
|
|
12
|
+
|
|
13
|
+
MCP servers expose tools that AI agents use to accomplish tasks. The quality of your server is measured by how effectively agents complete realistic workflows, not by API coverage.
|
|
14
|
+
|
|
15
|
+
**Key Differences from Human-Oriented Design:**
|
|
16
|
+
|
|
17
|
+
| Human Users | AI Agents |
|
|
18
|
+
|-------------|-----------|
|
|
19
|
+
| Visual UI navigation | No visual interface |
|
|
20
|
+
| Unlimited attention | Limited context window |
|
|
21
|
+
| Can ask clarifying questions | Must work with available information |
|
|
22
|
+
| Tolerate verbose responses | Need concise, high-signal data |
|
|
23
|
+
| Learn from documentation | Learn from tool descriptions and errors |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## The Five Design Principles
|
|
28
|
+
|
|
29
|
+
### 1. Build for Workflows, Not Just API Endpoints
|
|
30
|
+
|
|
31
|
+
**The Problem:**
|
|
32
|
+
Directly wrapping API endpoints creates tools that are too granular for agents to use effectively. Agents must make many calls to accomplish simple tasks.
|
|
33
|
+
|
|
34
|
+
**The Solution:**
|
|
35
|
+
Consolidate related operations into workflow-oriented tools that accomplish complete tasks.
|
|
36
|
+
|
|
37
|
+
**Examples:**
|
|
38
|
+
|
|
39
|
+
❌ **Poor Design (API Wrapper):**
|
|
40
|
+
```
|
|
41
|
+
check_calendar_availability(date, time)
|
|
42
|
+
create_calendar_event(date, time, title, description)
|
|
43
|
+
send_notification(user_id, message)
|
|
44
|
+
```
|
|
45
|
+
Agent must: Check availability → Create event → Send notification (3 separate calls)
|
|
46
|
+
|
|
47
|
+
✅ **Good Design (Workflow-Oriented):**
|
|
48
|
+
```
|
|
49
|
+
schedule_event(date, time, title, description, attendees)
|
|
50
|
+
- Checks availability automatically
|
|
51
|
+
- Creates event if slot is free
|
|
52
|
+
- Notifies attendees
|
|
53
|
+
- Returns single consolidated result
|
|
54
|
+
```
|
|
55
|
+
Agent makes 1 call to complete the workflow.
|
|
56
|
+
|
|
57
|
+
**Guidelines:**
|
|
58
|
+
- Identify common multi-step workflows users perform
|
|
59
|
+
- Combine related operations that always happen together
|
|
60
|
+
- Provide atomic operations for complex use cases
|
|
61
|
+
- Let tools handle internal coordination and error recovery
|
|
62
|
+
|
|
63
|
+
### 2. Optimize for Limited Context
|
|
64
|
+
|
|
65
|
+
**The Problem:**
|
|
66
|
+
Agents have constrained context windows. Verbose responses waste precious tokens and reduce what agents can accomplish.
|
|
67
|
+
|
|
68
|
+
**The Solution:**
|
|
69
|
+
Return high-signal information by default. Provide options for detail levels.
|
|
70
|
+
|
|
71
|
+
**Examples:**
|
|
72
|
+
|
|
73
|
+
❌ **Poor Design (Information Dump):**
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"user": {
|
|
77
|
+
"id": "U123456",
|
|
78
|
+
"name": "John Doe",
|
|
79
|
+
"email": "john@example.com",
|
|
80
|
+
"profile": {
|
|
81
|
+
"avatar_urls": {
|
|
82
|
+
"small": "https://...",
|
|
83
|
+
"medium": "https://...",
|
|
84
|
+
"large": "https://...",
|
|
85
|
+
"xlarge": "https://..."
|
|
86
|
+
},
|
|
87
|
+
"bio": "Lorem ipsum...",
|
|
88
|
+
"location": "San Francisco",
|
|
89
|
+
"timezone": "America/Los_Angeles",
|
|
90
|
+
"created_at": 1609459200,
|
|
91
|
+
"updated_at": 1609459200,
|
|
92
|
+
"preferences": {...},
|
|
93
|
+
"settings": {...}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
15+ fields returned when agent only needs name and email.
|
|
99
|
+
|
|
100
|
+
✅ **Good Design (High-Signal Default):**
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"user": {
|
|
104
|
+
"id": "U123456",
|
|
105
|
+
"name": "John Doe",
|
|
106
|
+
"email": "john@example.com"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
Concise by default. Add `detail_level="full"` parameter for complete data when needed.
|
|
111
|
+
|
|
112
|
+
**Guidelines:**
|
|
113
|
+
- Default to concise responses with essential information
|
|
114
|
+
- Provide `response_format` parameter: "concise" vs "detailed"
|
|
115
|
+
- Use human-readable identifiers (names) over technical codes (IDs) when possible
|
|
116
|
+
- Support Markdown for human readability, JSON for programmatic processing
|
|
117
|
+
- Implement character limits (typically 25,000) with truncation guidance
|
|
118
|
+
- Respect pagination limits strictly - never load all results
|
|
119
|
+
|
|
120
|
+
### 3. Design Actionable Error Messages
|
|
121
|
+
|
|
122
|
+
**The Problem:**
|
|
123
|
+
Generic error messages tell agents what failed but not how to fix it. Agents get stuck or waste attempts guessing.
|
|
124
|
+
|
|
125
|
+
**The Solution:**
|
|
126
|
+
Every error should guide agents toward correct usage with specific next steps.
|
|
127
|
+
|
|
128
|
+
**Examples:**
|
|
129
|
+
|
|
130
|
+
❌ **Poor Design (Diagnostic Only):**
|
|
131
|
+
```
|
|
132
|
+
"Error: Invalid parameters"
|
|
133
|
+
"Error: Request failed"
|
|
134
|
+
"Error: Too many results"
|
|
135
|
+
```
|
|
136
|
+
Tells what failed, not how to fix it.
|
|
137
|
+
|
|
138
|
+
✅ **Good Design (Actionable Guidance):**
|
|
139
|
+
```
|
|
140
|
+
"Error: Query too broad - returned 1,247 results. Try adding filters:
|
|
141
|
+
use 'team:marketing' to filter by team, or 'status:active'
|
|
142
|
+
to filter by status. Or use limit=50 with offset for pagination."
|
|
143
|
+
|
|
144
|
+
"Error: Date format invalid. Expected YYYY-MM-DD (e.g., '2024-01-15'),
|
|
145
|
+
received '01/15/2024'. Please use ISO format."
|
|
146
|
+
|
|
147
|
+
"Error: Missing required field 'project_id'. To find project IDs,
|
|
148
|
+
use list_projects(team='your-team') first."
|
|
149
|
+
```
|
|
150
|
+
Each error teaches correct usage patterns.
|
|
151
|
+
|
|
152
|
+
**Guidelines:**
|
|
153
|
+
- Explain what's wrong and why
|
|
154
|
+
- Suggest specific fixes or alternative parameters
|
|
155
|
+
- Reference other tools when needed ("use X tool to find Y first")
|
|
156
|
+
- Include examples of correct usage in error messages
|
|
157
|
+
- Guide agents through multi-step corrections
|
|
158
|
+
- Make errors educational, not just diagnostic
|
|
159
|
+
|
|
160
|
+
### 4. Follow Natural Task Subdivisions
|
|
161
|
+
|
|
162
|
+
**The Problem:**
|
|
163
|
+
Tool organization that mirrors API structure doesn't match how agents think about tasks.
|
|
164
|
+
|
|
165
|
+
**The Solution:**
|
|
166
|
+
Organize and name tools around natural task categories that align with agent reasoning.
|
|
167
|
+
|
|
168
|
+
**Examples:**
|
|
169
|
+
|
|
170
|
+
❌ **Poor Design (API Structure):**
|
|
171
|
+
```
|
|
172
|
+
api_users_get(id)
|
|
173
|
+
api_users_list(filters)
|
|
174
|
+
api_users_create(data)
|
|
175
|
+
api_projects_get(id)
|
|
176
|
+
api_projects_list(filters)
|
|
177
|
+
```
|
|
178
|
+
Tool names reflect internal API, not user tasks.
|
|
179
|
+
|
|
180
|
+
✅ **Good Design (Task-Oriented):**
|
|
181
|
+
```
|
|
182
|
+
search_users(query, team, status)
|
|
183
|
+
get_user_details(user_id)
|
|
184
|
+
create_user_account(name, email, team)
|
|
185
|
+
|
|
186
|
+
find_projects(name, status, team)
|
|
187
|
+
get_project_info(project_id)
|
|
188
|
+
create_project(name, team, deadline)
|
|
189
|
+
```
|
|
190
|
+
Tool names reflect what agents want to accomplish.
|
|
191
|
+
|
|
192
|
+
**Guidelines:**
|
|
193
|
+
- Use action verbs that describe tasks: search, find, create, update, analyze
|
|
194
|
+
- Group related tools with consistent prefixes for discoverability
|
|
195
|
+
- Include service prefix to prevent conflicts: `slack_send_message` not `send_message`
|
|
196
|
+
- Name tools how humans would describe the task
|
|
197
|
+
- Use consistent naming patterns within your server
|
|
198
|
+
|
|
199
|
+
### 5. Use Evaluation-Driven Development
|
|
200
|
+
|
|
201
|
+
**The Problem:**
|
|
202
|
+
Building without testing against realistic agent use cases leads to tools that seem correct but fail in practice.
|
|
203
|
+
|
|
204
|
+
**The Solution:**
|
|
205
|
+
Create evaluation scenarios early and iterate based on actual agent performance.
|
|
206
|
+
|
|
207
|
+
**Examples:**
|
|
208
|
+
|
|
209
|
+
**Evaluation-First Workflow:**
|
|
210
|
+
1. **Before Implementation**: Define 10 realistic questions agents should answer
|
|
211
|
+
2. **Prototype Quickly**: Build minimal tool set to attempt evaluations
|
|
212
|
+
3. **Run Evaluations**: See where agents struggle
|
|
213
|
+
4. **Iterate**: Improve tools based on agent feedback
|
|
214
|
+
5. **Repeat**: Until agents successfully complete 80%+ of evaluations
|
|
215
|
+
|
|
216
|
+
**Common Discoveries from Evaluations:**
|
|
217
|
+
- Agents couldn't find information → Add search/filter tools
|
|
218
|
+
- Agents made too many calls → Consolidate into workflow tools
|
|
219
|
+
- Agents got confused → Improve tool descriptions and error messages
|
|
220
|
+
- Agents ran out of context → Reduce response verbosity
|
|
221
|
+
- Agents used tools incorrectly → Add actionable error guidance
|
|
222
|
+
|
|
223
|
+
**Guidelines:**
|
|
224
|
+
- Write evaluations before implementing all tools
|
|
225
|
+
- Use realistic, complex questions requiring multiple tool calls
|
|
226
|
+
- Let agent failures drive tool design decisions
|
|
227
|
+
- Iterate based on evaluation results, not assumptions
|
|
228
|
+
- Aim for 80%+ agent success rate on evaluations
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Applying These Principles: A Case Study
|
|
233
|
+
|
|
234
|
+
**Scenario:** Building an MCP server for a project management API.
|
|
235
|
+
|
|
236
|
+
### ❌ API Wrapper Approach (Poor)
|
|
237
|
+
|
|
238
|
+
```python
|
|
239
|
+
@mcp.tool()
|
|
240
|
+
async def get_task(task_id: str):
|
|
241
|
+
"""Get a task by ID."""
|
|
242
|
+
return api.tasks.get(task_id)
|
|
243
|
+
|
|
244
|
+
@mcp.tool()
|
|
245
|
+
async def list_tasks(project_id: str):
|
|
246
|
+
"""List all tasks in a project."""
|
|
247
|
+
return api.tasks.list(project_id)
|
|
248
|
+
|
|
249
|
+
@mcp.tool()
|
|
250
|
+
async def get_user(user_id: str):
|
|
251
|
+
"""Get user by ID."""
|
|
252
|
+
return api.users.get(user_id)
|
|
253
|
+
|
|
254
|
+
@mcp.tool()
|
|
255
|
+
async def update_task_status(task_id: str, status: str):
|
|
256
|
+
"""Update task status."""
|
|
257
|
+
return api.tasks.update(task_id, {"status": status})
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Problems:**
|
|
261
|
+
- Too granular - agent needs many calls for simple workflows
|
|
262
|
+
- Returns all fields - wastes context on unnecessary data
|
|
263
|
+
- No guidance on valid statuses or error handling
|
|
264
|
+
- Agent must know IDs before making calls
|
|
265
|
+
- Mirrors API structure, not task structure
|
|
266
|
+
|
|
267
|
+
### ✅ Agent-Centric Approach (Good)
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
@mcp.tool()
|
|
271
|
+
async def search_tasks(
|
|
272
|
+
query: str,
|
|
273
|
+
project: Optional[str] = None,
|
|
274
|
+
status: Optional[str] = None,
|
|
275
|
+
assignee: Optional[str] = None,
|
|
276
|
+
limit: int = 20,
|
|
277
|
+
response_format: str = "markdown"
|
|
278
|
+
) -> str:
|
|
279
|
+
"""Search for tasks across projects with flexible filtering.
|
|
280
|
+
|
|
281
|
+
Finds tasks by name, description, or tags. Returns concise results
|
|
282
|
+
by default - use response_format='json' for full data.
|
|
283
|
+
|
|
284
|
+
Common workflows:
|
|
285
|
+
- Find all bugs: search_tasks(query="bug", status="open")
|
|
286
|
+
- Find your tasks: search_tasks(assignee="your-name")
|
|
287
|
+
- Find by project: search_tasks(project="website-redesign")
|
|
288
|
+
|
|
289
|
+
Error guidance:
|
|
290
|
+
- If too many results: Add more filters or use limit parameter
|
|
291
|
+
- If no results: Try broader query or check project name spelling
|
|
292
|
+
- To find project names: Use list_projects() first
|
|
293
|
+
"""
|
|
294
|
+
# Implementation with:
|
|
295
|
+
# - Concise markdown by default
|
|
296
|
+
# - Full JSON if requested
|
|
297
|
+
# - Actionable errors with examples
|
|
298
|
+
# - Character limit enforcement
|
|
299
|
+
|
|
300
|
+
@mcp.tool()
|
|
301
|
+
async def complete_task(
|
|
302
|
+
task_id: str,
|
|
303
|
+
completion_note: Optional[str] = None,
|
|
304
|
+
notify_team: bool = True
|
|
305
|
+
) -> str:
|
|
306
|
+
"""Mark a task complete and optionally notify the team.
|
|
307
|
+
|
|
308
|
+
This is a workflow tool that:
|
|
309
|
+
1. Validates task can be completed (not blocked, has assignee)
|
|
310
|
+
2. Updates task status to 'completed'
|
|
311
|
+
3. Adds completion note to task history
|
|
312
|
+
4. Sends notifications to team members (if notify_team=True)
|
|
313
|
+
5. Updates project progress metrics
|
|
314
|
+
|
|
315
|
+
Returns: Success message with task name and updated project status
|
|
316
|
+
|
|
317
|
+
Error guidance:
|
|
318
|
+
- "Task is blocked": Lists blocking tasks with IDs
|
|
319
|
+
- "Task has no assignee": Suggests using assign_task(task_id, user)
|
|
320
|
+
- "Invalid task_id": Suggests using search_tasks() to find task
|
|
321
|
+
"""
|
|
322
|
+
# Implementation handles entire workflow
|
|
323
|
+
|
|
324
|
+
@mcp.tool()
|
|
325
|
+
async def get_project_status(
|
|
326
|
+
project_name: str,
|
|
327
|
+
include_tasks: bool = False
|
|
328
|
+
) -> str:
|
|
329
|
+
"""Get project overview with completion metrics.
|
|
330
|
+
|
|
331
|
+
Returns concise summary by default:
|
|
332
|
+
- Total tasks, completed, in-progress, blocked
|
|
333
|
+
- Recent activity
|
|
334
|
+
- Team members
|
|
335
|
+
- Due date and status
|
|
336
|
+
|
|
337
|
+
Use include_tasks=True to also list all tasks (uses more context).
|
|
338
|
+
|
|
339
|
+
Error guidance:
|
|
340
|
+
- "Project not found": Lists similar project names
|
|
341
|
+
- "Access denied": Explains permission requirements
|
|
342
|
+
"""
|
|
343
|
+
# Returns high-signal summary
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Improvements:**
|
|
347
|
+
- **Workflow-oriented**: `complete_task` handles entire workflow, not just status update
|
|
348
|
+
- **Context-efficient**: Concise by default, detailed on request
|
|
349
|
+
- **Actionable errors**: Guides agents to correct usage
|
|
350
|
+
- **Natural naming**: Search, complete, get_status (task-oriented, not API-oriented)
|
|
351
|
+
- **Flexible search**: One tool handles multiple search scenarios
|
|
352
|
+
- **Human-readable**: Uses project names, not just IDs
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Pre-Implementation Checklist
|
|
357
|
+
|
|
358
|
+
Before writing any code, ensure you understand:
|
|
359
|
+
|
|
360
|
+
- [ ] What workflows will agents actually need to accomplish?
|
|
361
|
+
- [ ] What's the minimum information needed for each workflow?
|
|
362
|
+
- [ ] What errors will agents encounter and how can I guide them?
|
|
363
|
+
- [ ] How can I consolidate related operations into single tools?
|
|
364
|
+
- [ ] What evaluation scenarios will test if this works?
|
|
365
|
+
- [ ] Are tool names task-oriented or API-oriented?
|
|
366
|
+
- [ ] Do tools default to concise responses?
|
|
367
|
+
- [ ] Do errors teach correct usage?
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Common Anti-Patterns to Avoid
|
|
372
|
+
|
|
373
|
+
### Anti-Pattern 1: CRUD Over Everything
|
|
374
|
+
Creating separate create/read/update/delete tools for every resource.
|
|
375
|
+
|
|
376
|
+
**Instead:** Create workflow tools that combine operations intelligently.
|
|
377
|
+
|
|
378
|
+
### Anti-Pattern 2: The Everything Tool
|
|
379
|
+
One tool that takes 15+ parameters and tries to do everything.
|
|
380
|
+
|
|
381
|
+
**Instead:** Multiple focused tools, each solving one clear workflow.
|
|
382
|
+
|
|
383
|
+
### Anti-Pattern 3: ID-Only Interfaces
|
|
384
|
+
Requiring agents to have IDs before calling any tools.
|
|
385
|
+
|
|
386
|
+
**Instead:** Search/find tools that work with human-readable names.
|
|
387
|
+
|
|
388
|
+
### Anti-Pattern 4: Silent Truncation
|
|
389
|
+
Cutting off results without telling the agent.
|
|
390
|
+
|
|
391
|
+
**Instead:** Clear truncation messages with guidance on filtering.
|
|
392
|
+
|
|
393
|
+
### Anti-Pattern 5: Error Code Responses
|
|
394
|
+
Returning `ERR_401`, `ERR_404` without explanation.
|
|
395
|
+
|
|
396
|
+
**Instead:** Actionable error messages with specific next steps.
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Next Steps
|
|
401
|
+
|
|
402
|
+
After understanding these principles:
|
|
403
|
+
|
|
404
|
+
1. **Review Real Examples**: Look at well-designed MCP servers in the wild
|
|
405
|
+
2. **Start Planning**: Create your implementation plan with these principles in mind
|
|
406
|
+
3. **Load Workflow Guide**: See [workflow.md](./workflow.md) for step-by-step implementation
|
|
407
|
+
4. **Reference Best Practices**: Use [mcp_best_practices.md](./mcp_best_practices.md) for technical details
|
|
408
|
+
5. **Create Evaluations Early**: Don't wait until implementation is complete
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
**Remember:** Agents are your users. Design for their constraints, optimize for their workflows, and guide them to success through every interaction.
|