zeus-dev-helper-mcp 0.6.0__tar.gz

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.
Files changed (58) hide show
  1. zeus_dev_helper_mcp-0.6.0/.gitignore +12 -0
  2. zeus_dev_helper_mcp-0.6.0/AGENTS.md +36 -0
  3. zeus_dev_helper_mcp-0.6.0/CHANGELOG.md +69 -0
  4. zeus_dev_helper_mcp-0.6.0/LICENSE +5 -0
  5. zeus_dev_helper_mcp-0.6.0/PKG-INFO +278 -0
  6. zeus_dev_helper_mcp-0.6.0/README.md +245 -0
  7. zeus_dev_helper_mcp-0.6.0/docs/DAY-IN-THE-LIFE.md +171 -0
  8. zeus_dev_helper_mcp-0.6.0/docs/DESIGN-0.6.md +135 -0
  9. zeus_dev_helper_mcp-0.6.0/docs/DESIGN.md +164 -0
  10. zeus_dev_helper_mcp-0.6.0/docs/PLAN-mcp-quality-0.7.md +333 -0
  11. zeus_dev_helper_mcp-0.6.0/docs/PLAN-runtime-coach-0.6.md +362 -0
  12. zeus_dev_helper_mcp-0.6.0/docs/TOOLS.md +281 -0
  13. zeus_dev_helper_mcp-0.6.0/guides/LIST_OF_PROMPT_SAMPLES.md +488 -0
  14. zeus_dev_helper_mcp-0.6.0/pyproject.toml +61 -0
  15. zeus_dev_helper_mcp-0.6.0/server.json +85 -0
  16. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/__init__.py +3 -0
  17. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/__main__.py +4 -0
  18. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/bootstrap.py +179 -0
  19. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/cache.py +129 -0
  20. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/catalog.py +216 -0
  21. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/checklist.py +172 -0
  22. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/compat.py +269 -0
  23. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/config.py +156 -0
  24. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/config_lint.py +310 -0
  25. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/contract.py +330 -0
  26. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/diagnose.py +290 -0
  27. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/docs_links.py +46 -0
  28. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/explain.py +327 -0
  29. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/handoff.py +225 -0
  30. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/hooks.py +125 -0
  31. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/motion.py +176 -0
  32. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/prereqs.py +64 -0
  33. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/readiness.py +594 -0
  34. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/scaffold.py +333 -0
  35. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/server.py +738 -0
  36. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/smoke.py +450 -0
  37. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/support.py +246 -0
  38. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/surface.py +144 -0
  39. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/travel.py +130 -0
  40. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/verbs.py +768 -0
  41. zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/walkthrough.py +121 -0
  42. zeus_dev_helper_mcp-0.6.0/tests/test_cache.py +47 -0
  43. zeus_dev_helper_mcp-0.6.0/tests/test_catalog.py +51 -0
  44. zeus_dev_helper_mcp-0.6.0/tests/test_compat.py +55 -0
  45. zeus_dev_helper_mcp-0.6.0/tests/test_config_lint.py +102 -0
  46. zeus_dev_helper_mcp-0.6.0/tests/test_contract.py +107 -0
  47. zeus_dev_helper_mcp-0.6.0/tests/test_describe_scope.py +42 -0
  48. zeus_dev_helper_mcp-0.6.0/tests/test_diagnose.py +78 -0
  49. zeus_dev_helper_mcp-0.6.0/tests/test_distribution.py +53 -0
  50. zeus_dev_helper_mcp-0.6.0/tests/test_handoff_travel_explain.py +159 -0
  51. zeus_dev_helper_mcp-0.6.0/tests/test_hooks.py +45 -0
  52. zeus_dev_helper_mcp-0.6.0/tests/test_motion.py +44 -0
  53. zeus_dev_helper_mcp-0.6.0/tests/test_readiness.py +44 -0
  54. zeus_dev_helper_mcp-0.6.0/tests/test_scaffold.py +35 -0
  55. zeus_dev_helper_mcp-0.6.0/tests/test_server_import.py +11 -0
  56. zeus_dev_helper_mcp-0.6.0/tests/test_support.py +83 -0
  57. zeus_dev_helper_mcp-0.6.0/tests/test_surface.py +63 -0
  58. zeus_dev_helper_mcp-0.6.0/tests/test_verbs.py +123 -0
