11# CHANGELOG
22
33
4+ ## v0.2.0 (2026-02-16)
5+
6+ ### Bug Fixes
7+
8+ - ** ci** : Run ruff in autofix mode ([ #25 ] ( https://github.com/ambient-code/mcp/pull/25 ) ,
9+ [ ` c6c8b2c ` ] ( https://github.com/ambient-code/mcp/commit/c6c8b2c8d23a7b36b6f5ab8986acfa2b5a249b7a ) )
10+
11+ * fix(ci): run ruff in autofix mode
12+
13+ Runs ` ruff check --fix ` and ` ruff format ` to apply auto-fixable lint and format corrections, then
14+ fails via ` git diff --exit-code ` if the working tree is dirty — meaning the developer forgot to
15+ run ruff locally before pushing. This gives a clear error message pointing them to the fix.
16+
17+ Co-Authored-By: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
18+
19+ * style: apply ruff format to client.py
20+
21+ Pre-commit hooks caught one file needing reformatting.
22+
23+ * fix: merge implicit string concatenation for ruff compliance
24+
25+ Co-Authored-By: Claude Opus 4.5 < noreply@anthropic.com >
26+
27+ * test: rewrite tests for new public-api client
28+
29+ - Remove obsolete tests for oc CLI-based client - Remove test_security.py (tested methods no longer
30+ exist) - Add test_formatters.py for output formatting - Update test_client.py for HTTP-based
31+ client - Update test_server.py for current 7 tools
32+
33+ All 40 tests pass with 70% coverage.
34+
35+ ---------
36+
37+ Co-authored-by: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
38+
39+ Co-authored-by: Ambient Code < ambient-code@redhat.com >
40+
41+ - ** ci** : Use --allow-existing flag for uv venv ([ #24 ] ( https://github.com/ambient-code/mcp/pull/24 ) ,
42+ [ ` 3689fd1 ` ] ( https://github.com/ambient-code/mcp/commit/3689fd1b05b710e621716065e660ddb99ca34b5f ) )
43+
44+ When the virtual environment cache is restored, the .venv directory already exists, causing `uv
45+ venv` to fail. The --allow-existing flag allows uv to reuse or recreate the venv as needed.
46+
47+ Co-authored-by: Ambient Code < ambient-code@redhat.com >
48+
49+ Co-authored-by: Claude Opus 4.5 < noreply@anthropic.com >
50+
51+ - ** ci** : Use GitHub App token for semantic-release to bypass branch ruleset
52+ ([ #32 ] ( https://github.com/ambient-code/mcp/pull/32 ) ,
53+ [ ` 9af787b ` ] ( https://github.com/ambient-code/mcp/commit/9af787ba1faacfb47b99e33cd41d109732007db0 ) )
54+
55+ The release workflow was failing because GITHUB_TOKEN (github-actions[ bot] ) cannot push directly to
56+ main when branch protection requires pull requests. On GitHub Free, the built-in GitHub Actions
57+ integration cannot be added as a bypass actor in rulesets.
58+
59+ Switch to authenticating via the ambient-code GitHub App using actions/create-github-app-token,
60+ which generates a short-lived token that can bypass the "Protect main" ruleset.
61+
62+ Requires repo secrets: RELEASE_APP_ID, RELEASE_APP_PRIVATE_KEY
63+
64+ Co-authored-by: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
65+
66+ ### Features
67+
68+ - Add 18 new MCP tools for session management and observability
69+ ([ #31 ] ( https://github.com/ambient-code/mcp/pull/31 ) ,
70+ [ ` 8301653 ` ] ( https://github.com/ambient-code/mcp/commit/8301653446c20aba7afd0d2e59a030b3ac3e56f5 ) )
71+
72+ * feat: add 18 new MCP tools for session management and observability (#27 )
73+
74+ Add comprehensive session management and observability tools to the MCP server, expanding from 8 to
75+ 26 total tools. New capabilities include:
76+
77+ - Session lifecycle: get, update, restart, stop, delete (single + bulk) - Observability: logs,
78+ transcript, metrics retrieval - Organization: label/unlabel sessions (single + bulk, by name or
79+ label) - Discovery: list sessions filtered by label selectors - Bulk operations:
80+ delete/stop/restart/label/unlabel by name or label with dry_run preview, confirm safeguard, and
81+ 3-item safety limit
82+
83+ All bulk destructive operations require explicit confirm=true and support dry_run=true for safe
84+ preview. Label-based bulk ops resolve matching sessions first, then apply the operation.
85+
86+ Co-Authored-By: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
87+
88+ * test: fill coverage gaps for bulk operations and server dispatch
89+
90+ Add 32 new tests covering previously untested paths:
91+
92+ Client layer: - _ run_bulk dry_run path and partial failure handling - _ run_bulk_by_label pipeline
93+ (delete/stop/restart by label) - _ run_bulk_by_label with no matching sessions -
94+ bulk_label_sessions (success + dry_run) - bulk_unlabel_sessions (success + dry_run)
95+
96+ Server dispatch layer: - get_session, create_session_from_template, clone_session, update_session,
97+ get_session_logs, get_session_transcript, get_session_metrics, label_resource, unlabel_resource,
98+ list_sessions_by_label - Confirmation enforcement for all 8 TOOLS_REQUIRING_CONFIRMATION -
99+ Confirmed dispatch for bulk_label, bulk_unlabel, bulk_restart, and all 3 by-label bulk operations
100+
101+ Coverage: 72% → 81% overall (client 70→80%, server 63→83%)
102+
103+ ---------
104+
105+ Co-authored-by: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
106+
107+ - Add acp_create_session tool to submit hpc-style jobs via mcp
108+ ([ #26 ] ( https://github.com/ambient-code/mcp/pull/26 ) ,
109+ [ ` 4671c81 ` ] ( https://github.com/ambient-code/mcp/commit/4671c8158340b654f6420dc439e6622522035784 ) )
110+
111+ * feat: add acp_create_session tool and hello-acp integration test
112+
113+ Add acp_create_session MCP tool for submitting AgenticSessions with custom prompts (vs
114+ template-only). Extract shared _ apply_manifest() helper from create_session_from_template. Fix pod
115+ label selector bug in get_session_logs (agenticsession → agentic-session). Add first live
116+ integration test that creates a session, polls for marker output in logs, and cleans up.
117+
118+ Co-Authored-By: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
119+
120+ * chore: add hello-acp demo (asciinema cast + GIF)
121+
122+ Claude Code UI simulation showing the full acp_create_session flow: dry-run, live creation, status
123+ polling, log verification, cleanup, and automated pytest run.
124+
125+ * chore: re-record hello-acp demo with real pytest output
126+
127+ Replace scripted typing-effects demo with raw pytest execution. Simpler script, smaller artifacts
128+ (GIF: 1.1MB → 42KB).
129+
130+ * fix: use SettingsConfigDict and re-record demo at 100 cols
131+
132+ Replace deprecated class Config with model_config = SettingsConfigDict() to eliminate
133+ PydanticDeprecatedSince20 warning. Re-record demo with 100-col terminal to prevent line wrapping.
134+
135+ * feat: replace pytest demo with full ACP workflow demo
136+
137+ New demo shows the actual user workflow: 1. Display the plan 2. Submit via acp_create_session (real
138+ API call) 3. Disconnect — session runs autonomously on cluster 4. Check session status via
139+ acp_list_sessions 5. Verify output via acp_get_session_logs
140+
141+ * docs: consolidate QUICKSTART + TRIGGER_PHRASES into README; fix ruff lint
142+
143+ Merge QUICKSTART.md and TRIGGER_PHRASES.md into a single comprehensive README.md with TOC. Delete
144+ the redundant files — users no longer need to hop between 4 docs to get started. Update CLAUDE.md
145+ cross-references.
146+
147+ Also includes pending fixes for ruff F541 (unnecessary f-strings) in demos/hello-acp-workflow.py
148+ that were failing CI, plus prior uncommitted work on the branch: public-api gateway docs,
149+ settings, and test updates.
150+
151+ ---------
152+
153+ Co-authored-by: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
154+
155+ - Authenticate via public-api gateway instead of OpenShift API
156+ ([ #23 ] ( https://github.com/ambient-code/mcp/pull/23 ) ,
157+ [ ` 5e4ee66 ` ] ( https://github.com/ambient-code/mcp/commit/5e4ee6676ca853bba08e1fd224c1f8a6b6e2e416 ) )
158+
159+ Replace direct OpenShift API authentication with HTTP requests to the public-api gateway service.
160+ This simplifies the MCP server by removing the oc CLI dependency and aligns with the platform's
161+ security model where the public-api is the single entry point for all clients.
162+
163+ Changes: - client.py: Rewrite to use httpx for HTTP requests to public-api - settings.py: Update
164+ ClusterConfig to point to public-api URL - server.py: Reduce to 7 supported tools (list, get,
165+ delete sessions) - formatters.py: Remove unused formatters - pyproject.toml: Replace aiohttp with
166+ httpx, update description
167+
168+ The public-api provides: - GET/POST/DELETE /v1/sessions endpoints - Bearer token auth via
169+ Authorization header - Project context via X-Ambient-Project header
170+
171+ Co-authored-by: Ambient Code < ambient-code@redhat.com >
172+
173+ Co-authored-by: Claude Opus 4.5 < noreply@anthropic.com >
174+
175+
4176## v0.1.3 (2026-02-10)
5177
6178### Bug Fixes
@@ -14,6 +186,11 @@ The python-semantic-release Docker action creates dist/ and build/ directories i
14186
15187Co-Authored-By: Claude Opus 4.6 (1M context) < noreply@anthropic.com >
16188
189+ ### Chores
190+
191+ - ** release** : 0.1.3
192+ ([ ` 5561a9d ` ] ( https://github.com/ambient-code/mcp/commit/5561a9da2e73e4497e13a12560441ff94f7b10cf ) )
193+
17194
18195## v0.1.2 (2026-02-10)
19196
0 commit comments