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.
- devhelm_mcp_server-1.0.0/CHANGELOG.md +120 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/PKG-INFO +2 -2
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/pyproject.toml +9 -6
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/server.py +6 -2
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/uv.lock +5 -5
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/ci.yml +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/release.yml +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.github/workflows/spec-check.yml +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/.gitignore +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/LICENSE +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/Makefile +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/README.md +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/docker/Dockerfile +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/docs/openapi/monitoring-api.json +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/scripts/regen-from.sh +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/scripts/release.sh +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/__init__.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/client.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/__init__.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/alert_channels.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/api_keys.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/dependencies.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/deploy_lock.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/environments.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/forensics.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/incidents.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/maintenance_windows.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/monitors.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/notification_policies.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/resource_groups.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/secrets.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/status.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/status_pages.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/tags.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/webhooks.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/__init__.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/run_mcp.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_auth.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_cli.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_client.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_devex_round3_fixes.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_maintenance_windows.py +0 -0
- {devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/tests/test_tools.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
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.
|
|
82
|
-
"
|
|
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.
|
|
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/
|
|
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/
|
|
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.
|
|
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.
|
|
422
|
+
{ name = "devhelm", specifier = ">=1.0.0" },
|
|
423
423
|
{ name = "fastmcp", specifier = ">=2.0.0" },
|
|
424
424
|
]
|
|
425
425
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/alert_channels.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/maintenance_windows.py
RENAMED
|
File without changes
|
|
File without changes
|
{devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/notification_policies.py
RENAMED
|
File without changes
|
{devhelm_mcp_server-0.8.2 → devhelm_mcp_server-1.0.0}/src/devhelm_mcp/tools/resource_groups.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|