@@ -0,0 +1,12 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .ruff_cache/
5
+ .venv/
6
+ venv/
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .DS_Store
11
+ .mypy_cache/
12
+ .venv/
@@ -0,0 +1,36 @@
1
+ # AGENTS — Developer Helper MCP
2
+
3
+ **Mission:** Get a coding agent + human to a **first green** Zeus Client app turn.
4
+
5
+ ## Load order
6
+
7
+ 1. This file
8
+ 2. [docs/TOOLS.md](docs/TOOLS.md) — Helper tool catalog (when / args / side effects / do-not)
9
+ 3. [docs.koten.ai](https://docs.koten.ai/) (published docs; site may be placeholder while wiring)
10
+ 4. [agent-index.yaml](https://github.com/koten-ai/koten_docs/blob/zeus-v1.0.0/agent-index.yaml) (machine index in source repo)
11
+ 5. [For AI agents](https://docs.koten.ai/zeus-client/for-ai-agents)
12
+ 6. [Using Zeus Client](https://docs.koten.ai/zeus-client/using-zeus-client)
13
+ 7. [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) for templates
14
+
15
+ ## Hard constraints
16
+
17
+ - Public API **:8080** only (never Hub **:9091** from app path)
18
+ - Never invent `contract_hash`
19
+ - Catalogs: live stamp preferred; `fetch_chat_request` is **template only**
20
+ - No secrets in tool results or checklist evidence
21
+
22
+ ## Tools to use first
23
+
24
+ `doctor` → `start_project` → `list_catalog_modes` → `fetch_chat_request` → `explain` → `recommend_surface` → `next_step`
25
+
26
+ Coach (0.6): `recommend_surface` / `explain_verb` / `lint_verb_args` / `suggest_verb_call` / `diagnose_error` / `compat_check` / `bind_contract` / `lint_runtime_config` / `describe_scope` / `recommend_motion` / `support_pack_from_turn` / `suggest_hooks` / `semantic_cache_status`. Does **not** rewrite V1 `scaffold_app` / `smoke_test_agent`. Semantic cache stays **off**.
27
+
28
+ Travel sample: `use_sample` / `travel_golden_path` (set `DEMO_TRAVEL_SAMPLE_DIR` if cloned).
29
+
30
+ After 5.1+5.2 green: `recommend_data_plane_mcp`, `emit_mcp_config`, `handoff_to_multi` — **handoffs only**.
31
+
32
+ Design freeze: `docs/DESIGN.md`. Tool catalog: `docs/TOOLS.md`. Glossary: `explain(topic)`.
33
+
34
+ ## Not this MCP
35
+
36
+ Data-plane tools, Hub admin mutations, multi-agent jobs (ZJA).
@@ -0,0 +1,69 @@
1
+ # Changelog
2
+
3
+ ## 0.6.0
4
+
5
+ ### Fixed
6
+ - Server import on **mcp 2.x** (`FastMCP` renamed to `MCPServer`). Supports 1.x and 2.x; pin is now `mcp>=1.8.0,<3`.
7
+ - Grok host install: `grok mcp add` must pass `--` before `python -m` (otherwise Grok errors `unexpected argument '-m'`), and `command` must be the repo venv interpreter so the TUI can spawn the server without an activated venv.
8
+
9
+ ### Added
10
+ - **ZDH-18** Surface router + V2 verb coach: `recommend_surface`, `explain_verb`, `lint_verb_args`, `suggest_verb_call`
11
+ - **ZDH-19** `diagnose_error` ErrorCode / Zeus `error_class` plus 0.7 failure classes (`invalid_req_id`, `composite_req_id`, `pipeline_not_on_direct`, …); Detective URL templates only
12
+ - `explain` topics: `zeus_runtime`, `turn_result`, `cheap_path`, `semantic_cache`, `req_id_policy`, `trace_class`, `direct`, `typeahead`, `pipeline`
13
+ - `docs/DESIGN-0.6.md` increment (frozen `docs/DESIGN.md` pointer only)
14
+ - Optional extra `[agent]` floor `kotenai-zeus-client>=2.3.0`
15
+ - **ZDH-21** `compat_check` — `/version` + `/healthz` on `:8080`; static 0.7 feature gates (not a COMPAT matrix row)
16
+ - **ZDH-22** `lint_chat_request`, `bind_contract`, `explain_hash_boundary`, `catalog_diff` — stamp extract only; never compute production hashes
17
+ - **ZDH-24** `lint_runtime_config` + `lint_app_code` — env names not values; secrets redacted; V1 / hash-literal / Dockerfile smells
18
+ - **ZDH-23** `explain_req_id_policy`, `detective_links`, `support_pack_from_turn` — URL templates + redacted ids/hops only
19
+ - **ZDH-25** `describe_scope` — entity types + field names; no document samples
20
+ - **ZDH-26** `recommend_motion` — 13 Zeus motions; does not generate a chat_request
21
+ - **ZDH-27** `suggest_hooks` — tenant pin / deny pipeline / output_schema / OCR snippets (not executed)
22
+ - **ZDH-28** `semantic_cache_status` — default off; optional `/v2/agent_memory/status` probe
23
+ - Helper tool catalog: [`docs/TOOLS.md`](docs/TOOLS.md) (when / args / side effects / do-not; not a Zeus OpenAPI dump)
24
+ - PyPI + official MCP Registry distribution: `server.json` (`io.github.koten-ai/zeus-dev-helper`), README `mcp-name` marker, tag-driven [`.github/workflows/release.yml`](.github/workflows/release.yml)
25
+
26
+ ### Notes
27
+ - V1 `scaffold_app` / `smoke_test_agent` are **not** rewritten in this release ([ZDH-17](https://kotenai.atlassian.net/browse/ZDH-17) Cancelled)
28
+ - Bootstrap/auth/catalog probes stay on existing `/v1` ([ZDH-20](https://kotenai.atlassian.net/browse/ZDH-20) Cancelled)
29
+ - Verb tools never POST; they explain, lint, and draft
30
+
31
+ ## 0.5.0
32
+
33
+ ### Added
34
+ - **ZDH-2** Product design freeze: `docs/DESIGN.md` (tool catalog, checklist, boundaries, metrics)
35
+ - **ZDH-10** `travel_golden_path` + richer `use_sample` layout validation / README snippet for demo_travel_sample
36
+ - **ZDH-11** `handoff_to_multi` + gated `start_project(goal=multi|sample=yelp)` until single-agent smokes green
37
+ - **ZDH-12** `recommend_data_plane_mcp` + `emit_mcp_config` (scope-bound, read-only placeholder fragment)
38
+ - **ZDH-13** Expanded `explain` glossary topics (≥30) with docs deep-links + aliases
39
+ - Local privacy-safe metrics: `helper_metrics` + auto events on start/smoke green
40
+ - Post-green hints on `next_step` after 5.1 + 5.2 done
41
+
42
+ ### Notes
43
+ - Data Plane MCP package is **placeholder** until published — do not invent install packages
44
+ - Multi-agent jobs remain **ZJA**; Helper only coaches graduation
45
+ - demo_travel_sample may stay private; set `DEMO_TRAVEL_SAMPLE_DIR` when cloned
46
+
47
+ ## 0.4.0
48
+
49
+ ### Added
50
+ - **P4** `scaffold_app`, `use_sample`, `write_env`, `verify_local_setup`
51
+ - **P3** full `bootstrap_scope` (live GET bootstrap + chat_request summary)
52
+ - **P6** `gap_report` + richer `next_step` (recommended_tools coach)
53
+ - Minimal project template: `main.py`, `requirements.txt`, `.env.example`
54
+
55
+ ### Notes
56
+ - Secrets never written by scaffold/write_env
57
+ - `smoke_test_agent` still needs optional `[agent]` extra
58
+
59
+ ## 0.3.0
60
+
61
+ - P5 `smoke_test_zeus`, `smoke_test_agent`, `diagnose_error`, `suggest_demo_prompts`
62
+
63
+ ## 0.2.0
64
+
65
+ - P2 `set_prereq`, `readiness_check`
66
+
67
+ ## 0.1.0
68
+
69
+ - P1 skeleton + P3b catalogs (`list_catalog_modes`, `fetch_chat_request`)
@@ -0,0 +1,5 @@
1
+ Copyright (c) 2026 Koten AI. All rights reserved.
2
+
3
+ This software is proprietary. Use, copy, modification, and distribution
4
+ are permitted only under a separate written license from Koten AI.
5
+ Unauthorized use is prohibited.
@@ -0,0 +1,278 @@
1
+ Metadata-Version: 2.5
2
+ Name: zeus-dev-helper-mcp
3
+ Version: 0.6.0
4
+ Summary: Developer Helper MCP — first Zeus-powered app onboarding coach (ZDH)
5
+ Project-URL: Homepage, https://docs.koten.ai/zeus-client/dev-helper-mcp
6
+ Project-URL: Documentation, https://docs.koten.ai/zeus-client/dev-helper-mcp
7
+ Project-URL: Repository, https://github.com/koten-ai/zeus_dev_helper_mcp
8
+ Project-URL: Changelog, https://github.com/koten-ai/zeus_dev_helper_mcp/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/koten-ai/zeus_dev_helper_mcp/issues
10
+ Author: Koten AI
11
+ License: Proprietary
12
+ License-File: LICENSE
13
+ Keywords: coach,koten,mcp,onboarding,zeus
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: Other/Proprietary License
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: httpx>=0.27.0
24
+ Requires-Dist: mcp<3,>=1.8.0
25
+ Provides-Extra: agent
26
+ Requires-Dist: kotenai-zeus-client>=2.3.0; extra == 'agent'
27
+ Provides-Extra: dev
28
+ Requires-Dist: build>=1.2; extra == 'dev'
29
+ Requires-Dist: pytest>=8.0; extra == 'dev'
30
+ Requires-Dist: ruff>=0.6; extra == 'dev'
31
+ Requires-Dist: twine>=5.1; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # zeus_dev_helper_mcp
35
+
36
+ <!-- mcp-name: io.github.koten-ai/zeus-dev-helper -->
37
+
38
+ **Developer Helper MCP** — first Zeus-powered app onboarding coach.
39
+
40
+ | | |
41
+ | --- | --- |
42
+ | **Board** | [ZDH](https://kotenai.atlassian.net/jira/software/projects/ZDH/boards/45) |
43
+ | **Epic** | [ZDH-1](https://kotenai.atlassian.net/browse/ZDH-1) |
44
+ | **Skeleton** | [ZDH-3](https://kotenai.atlassian.net/browse/ZDH-3) |
45
+ | **Catalogs** | [ZDH-14](https://kotenai.atlassian.net/browse/ZDH-14) → [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) |
46
+ | **Docs** | [docs.koten.ai](https://docs.koten.ai/) · [Dev Helper MCP](https://docs.koten.ai/zeus-client/dev-helper-mcp) |
47
+
48
+ > Not a data-plane MCP. Coaches: checklist → templates → live readiness & smoke → handoffs.
49
+
50
+ **Design:** [`docs/DESIGN.md`](docs/DESIGN.md) (ZDH-2, frozen MVP) · [`docs/DESIGN-0.6.md`](docs/DESIGN-0.6.md) (runtime coach)
51
+ **Tool catalog:** [`docs/TOOLS.md`](docs/TOOLS.md) — when to call, args, side effects, do-not
52
+
53
+ ## Stack
54
+
55
+ - **Python 3.11+**
56
+ - Official **`mcp`** SDK (`FastMCP` on 1.x / `MCPServer` on 2.x, stdio)
57
+ - Registry name: `io.github.koten-ai/zeus-dev-helper` (PyPI: `zeus-dev-helper-mcp`)
58
+
59
+ ## Install
60
+
61
+ ```bash
62
+ pip install zeus-dev-helper-mcp
63
+ # or
64
+ uvx zeus-dev-helper-mcp
65
+ ```
66
+
67
+ Optional agent-smoke extra (needs `kotenai-zeus-client` on PyPI):
68
+
69
+ ```bash
70
+ pip install "zeus-dev-helper-mcp[agent]"
71
+ ```
72
+
73
+ Live Zeus on `:8080` is the preferred catalog stamp. Offline min templates need a local `zeus_chat_request` clone (`ZEUS_CHAT_REQUEST_DIR`) or `GITHUB_TOKEN` for the private GitHub repo. Travel golden path needs `DEMO_TRAVEL_SAMPLE_DIR` when that sample is cloned.
74
+
75
+ ## Install (dev)
76
+
77
+ ```bash
78
+ git clone https://github.com/koten-ai/zeus_dev_helper_mcp.git
79
+ cd zeus_dev_helper_mcp
80
+ python3 -m venv .venv && source .venv/bin/activate
81
+ pip install -e ".[dev]"
82
+ # Agent smoke (optional):
83
+ pip install -e ".[agent]" # pulls kotenai-zeus-client
84
+
85
+ # Recommended: local catalog repo (private GH needs this or GITHUB_TOKEN)
86
+ export ZEUS_CHAT_REQUEST_DIR=../zeus_chat_request # sibling clone
87
+ # or: export GITHUB_TOKEN=... # Contents API for private zeus_chat_request
88
+ export ZEUS_URL=http://localhost:8080
89
+ export ZEUS_BUCKET=beer-sample ZEUS_SCOPE=_default
90
+ # Optional travel golden path (private sample):
91
+ # export DEMO_TRAVEL_SAMPLE_DIR=/path/to/demo_travel_sample
92
+ ```
93
+
94
+ ## Run
95
+
96
+ ```bash
97
+ zeus-dev-helper-mcp
98
+ # or
99
+ python -m zeus_dev_helper_mcp
100
+ ```
101
+
102
+ ## Host install
103
+
104
+ Prefer the published console script (`uvx` / `pip install`) so hosts do not need a repo checkout.
105
+
106
+ ### Grok Build
107
+
108
+ `grok mcp add` treats flags like `-m` as its own unless they come **after `--`**.
109
+
110
+ ```bash
111
+ grok mcp add zeus-dev-helper \
112
+ -e ZEUS_URL=http://localhost:8080 \
113
+ -- uvx zeus-dev-helper-mcp
114
+ ```
115
+
116
+ From a local checkout, point `command` at this repo’s venv so Grok can start the server even when the TUI was launched without the venv activated:
117
+
118
+ ```bash
119
+ # from this repo, after `pip install -e ".[dev]"`
120
+ grok mcp add zeus-dev-helper \
121
+ -e ZEUS_CHAT_REQUEST_DIR=/absolute/path/to/zeus_chat_request \
122
+ -e ZEUS_URL=http://localhost:8080 \
123
+ -- "$(pwd)/.venv/bin/python" -m zeus_dev_helper_mcp
124
+ ```
125
+
126
+ Equivalent `~/.grok/config.toml` (or `.grok/config.toml` with `--scope project`):
127
+
128
+ ```toml
129
+ [mcp_servers.zeus-dev-helper]
130
+ command = "uvx"
131
+ args = ["zeus-dev-helper-mcp"]
132
+ env = { ZEUS_URL = "http://localhost:8080" }
133
+ enabled = true
134
+ ```
135
+
136
+ Then `/mcps` → `r` to refresh, or `grok mcp doctor zeus-dev-helper`.
137
+
138
+ Common failures:
139
+
140
+ - `unexpected argument '-m'` — missing `--` before the python command
141
+ - `No module named 'zeus_dev_helper_mcp'` / `python: No such file or directory` — Grok did not inherit the venv; use the `.venv/bin/python` path above
142
+ - `No module named 'mcp.server.fastmcp'` — mcp 2.x renamed FastMCP; use Helper **0.6.0+** (`mcp>=1.8.0,<3`)
143
+
144
+ ### Claude Code / Claude Desktop
145
+
146
+ Add to MCP servers config (example):
147
+
148
+ ```json
149
+ {
150
+ "mcpServers": {
151
+ "zeus-dev-helper": {
152
+ "command": "uvx",
153
+ "args": ["zeus-dev-helper-mcp"],
154
+ "env": {
155
+ "ZEUS_URL": "http://localhost:8080"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### Hermes / OpenClaw
163
+
164
+ Point the host’s MCP stdio entry at `uvx zeus-dev-helper-mcp` (or `python -m zeus_dev_helper_mcp` from a venv) with the same env vars.
165
+
166
+ ## Implemented tools (0.6.0)
167
+
168
+ Per-tool when / args / side effects: [`docs/TOOLS.md`](docs/TOOLS.md). Status inventory:
169
+
170
+ | Tool | Status |
171
+ | --- | --- |
172
+ | `doctor` | Config + catalog reachability |
173
+ | `start_project` / `get_checklist` / `next_step` / `gap_report` | **ZDH-8** coach walkthrough |
174
+ | `mark_done` / `mark_blocked` | Checklist updates |
175
+ | `set_prereq` / `validate_env` / `readiness_check` | **ZDH-4** |
176
+ | `bootstrap_scope` | **ZDH-5** live bootstrap + chat_request summary |
177
+ | `scaffold_app` / `use_sample` / `write_env` / `verify_local_setup` | **ZDH-6** |
178
+ | `travel_golden_path` | **ZDH-10** travel sample golden path |
179
+ | `smoke_test_zeus` / `smoke_test_agent` / `diagnose_error` | **ZDH-7** / **ZDH-19** ErrorCode + 0.7 classes |
180
+ | `recommend_surface` / `explain_verb` / `lint_verb_args` / `suggest_verb_call` | **ZDH-18** Direct vs agent + V2 verb lint (does not POST; no Runtime scaffold rewrite) |
181
+ | `compat_check` | **ZDH-21** version/feature gates on `:8080` (not a COMPAT row) |
182
+ | `lint_chat_request` / `bind_contract` / `explain_hash_boundary` / `catalog_diff` | **ZDH-22** catalog coach — extract stamp only |
183
+ | `lint_runtime_config` / `lint_app_code` | **ZDH-24** config + anti-example scan (secrets redacted) |
184
+ | `explain_req_id_policy` / `detective_links` / `support_pack_from_turn` | **ZDH-23** correlation + redacted support pack |
185
+ | `describe_scope` | **ZDH-25** schema-only live describe |
186
+ | `recommend_motion` | **ZDH-26** 13 motions; no custom chat_request |
187
+ | `suggest_hooks` | **ZDH-27** policy snippets (not a policy engine) |
188
+ | `semantic_cache_status` | **ZDH-28** leave enabled=false; optional status probe |
189
+ | `list_catalog_modes` / `fetch_chat_request` | **ZDH-14** |
190
+ | `explain` / `suggest_demo_prompts` | **ZDH-13** glossary + prompts |
191
+ | `handoff_to_multi` | **ZDH-11** multi-agent graduation (gated) |
192
+ | `recommend_data_plane_mcp` / `emit_mcp_config` | **ZDH-12** data-plane handoff |
193
+ | `helper_metrics` | Local time-to-green (privacy-safe) |
194
+
195
+ ### Day-one coach path
196
+
197
+ ```text
198
+ start_project → set_prereq → validate_env → readiness_check
199
+ → use_sample | travel_golden_path | scaffold_app
200
+ → bootstrap_scope / fetch_chat_request / bind_contract / catalog_diff
201
+ → recommend_surface / explain_verb / lint_verb_args / compat_check
202
+ → lint_runtime_config / lint_app_code
203
+ → smoke_test_zeus → smoke_test_agent → gap_report
204
+ → (optional) recommend_data_plane_mcp | handoff_to_multi
205
+ ```
206
+
207
+ ## Catalog rules (never invent hashes)
208
+
209
+ 1. Live Zeus stamp + `sync_chat_requests` for production.
210
+ 2. [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) `v2/min/*` for offline templates.
211
+ 3. `fetch_chat_request` always returns **TEMPLATE ONLY** warning.
212
+
213
+ ## Env
214
+
215
+ | Variable | Purpose |
216
+ | --- | --- |
217
+ | `ZEUS_URL` | Public Zeus API (`:8080`) |
218
+ | `ZEUS_BUCKET` / `ZEUS_SCOPE` / `ZEUS_COLLECTION` | Scope for bootstrap/auth probes |
219
+ | `ZEUS_MODE` | default `analytics` |
220
+ | `ZEUS_USERNAME` / `ZEUS_PASSWORD` | basic auth (not stored by set_prereq) |
221
+ | `ZEUS_BEARER_TOKEN` | bearer auth |
222
+ | `ZEUS_CHAT_REQUEST_DIR` | Local clone of zeus_chat_request |
223
+ | `GITHUB_TOKEN` / `GH_TOKEN` | Private GitHub fetch |
224
+ | `ZEUS_CHAT_REQUEST_REPO` | default `koten-ai/zeus_chat_request` |
225
+ | `ZEUS_CHAT_REQUEST_BRANCH` | default `main` |
226
+ | `DEMO_TRAVEL_SAMPLE_DIR` | Local clone of demo_travel_sample (ZDH-10) |
227
+ | `KOTEN_DOCS_BASE_URL` | default `https://docs.koten.ai` |
228
+ | `ZEUS_DEV_HELPER_STATE_DIR` | checklist / prereqs / local metrics |
229
+
230
+ ## Boundaries
231
+
232
+ | This Helper | Not this Helper |
233
+ | --- | --- |
234
+ | Onboarding coach to first green | Data-plane Explore/Verify tools |
235
+ | Catalog **templates** + readiness/smoke | Inventing `contract_hash` |
236
+ | Multi / data-plane **handoffs** | ZJA job runtime / Hub admin mutations |
237
+ | `KOTEN_DOCS_BASE_URL` | default `https://docs.koten.ai` (published site) |
238
+ | `KOTEN_DOCS_BRANCH` | default `zeus-v1.0.0` (source branch for machine files) |
239
+ | `ZEUS_DEV_HELPER_STATE_DIR` | checklist + prereqs state (default `~/.config/zeus_dev_helper`) |
240
+ | `LLM_API_KEY` / `OPENAI_API_KEY` | presence checked by `validate_env` |
241
+
242
+ ## Tests
243
+
244
+ ```bash
245
+ pip install -e ".[dev]"
246
+ pytest -q
247
+ ```
248
+
249
+ Requires sibling `../zeus_chat_request` with `manifest.json` for catalog tests.
250
+
251
+ ## PyPI and MCP Registry
252
+
253
+ Official registry name: `io.github.koten-ai/zeus-dev-helper`. Metadata lives in [`server.json`](server.json). The registry hosts metadata only; the install artifact is the public PyPI package `zeus-dev-helper-mcp`.
254
+
255
+ Releases are tag-driven (`vX.Y.Z`). [`.github/workflows/release.yml`](.github/workflows/release.yml) tests, builds, creates a GitHub Release, publishes to PyPI (Trusted Publisher, environment `pypi`), then runs `mcp-publisher` against the official MCP Registry.
256
+
257
+ Before the first tag:
258
+
259
+ 1. Create the GitHub Actions environment `pypi` on this repo.
260
+ 2. On [PyPI trusted publishing](https://pypi.org/manage/account/publishing/) add a **pending** GitHub publisher:
261
+ - Owner: `koten-ai`
262
+ - Repository: `zeus_dev_helper_mcp`
263
+ - Workflow name: `release.yml`
264
+ - Environment name: `pypi`
265
+ 3. Align versions in `pyproject.toml`, `src/zeus_dev_helper_mcp/__init__.py`, and `server.json` with the tag.
266
+ 4. Merge to `main`, then `git tag v0.6.0 && git push origin v0.6.0`.
267
+
268
+ The GitHub source repo may stay private; PyPI and the MCP Registry require a **public** install path (`pip` / `uvx`). Keep `repository` in `server.json` only if you want clients to see the GitHub URL.
269
+
270
+ ## Related
271
+
272
+ | Repo | Role |
273
+ | --- | --- |
274
+ | [zeus_client_python](https://github.com/koten-ai/zeus_client_python) | SDK |
275
+ | [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) | Min catalogs |
276
+ | [docs.koten.ai](https://docs.koten.ai/) | Published platform docs |
277
+ | [koten_docs](https://github.com/koten-ai/koten_docs) | Docs source + agent-index.yaml |
278
+ | [Zeus](https://github.com/koten-ai/Zeus) | Engine |
@@ -0,0 +1,245 @@
1
+ # zeus_dev_helper_mcp
2
+
3
+ <!-- mcp-name: io.github.koten-ai/zeus-dev-helper -->
4
+
5
+ **Developer Helper MCP** — first Zeus-powered app onboarding coach.
6
+
7
+ | | |
8
+ | --- | --- |
9
+ | **Board** | [ZDH](https://kotenai.atlassian.net/jira/software/projects/ZDH/boards/45) |
10
+ | **Epic** | [ZDH-1](https://kotenai.atlassian.net/browse/ZDH-1) |
11
+ | **Skeleton** | [ZDH-3](https://kotenai.atlassian.net/browse/ZDH-3) |
12
+ | **Catalogs** | [ZDH-14](https://kotenai.atlassian.net/browse/ZDH-14) → [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) |
13
+ | **Docs** | [docs.koten.ai](https://docs.koten.ai/) · [Dev Helper MCP](https://docs.koten.ai/zeus-client/dev-helper-mcp) |
14
+
15
+ > Not a data-plane MCP. Coaches: checklist → templates → live readiness & smoke → handoffs.
16
+
17
+ **Design:** [`docs/DESIGN.md`](docs/DESIGN.md) (ZDH-2, frozen MVP) · [`docs/DESIGN-0.6.md`](docs/DESIGN-0.6.md) (runtime coach)
18
+ **Tool catalog:** [`docs/TOOLS.md`](docs/TOOLS.md) — when to call, args, side effects, do-not
19
+
20
+ ## Stack
21
+
22
+ - **Python 3.11+**
23
+ - Official **`mcp`** SDK (`FastMCP` on 1.x / `MCPServer` on 2.x, stdio)
24
+ - Registry name: `io.github.koten-ai/zeus-dev-helper` (PyPI: `zeus-dev-helper-mcp`)
25
+
26
+ ## Install
27
+
28
+ ```bash
29
+ pip install zeus-dev-helper-mcp
30
+ # or
31
+ uvx zeus-dev-helper-mcp
32
+ ```
33
+
34
+ Optional agent-smoke extra (needs `kotenai-zeus-client` on PyPI):
35
+
36
+ ```bash
37
+ pip install "zeus-dev-helper-mcp[agent]"
38
+ ```
39
+
40
+ Live Zeus on `:8080` is the preferred catalog stamp. Offline min templates need a local `zeus_chat_request` clone (`ZEUS_CHAT_REQUEST_DIR`) or `GITHUB_TOKEN` for the private GitHub repo. Travel golden path needs `DEMO_TRAVEL_SAMPLE_DIR` when that sample is cloned.
41
+
42
+ ## Install (dev)
43
+
44
+ ```bash
45
+ git clone https://github.com/koten-ai/zeus_dev_helper_mcp.git
46
+ cd zeus_dev_helper_mcp
47
+ python3 -m venv .venv && source .venv/bin/activate
48
+ pip install -e ".[dev]"
49
+ # Agent smoke (optional):
50
+ pip install -e ".[agent]" # pulls kotenai-zeus-client
51
+
52
+ # Recommended: local catalog repo (private GH needs this or GITHUB_TOKEN)
53
+ export ZEUS_CHAT_REQUEST_DIR=../zeus_chat_request # sibling clone
54
+ # or: export GITHUB_TOKEN=... # Contents API for private zeus_chat_request
55
+ export ZEUS_URL=http://localhost:8080
56
+ export ZEUS_BUCKET=beer-sample ZEUS_SCOPE=_default
57
+ # Optional travel golden path (private sample):
58
+ # export DEMO_TRAVEL_SAMPLE_DIR=/path/to/demo_travel_sample
59
+ ```
60
+
61
+ ## Run
62
+
63
+ ```bash
64
+ zeus-dev-helper-mcp
65
+ # or
66
+ python -m zeus_dev_helper_mcp
67
+ ```
68
+
69
+ ## Host install
70
+
71
+ Prefer the published console script (`uvx` / `pip install`) so hosts do not need a repo checkout.
72
+
73
+ ### Grok Build
74
+
75
+ `grok mcp add` treats flags like `-m` as its own unless they come **after `--`**.
76
+
77
+ ```bash
78
+ grok mcp add zeus-dev-helper \
79
+ -e ZEUS_URL=http://localhost:8080 \
80
+ -- uvx zeus-dev-helper-mcp
81
+ ```
82
+
83
+ From a local checkout, point `command` at this repo’s venv so Grok can start the server even when the TUI was launched without the venv activated:
84
+
85
+ ```bash
86
+ # from this repo, after `pip install -e ".[dev]"`
87
+ grok mcp add zeus-dev-helper \
88
+ -e ZEUS_CHAT_REQUEST_DIR=/absolute/path/to/zeus_chat_request \
89
+ -e ZEUS_URL=http://localhost:8080 \
90
+ -- "$(pwd)/.venv/bin/python" -m zeus_dev_helper_mcp
91
+ ```
92
+
93
+ Equivalent `~/.grok/config.toml` (or `.grok/config.toml` with `--scope project`):
94
+
95
+ ```toml
96
+ [mcp_servers.zeus-dev-helper]
97
+ command = "uvx"
98
+ args = ["zeus-dev-helper-mcp"]
99
+ env = { ZEUS_URL = "http://localhost:8080" }
100
+ enabled = true
101
+ ```
102
+
103
+ Then `/mcps` → `r` to refresh, or `grok mcp doctor zeus-dev-helper`.
104
+
105
+ Common failures:
106
+
107
+ - `unexpected argument '-m'` — missing `--` before the python command
108
+ - `No module named 'zeus_dev_helper_mcp'` / `python: No such file or directory` — Grok did not inherit the venv; use the `.venv/bin/python` path above
109
+ - `No module named 'mcp.server.fastmcp'` — mcp 2.x renamed FastMCP; use Helper **0.6.0+** (`mcp>=1.8.0,<3`)
110
+
111
+ ### Claude Code / Claude Desktop
112
+
113
+ Add to MCP servers config (example):
114
+
115
+ ```json
116
+ {
117
+ "mcpServers": {
118
+ "zeus-dev-helper": {
119
+ "command": "uvx",
120
+ "args": ["zeus-dev-helper-mcp"],
121
+ "env": {
122
+ "ZEUS_URL": "http://localhost:8080"
123
+ }
124
+ }
125
+ }
126
+ }
127
+ ```
128
+
129
+ ### Hermes / OpenClaw
130
+
131
+ Point the host’s MCP stdio entry at `uvx zeus-dev-helper-mcp` (or `python -m zeus_dev_helper_mcp` from a venv) with the same env vars.
132
+
133
+ ## Implemented tools (0.6.0)
134
+
135
+ Per-tool when / args / side effects: [`docs/TOOLS.md`](docs/TOOLS.md). Status inventory:
136
+
137
+ | Tool | Status |
138
+ | --- | --- |
139
+ | `doctor` | Config + catalog reachability |
140
+ | `start_project` / `get_checklist` / `next_step` / `gap_report` | **ZDH-8** coach walkthrough |
141
+ | `mark_done` / `mark_blocked` | Checklist updates |
142
+ | `set_prereq` / `validate_env` / `readiness_check` | **ZDH-4** |
143
+ | `bootstrap_scope` | **ZDH-5** live bootstrap + chat_request summary |
144
+ | `scaffold_app` / `use_sample` / `write_env` / `verify_local_setup` | **ZDH-6** |
145
+ | `travel_golden_path` | **ZDH-10** travel sample golden path |
146
+ | `smoke_test_zeus` / `smoke_test_agent` / `diagnose_error` | **ZDH-7** / **ZDH-19** ErrorCode + 0.7 classes |
147
+ | `recommend_surface` / `explain_verb` / `lint_verb_args` / `suggest_verb_call` | **ZDH-18** Direct vs agent + V2 verb lint (does not POST; no Runtime scaffold rewrite) |
148
+ | `compat_check` | **ZDH-21** version/feature gates on `:8080` (not a COMPAT row) |
149
+ | `lint_chat_request` / `bind_contract` / `explain_hash_boundary` / `catalog_diff` | **ZDH-22** catalog coach — extract stamp only |
150
+ | `lint_runtime_config` / `lint_app_code` | **ZDH-24** config + anti-example scan (secrets redacted) |
151
+ | `explain_req_id_policy` / `detective_links` / `support_pack_from_turn` | **ZDH-23** correlation + redacted support pack |
152
+ | `describe_scope` | **ZDH-25** schema-only live describe |
153
+ | `recommend_motion` | **ZDH-26** 13 motions; no custom chat_request |
154
+ | `suggest_hooks` | **ZDH-27** policy snippets (not a policy engine) |
155
+ | `semantic_cache_status` | **ZDH-28** leave enabled=false; optional status probe |
156
+ | `list_catalog_modes` / `fetch_chat_request` | **ZDH-14** |
157
+ | `explain` / `suggest_demo_prompts` | **ZDH-13** glossary + prompts |
158
+ | `handoff_to_multi` | **ZDH-11** multi-agent graduation (gated) |
159
+ | `recommend_data_plane_mcp` / `emit_mcp_config` | **ZDH-12** data-plane handoff |
160
+ | `helper_metrics` | Local time-to-green (privacy-safe) |
161
+
162
+ ### Day-one coach path
163
+
164
+ ```text
165
+ start_project → set_prereq → validate_env → readiness_check
166
+ → use_sample | travel_golden_path | scaffold_app
167
+ → bootstrap_scope / fetch_chat_request / bind_contract / catalog_diff
168
+ → recommend_surface / explain_verb / lint_verb_args / compat_check
169
+ → lint_runtime_config / lint_app_code
170
+ → smoke_test_zeus → smoke_test_agent → gap_report
171
+ → (optional) recommend_data_plane_mcp | handoff_to_multi
172
+ ```
173
+
174
+ ## Catalog rules (never invent hashes)
175
+
176
+ 1. Live Zeus stamp + `sync_chat_requests` for production.
177
+ 2. [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) `v2/min/*` for offline templates.
178
+ 3. `fetch_chat_request` always returns **TEMPLATE ONLY** warning.
179
+
180
+ ## Env
181
+
182
+ | Variable | Purpose |
183
+ | --- | --- |
184
+ | `ZEUS_URL` | Public Zeus API (`:8080`) |
185
+ | `ZEUS_BUCKET` / `ZEUS_SCOPE` / `ZEUS_COLLECTION` | Scope for bootstrap/auth probes |
186
+ | `ZEUS_MODE` | default `analytics` |
187
+ | `ZEUS_USERNAME` / `ZEUS_PASSWORD` | basic auth (not stored by set_prereq) |
188
+ | `ZEUS_BEARER_TOKEN` | bearer auth |
189
+ | `ZEUS_CHAT_REQUEST_DIR` | Local clone of zeus_chat_request |
190
+ | `GITHUB_TOKEN` / `GH_TOKEN` | Private GitHub fetch |
191
+ | `ZEUS_CHAT_REQUEST_REPO` | default `koten-ai/zeus_chat_request` |
192
+ | `ZEUS_CHAT_REQUEST_BRANCH` | default `main` |
193
+ | `DEMO_TRAVEL_SAMPLE_DIR` | Local clone of demo_travel_sample (ZDH-10) |
194
+ | `KOTEN_DOCS_BASE_URL` | default `https://docs.koten.ai` |
195
+ | `ZEUS_DEV_HELPER_STATE_DIR` | checklist / prereqs / local metrics |
196
+
197
+ ## Boundaries
198
+
199
+ | This Helper | Not this Helper |
200
+ | --- | --- |
201
+ | Onboarding coach to first green | Data-plane Explore/Verify tools |
202
+ | Catalog **templates** + readiness/smoke | Inventing `contract_hash` |
203
+ | Multi / data-plane **handoffs** | ZJA job runtime / Hub admin mutations |
204
+ | `KOTEN_DOCS_BASE_URL` | default `https://docs.koten.ai` (published site) |
205
+ | `KOTEN_DOCS_BRANCH` | default `zeus-v1.0.0` (source branch for machine files) |
206
+ | `ZEUS_DEV_HELPER_STATE_DIR` | checklist + prereqs state (default `~/.config/zeus_dev_helper`) |
207
+ | `LLM_API_KEY` / `OPENAI_API_KEY` | presence checked by `validate_env` |
208
+
209
+ ## Tests
210
+
211
+ ```bash
212
+ pip install -e ".[dev]"
213
+ pytest -q
214
+ ```
215
+
216
+ Requires sibling `../zeus_chat_request` with `manifest.json` for catalog tests.
217
+
218
+ ## PyPI and MCP Registry
219
+
220
+ Official registry name: `io.github.koten-ai/zeus-dev-helper`. Metadata lives in [`server.json`](server.json). The registry hosts metadata only; the install artifact is the public PyPI package `zeus-dev-helper-mcp`.
221
+
222
+ Releases are tag-driven (`vX.Y.Z`). [`.github/workflows/release.yml`](.github/workflows/release.yml) tests, builds, creates a GitHub Release, publishes to PyPI (Trusted Publisher, environment `pypi`), then runs `mcp-publisher` against the official MCP Registry.
223
+
224
+ Before the first tag:
225
+
226
+ 1. Create the GitHub Actions environment `pypi` on this repo.
227
+ 2. On [PyPI trusted publishing](https://pypi.org/manage/account/publishing/) add a **pending** GitHub publisher:
228
+ - Owner: `koten-ai`
229
+ - Repository: `zeus_dev_helper_mcp`
230
+ - Workflow name: `release.yml`
231
+ - Environment name: `pypi`
232
+ 3. Align versions in `pyproject.toml`, `src/zeus_dev_helper_mcp/__init__.py`, and `server.json` with the tag.
233
+ 4. Merge to `main`, then `git tag v0.6.0 && git push origin v0.6.0`.
234
+
235
+ The GitHub source repo may stay private; PyPI and the MCP Registry require a **public** install path (`pip` / `uvx`). Keep `repository` in `server.json` only if you want clients to see the GitHub URL.
236
+
237
+ ## Related
238
+
239
+ | Repo | Role |
240
+ | --- | --- |
241
+ | [zeus_client_python](https://github.com/koten-ai/zeus_client_python) | SDK |
242
+ | [zeus_chat_request](https://github.com/koten-ai/zeus_chat_request) | Min catalogs |
243
+ | [docs.koten.ai](https://docs.koten.ai/) | Published platform docs |
244
+ | [koten_docs](https://github.com/koten-ai/koten_docs) | Docs source + agent-index.yaml |
245
+ | [Zeus](https://github.com/koten-ai/Zeus) | Engine |