Skip to content

Commit 95e83ee

Browse files
author
semantic-release
committed
chore(release): 0.3.0
1 parent 8f1d3d0 commit 95e83ee

1 file changed

Lines changed: 178 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,179 @@
11
# CHANGELOG
22

33

4+
## v0.3.0 (2026-03-13)
5+
6+
### Bug Fixes
7+
8+
- Align MCP client with public API session contract
9+
([#35](https://github.com/ambient-code/mcp/pull/35),
10+
[`051ee3b`](https://github.com/ambient-code/mcp/commit/051ee3b9f260fc5fa5e88f5a74b98349e149cfb7))
11+
12+
The MCP client was sending field names that don't match the public API's CreateSessionRequest DTO,
13+
causing session creation to fail with validation errors. Also removes parameters the public API
14+
doesn't support.
15+
16+
- client.py: initialPrompt → task, llmConfig.model → model - client.py: remove interactive/timeout
17+
params (not in public API) - client.py: transform repos from bare strings to {url: str} objects -
18+
client.py: fix clone_session to use same corrected field names - client.py: update
19+
SESSION_TEMPLATES to use task/model fields - server.py: remove interactive/timeout from tool
20+
schema and dispatch
21+
22+
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
23+
24+
- Move utils module into mcp_acp package for PyPI distribution
25+
([#38](https://github.com/ambient-code/mcp/pull/38),
26+
[`adc3fb0`](https://github.com/ambient-code/mcp/commit/adc3fb0129b81bbe785ee98bb5048884ea53f726))
27+
28+
The utils/pylogger module was at the repo root, outside the src/mcp_acp/ package. setuptools only
29+
includes mcp_acp* from src/, so the utils module was missing from the PyPI wheel, causing
30+
ImportError on install.
31+
32+
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33+
34+
### Features
35+
36+
- Add HTTP transport support (--http flag) ([#40](https://github.com/ambient-code/mcp/pull/40),
37+
[`8f1d3d0`](https://github.com/ambient-code/mcp/commit/8f1d3d0238ed49177571f224ceec4f4770c2367a))
38+
39+
mcp-acp can now serve over streamable-http in addition to stdio:
40+
41+
mcp-acp --http # HTTP on :8080 mcp-acp --http --port 9000 # custom port
42+
43+
Uses StreamableHTTPSessionManager + StreamableHTTPASGIApp from the MCP SDK. Exposes /health for k8s
44+
probes and /mcp for MCP protocol.
45+
46+
Bumps mcp dependency to >=1.26 (required for streamable-http APIs). Adds uvicorn, starlette,
47+
sse-starlette as dependencies. Version bump to 0.3.0.
48+
49+
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
50+
51+
- Add optional Langfuse tracing for MCP tool calls
52+
([#37](https://github.com/ambient-code/mcp/pull/37),
53+
[`c0af6b0`](https://github.com/ambient-code/mcp/commit/c0af6b0f62ff3eb6ce773b13b45cfae9750d3ac0))
54+
55+
* feat: add optional Langfuse tracing for MCP tool calls and HTTP requests
56+
57+
Add observability to the mcp-acp server via Langfuse integration. Every MCP tool call produces a
58+
trace with tool name, filtered args, duration, and success/error status. HTTP requests to the ACP
59+
public API appear as nested child spans with method, path, and status code.
60+
61+
Tracing is opt-in and silently no-ops when unconfigured: - Reads LANGFUSE_PUBLIC_KEY,
62+
LANGFUSE_SECRET_KEY, LANGFUSE_BASE_URL - MCP_ACP_TRACING_ENABLED env var (default: true) serves as
63+
kill switch - SDK init failures are caught and logged, never break tool execution
64+
65+
- tracing.py: Langfuse v3 SDK client singleton, trace_tool_call and trace_http_request async context
66+
managers, no-op fallbacks, lifecycle - server.py: wrap call_tool() dispatch in trace_tool_call,
67+
flush on exit - client.py: wrap _request() and _request_text() in trace_http_request -
68+
settings.py: add missing _acpctl_config_path() (pre-existing bug fix) - test_tracing.py: 25 unit
69+
tests covering all tracing paths - scripts/test_tracing_e2e.py: e2e test against live ACP cluster
70+
71+
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
72+
73+
* test: add comprehensive E2E tests for MCP server
74+
75+
Add test_server_e2e.py with full coverage of all 26 MCP tools: - Session management (list, get,
76+
create, delete, restart, clone, update) - Observability (logs, transcript, metrics) - Labels (add,
77+
remove, list by label, bulk operations) - Bulk operations (delete, stop, restart - by name and by
78+
label) - Cluster management (list, whoami, switch, login)
79+
80+
Tests use mocked HTTP transport to verify the complete flow from tool call through client to HTTP
81+
requests. Includes: - Success and error path testing - Dry-run mode verification - Confirmation
82+
requirement enforcement for destructive operations - Input validation testing - Complete workflow
83+
simulation
84+
85+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
86+
87+
* Fix ruff linting issues in test_tracing_e2e.py
88+
89+
- Use single quotes for jsonpath argument containing double quotes - Remove unused f-string prefix
90+
91+
* Fix ruff linting issues in test_server_e2e.py
92+
93+
Remove unused AsyncMock import, extra blank line, and fix multi-line call formatting.
94+
95+
* Fix import path for pylogger in tracing.py
96+
97+
Use mcp_acp.utils.pylogger instead of utils.pylogger to match other modules in the package.
98+
99+
* refactor: enhance E2E tests with better mocking and edge cases
100+
101+
Improvements to MockHTTPClient: - Move to module level class with comprehensive docstrings - Add
102+
get_calls_for() to retrieve calls matching method/path - Add assert_called_with() for HTTP call
103+
verification - Sort responses by path length for better specificity matching
104+
105+
New test cases: - test_create_session_with_repos: verify repos parameter handling -
106+
test_invalid_template_name: validation for unknown templates - test_update_session_no_fields:
107+
error when no update fields provided - test_bulk_by_label_no_matches: graceful empty results
108+
handling - test_empty_sessions_list: empty list display - test_delete_verifies_http_call: HTTP
109+
call verification example
110+
111+
Other improvements: - Move json import to module level (remove local import) - Add detailed
112+
docstrings with test categories
113+
114+
* Fix test failures and implementation bug
115+
116+
- Fix test_client.py: Update test expectations to match actual API schema (use 'task' instead of
117+
'initialPrompt', 'model' instead of 'llmConfig.model') - Fix clone_session: Add displayName to
118+
clone_data (was missing) - Fix test_tracing.py: Correct patch location for Langfuse module -
119+
Remove non-existent 'timeout' parameter from create_session tests
120+
121+
* Fix ruff formatting in test_server_e2e.py
122+
123+
Combine multi-line statements that ruff prefers on single lines.
124+
125+
---------
126+
127+
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
128+
129+
Co-authored-by: Ambient Code Bot <bot@ambient-code.local>
130+
131+
Co-authored-by: Jeremy Eder <jeder@redhat.com>
132+
133+
### Testing
134+
135+
- Add comprehensive E2E tests for MCP server ([#39](https://github.com/ambient-code/mcp/pull/39),
136+
[`0bc57bf`](https://github.com/ambient-code/mcp/commit/0bc57bf3434d1780ce923fe790d404d491acff8b))
137+
138+
* test: add comprehensive E2E tests for MCP server
139+
140+
Add test_server_e2e.py with full coverage of all 26 MCP tools:
141+
142+
Session Management: - list_sessions, get_session, create_session, create_session_from_template -
143+
delete_session, restart_session, clone_session, update_session
144+
145+
Observability: - get_session_logs, get_session_transcript, get_session_metrics
146+
147+
Labels: - label_resource, unlabel_resource, list_sessions_by_label - bulk_label_resources,
148+
bulk_unlabel_resources
149+
150+
Bulk Operations: - bulk_delete_sessions, bulk_stop_sessions, bulk_restart_sessions -
151+
bulk_delete_sessions_by_label, bulk_stop_sessions_by_label - bulk_restart_sessions_by_label
152+
153+
Cluster Management: - list_clusters, whoami, switch_cluster, login
154+
155+
Test Infrastructure: - MockHTTPClient class with response matching and call verification -
156+
make_response helper for creating mock httpx responses - Fixtures for cluster config, settings,
157+
and HTTP client
158+
159+
Test Coverage Includes: - Success and error path testing - Dry-run mode verification - Confirmation
160+
requirement enforcement for destructive operations - Input validation testing (invalid project,
161+
template, etc.) - Complete session lifecycle workflow simulation - Edge cases (empty lists, no
162+
matches, partial failures)
163+
164+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
165+
166+
* fix(ci): apply ruff formatting to test_server_e2e.py
167+
168+
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
169+
170+
---------
171+
172+
Co-authored-by: Ambient Code Bot <bot@ambient-code.local>
173+
174+
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
175+
176+
4177
## v0.2.2 (2026-02-16)
5178

6179
### Bug Fixes
@@ -18,6 +191,11 @@ Fixes: https://github.com/ambient-code/mcp/actions/runs/22051441188
18191

19192
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20193

194+
### Chores
195+
196+
- **release**: 0.2.2
197+
([`d510040`](https://github.com/ambient-code/mcp/commit/d510040ed4aebf48475c922ed8e05a2f8aa4d0a3))
198+
21199

22200
## v0.2.1 (2026-02-16)
23201

0 commit comments

Comments
 (0)