devhelm-mcp-server 0.8.2__tar.gz → 1.0.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 (44) hide show
  1. devhelm_mcp_server-1.0.0/CHANGELOG.md +120 -0
  2. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/PKG-INFO +2 -2
  3. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/pyproject.toml +9 -6
  4. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/server.py +6 -2
  5. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/uv.lock +5 -5
  6. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/ci.yml +0 -0
  7. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/release.yml +0 -0
  8. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/spec-check.yml +0 -0
  9. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.gitignore +0 -0
  10. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/LICENSE +0 -0
  11. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/Makefile +0 -0
  12. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/README.md +0 -0
  13. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/docker/Dockerfile +0 -0
  14. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/docs/openapi/monitoring-api.json +0 -0
  15. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/scripts/regen-from.sh +0 -0
  16. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/scripts/release.sh +0 -0
  17. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/__init__.py +0 -0
  18. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/client.py +0 -0
  19. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/__init__.py +0 -0
  20. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/alert_channels.py +0 -0
  21. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/api_keys.py +0 -0
  22. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/dependencies.py +0 -0
  23. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/deploy_lock.py +0 -0
  24. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/environments.py +0 -0
  25. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/forensics.py +0 -0
  26. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/incidents.py +0 -0
  27. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/maintenance_windows.py +0 -0
  28. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/monitors.py +0 -0
  29. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/notification_policies.py +0 -0
  30. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/resource_groups.py +0 -0
  31. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/secrets.py +0 -0
  32. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/status.py +0 -0
  33. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/status_pages.py +0 -0
  34. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/tags.py +0 -0
  35. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/webhooks.py +0 -0
  36. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/__init__.py +0 -0
  37. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/run_mcp.py +0 -0
  38. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_auth.py +0 -0
  39. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_cli.py +0 -0
  40. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_client.py +0 -0
  41. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_devex_round3_fixes.py +0 -0
  42. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_maintenance_windows.py +0 -0
  43. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_tools.py +0 -0
  44. {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_typed_schemas.py +0 -0
@@ -0,0 +1,120 @@
1
+ # Changelog
2
+
3
+ All notable changes to `devhelm-mcp-server` are documented here.
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.0.0] — 2026-05-06
8
+
9
+ First GA release. Cut alongside the `1.0.0` GA of the `devhelm` Python
10
+ SDK, the `devhelm` CLI, and the `@devhelm/sdk` JS/TS SDK. The schema
11
+ and tool surface that `0.8.3` shipped is the GA contract — no
12
+ behavioral changes from `0.8.3`, only the version bump and the SDK
13
+ floor change below.
14
+
15
+ ### Changed
16
+
17
+ - Bump `devhelm` Python SDK floor to `>=1.0.0`. Aligns with the GA
18
+ release of the SDK; future patch/minor SDK bumps will be picked up
19
+ automatically without an explicit floor change here.
20
+
21
+ ### Compatibility
22
+
23
+ - All tool input schemas, tool names, and response shapes are
24
+ unchanged from `0.8.3`. Existing clients keep working without
25
+ modification.
26
+
27
+ ## [0.8.3] — 2026-05-06
28
+
29
+ ### Changed
30
+
31
+ - Rewrite `initialize.instructions` to point at transport-layer auth
32
+ (`Authorization: Bearer ...` for hosted, `DEVHELM_API_TOKEN` env for
33
+ stdio) and explicitly note that tool schemas no longer accept
34
+ `api_token` arguments. The previous wording ("All operations require
35
+ a valid DevHelm API token") contradicted the 0.7.0 schema change and
36
+ caused LLMs to attempt to thread tokens into tool args.
37
+ - Add `CHANGELOG.md` retroactively covering 0.6.0 → 0.8.x. Going
38
+ forward, every release lands with a corresponding stanza.
39
+
40
+ ## [0.8.2] — 2026-05-06
41
+
42
+ ### Changed
43
+
44
+ - Bump `devhelm` Python SDK floor to `>=0.7.2`. Older versions raise Pydantic
45
+ `extra_forbidden` on the new `managedBy` field that the API now returns on
46
+ resource DTOs.
47
+
48
+ ## [0.8.1] — 2026-05-06
49
+
50
+ ### Changed
51
+
52
+ - Sync OpenAPI spec and refresh bundled SDK to pick up the new monitor
53
+ validation contract (`frequencySeconds` bounds, dynamic region whitelist)
54
+ and `managedBy` resource-attribution field.
55
+
56
+ ## [0.8.0] — 2026-05-06
57
+
58
+ ### Added
59
+
60
+ - **Maintenance window tools** (`maintenance_window_*`): list / create / get
61
+ / update / cancel scheduled maintenance windows so AI agents can suppress
62
+ alerts during planned deploys.
63
+
64
+ ## [0.7.1] — 2026-05-06
65
+
66
+ ### Fixed
67
+
68
+ - `--help` / `--version` no longer hang waiting on stdin. The binary now ships
69
+ a proper `argparse` interface with `--transport {stdio,http}`, `--host`,
70
+ `--port` flags. (Also addressable via `DEVHELM_MCP_TRANSPORT`,
71
+ `DEVHELM_MCP_HOST`, `DEVHELM_MCP_PORT` env vars.)
72
+ - ASCII banner suppressed on stdio transport so it doesn't pollute JSON-RPC.
73
+ - `/mcp` (no trailing slash) is rewritten in-process instead of returning a
74
+ `307` redirect (which not all MCP clients follow correctly).
75
+ - `serverInfo` now reports `name=devhelm-mcp-server`, `version=<package>`
76
+ (was the FastMCP runtime `name=DevHelm`, `version=3.x.y`). Makes support
77
+ triage unambiguous and lets clients pin behavior to a published wheel.
78
+
79
+ ## [0.7.0] — 2026-05-05
80
+
81
+ ### **Breaking**
82
+
83
+ - **Tool input schemas no longer accept `api_token`.** Authentication is
84
+ resolved at the transport layer:
85
+ - Hosted Streamable HTTP: `Authorization: Bearer <token>` header.
86
+ - Stdio: `DEVHELM_API_TOKEN` environment variable.
87
+ This eliminates the per-call token-passing friction that made the server
88
+ awkward in Cursor / Claude Desktop. Existing clients that still pass
89
+ `api_token` in tool arguments will get an `unexpected_keyword_argument`
90
+ Pydantic error from FastMCP.
91
+
92
+ - **`create_monitor` no longer accepts a caller-supplied `managedBy`.**
93
+ The server forces `managedBy=MCP` on every monitor it creates so resource
94
+ attribution is honest. Callers that need a different attribution should
95
+ use the SDK or CLI directly.
96
+
97
+ - **`delete_monitor` parameter renamed:** `id` → `monitor_id`. (Same shape
98
+ applied across other resource delete tools — `incident_id`,
99
+ `channel_id`, etc. for consistency.)
100
+
101
+ - **`list_*` tools no longer require an empty `body: {}` envelope.** Pass
102
+ no arguments instead.
103
+
104
+ ### Fixed
105
+
106
+ - Upstream API failures now surface as `isError: true` ToolError responses
107
+ instead of being swallowed silently.
108
+ - Documented user journeys end-to-end now actually work without hand-tuning.
109
+
110
+ ### Added
111
+
112
+ - Usage telemetry now reports `surface=mcp` so we can tell MCP traffic from
113
+ raw SDK traffic in dashboards.
114
+
115
+ ## [0.6.0] — 2026-05-04
116
+
117
+ Initial public release with 101 tools covering monitors, incidents, alert
118
+ channels, notification policies, environments, secrets, tags, resource
119
+ groups, webhooks, API keys, service dependencies, deploy locks, status
120
+ pages, and dashboard read.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devhelm-mcp-server
3
- Version: 0.8.2
3
+ Version: 1.0.0
4
4
  Summary: DevHelm MCP server — AI agent access to monitors, incidents, alerting, and more
5
5
  Project-URL: Homepage, https://devhelm.io
6
6
  Project-URL: Repository, https://github.com/devhelmhq/mcp-server
@@ -18,7 +18,7 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Software Development :: Libraries
20
20
  Requires-Python: >=3.11
21
- Requires-Dist: devhelm>=0.7.2
21
+ Requires-Dist: devhelm>=1.0.0
22
22
  Requires-Dist: fastmcp>=2.0.0
23
23
  Description-Content-Type: text/markdown
24
24
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "devhelm-mcp-server"
3
- version = "0.8.2"
3
+ version = "1.0.0"
4
4
  description = "DevHelm MCP server — AI agent access to monitors, incidents, alerting, and more"
5
5
  authors = [{ name = "DevHelm", email = "hello@devhelm.io" }]
6
6
  license = "MIT"
@@ -19,11 +19,14 @@ classifiers = [
19
19
  ]
20
20
 
21
21
  dependencies = [
22
- # Floor bumped to 0.7.2: required for `managedBy` field on resource DTOs
23
- # and for the new monitor validation contract (frequencySeconds bounds,
24
- # dynamic region whitelist). Older devhelm versions raise Pydantic
25
- # `extra_forbidden` errors when the API returns `managedBy`.
26
- "devhelm>=0.7.2",
22
+ # Floor bumped to 1.0.0: aligns with the GA release of the Python SDK
23
+ # cut alongside this server's 1.0.0. The 1.0.0 SDK includes every
24
+ # contract the server currently relies on (`managedBy` on resource
25
+ # DTOs, the monitor validation contract — frequencySeconds bounds,
26
+ # dynamic region whitelist) and commits to semver going forward, so
27
+ # `>=1.0.0` lets us pull in compatible patch/minor bumps without
28
+ # explicit floor bumps each time.
29
+ "devhelm>=1.0.0",
27
30
  "fastmcp>=2.0.0",
28
31
  ]
29
32
 
@@ -78,8 +78,12 @@ mcp = FastMCP(
78
78
  "Use these tools to manage uptime monitors, incidents, alert channels, "
79
79
  "notification policies, environments, secrets, tags, resource groups, "
80
80
  "webhooks, API keys, service dependencies, deploy locks, maintenance "
81
- "windows, status pages, and view dashboard status. All operations "
82
- "require a valid DevHelm API token."
81
+ "windows, status pages, and view dashboard status. "
82
+ "Authentication is handled at the transport layer: "
83
+ "`Authorization: Bearer <token>` for the hosted endpoint "
84
+ "(https://mcp.devhelm.io/mcp/), or the `DEVHELM_API_TOKEN` environment "
85
+ "variable when running over stdio (e.g. `uvx devhelm-mcp-server`). "
86
+ "Do not pass tokens in tool arguments — tool schemas no longer accept them."
83
87
  ),
84
88
  )
