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.
- zeus_dev_helper_mcp-0.6.0/.gitignore +12 -0
- zeus_dev_helper_mcp-0.6.0/AGENTS.md +36 -0
- zeus_dev_helper_mcp-0.6.0/CHANGELOG.md +69 -0
- zeus_dev_helper_mcp-0.6.0/LICENSE +5 -0
- zeus_dev_helper_mcp-0.6.0/PKG-INFO +278 -0
- zeus_dev_helper_mcp-0.6.0/README.md +245 -0
- zeus_dev_helper_mcp-0.6.0/docs/DAY-IN-THE-LIFE.md +171 -0
- zeus_dev_helper_mcp-0.6.0/docs/DESIGN-0.6.md +135 -0
- zeus_dev_helper_mcp-0.6.0/docs/DESIGN.md +164 -0
- zeus_dev_helper_mcp-0.6.0/docs/PLAN-mcp-quality-0.7.md +333 -0
- zeus_dev_helper_mcp-0.6.0/docs/PLAN-runtime-coach-0.6.md +362 -0
- zeus_dev_helper_mcp-0.6.0/docs/TOOLS.md +281 -0
- zeus_dev_helper_mcp-0.6.0/guides/LIST_OF_PROMPT_SAMPLES.md +488 -0
- zeus_dev_helper_mcp-0.6.0/pyproject.toml +61 -0
- zeus_dev_helper_mcp-0.6.0/server.json +85 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/__init__.py +3 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/__main__.py +4 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/bootstrap.py +179 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/cache.py +129 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/catalog.py +216 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/checklist.py +172 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/compat.py +269 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/config.py +156 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/config_lint.py +310 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/contract.py +330 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/diagnose.py +290 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/docs_links.py +46 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/explain.py +327 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/handoff.py +225 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/hooks.py +125 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/motion.py +176 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/prereqs.py +64 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/readiness.py +594 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/scaffold.py +333 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/server.py +738 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/smoke.py +450 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/support.py +246 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/surface.py +144 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/travel.py +130 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/verbs.py +768 -0
- zeus_dev_helper_mcp-0.6.0/src/zeus_dev_helper_mcp/walkthrough.py +121 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_cache.py +47 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_catalog.py +51 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_compat.py +55 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_config_lint.py +102 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_contract.py +107 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_describe_scope.py +42 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_diagnose.py +78 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_distribution.py +53 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_handoff_travel_explain.py +159 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_hooks.py +45 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_motion.py +44 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_readiness.py +44 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_scaffold.py +35 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_server_import.py +11 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_support.py +83 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_surface.py +63 -0
- zeus_dev_helper_mcp-0.6.0/tests/test_verbs.py +123 -0
|
@@ -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,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 |
|