85
89
 
@@ -388,20 +388,20 @@ wheels = [
388
388
 
389
389
  [[package]]
390
390
  name = "devhelm"
391
- version = "0.7.2"
391
+ version = "1.0.0"
392
392
  source = { registry = "https://pypi.org/simple" }
393
393
  dependencies = [
394
394
  { name = "httpx" },
395
395
  { name = "pydantic", extra = ["email"] },
396
396
  ]
397
- sdist = { url = "https://files.pythonhosted.org/packages/90/5d/b853660ac8f5cfd3662f18b3608fb0c80ce8f7c246a0d66eae6806d0c212/devhelm-0.7.2.tar.gz", hash = "sha256:84e8218a42719799a2166290fcb84b7ed36c0386a41009c028a2c8abf2ff162c", size = 245192, upload-time = "2026-05-06T15:57:36.421Z" }
397
+ sdist = { url = "https://files.pythonhosted.org/packages/10/9b/df5ce6deb9726da8bd461f1151db446d6ebd0dd6e47264f9bfb498ed3f88/devhelm-1.0.0.tar.gz", hash = "sha256:32f6aff4ff483038af0ae91376435935c9d5e2eadb6fb10587b0dd33a7d9b51d", size = 245190, upload-time = "2026-05-06T19:25:29.309Z" }
398
398
  wheels = [
399
- { url = "https://files.pythonhosted.org/packages/2c/e6/74b538b202e4ff01293382af9b2951a1cc0ecdf9c5535b42f8ee919781bc/devhelm-0.7.2-py3-none-any.whl", hash = "sha256:63117a0f7722fa8aa6aa63395c4f08925299dfb9b1442bf62cd40a60f9188d94", size = 78306, upload-time = "2026-05-06T15:57:35.114Z" },
399
+ { url = "https://files.pythonhosted.org/packages/ad/ab/f76135202042ea1168892d81193294d62d1911087c25731dc46e441efdcf/devhelm-1.0.0-py3-none-any.whl", hash = "sha256:8eb4962f17fe8ee3668dc79cd405200b8294a7d4988a7380505c40aebdad0717", size = 78304, upload-time = "2026-05-06T19:25:28.133Z" },
400
400
  ]
401
401
 
402
402
  [[package]]
403
403
  name = "devhelm-mcp-server"
404
- version = "0.8.2"
404
+ version = "1.0.0"
405
405
  source = { editable = "." }
406
406
  dependencies = [
407
407
  { name = "devhelm" },
@@ -419,7 +419,7 @@ dev = [
419
419
 
420
420
  [package.metadata]
421
421
  requires-dist = [
422
- { name = "devhelm", specifier = ">=0.7.2" },
422
+ { name = "devhelm", specifier = ">=1.0.0" },
423
423
  { name = "fastmcp", specifier = ">=2.0.0" },
424
424
  ]
425
425