Skip to content

Commit a96db2e

Browse files
authored
Merge branch 'main' into aaron/fix-loading-states
2 parents a85416f + 38f58cf commit a96db2e

64 files changed

Lines changed: 2940 additions & 431 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@hyperdx/app': patch
3+
---
4+
5+
fix: heatmap hover tooltip no longer adds scrollbars or shifts the tile; it now
6+
sits above the chart instead of inside it
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@hyperdx/api': patch
3+
'@hyperdx/common-utils': patch
4+
---
5+
6+
perf: PromQL label lookups with `match[]` read only the matched metrics' tags
7+
rows when every selector names its metric
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@hyperdx/api': patch
3+
---
4+
5+
fix: give `clickstack_save_source`'s `highlightedRowAttributeExpressions` parameter a real type in the MCP tool schema (it rendered as an untyped `$ref`), and set `annotations.title` on every MCP tool

‎.changeset/mcp-install-command.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@hyperdx/cli': minor
3+
'@hyperdx/app': patch
4+
---
5+
6+
feat: add `hdx mcp install` to connect AI agents without pasting a key
7+
8+
`npx @hyperdx/cli mcp install` asks for a personal access key or an
9+
organization API key with hidden input, checks it, and adds the ClickStack MCP
10+
server to Claude Code, Codex, Cursor, and VS Code. Team Settings now leads with
11+
this command, so the key no longer has to go into a copied command or an agent
12+
chat. The per-agent snippets remain for setting up one agent by hand.

‎.changeset/org-api-keys.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@hyperdx/api': minor
3+
'@hyperdx/app': minor
4+
'@hyperdx/common-utils': minor
5+
---
6+
7+
feat: Team members can create team-owned API keys with a description and expiry that keep working after their creator leaves.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@hyperdx/app': patch
3+
---
4+
5+
refactor: use the click-ui `Separator` instead of the Mantine `Divider` in the
6+
source form and the sources list.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@hyperdx/api': patch
3+
---
4+
5+
fix: usage stats job no longer fails ClickHouse auth on password-protected
6+
connections

‎MCP.md‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,34 @@ The MCP server uses the **Streamable HTTP** transport with Bearer token
3838
authentication. In the examples below, replace `<your-hyperdx-url>` with your
3939
instance URL (e.g. `http://localhost:8080`).
4040

41+
### Install with the CLI (recommended)
42+
43+
This asks for a personal access key or an organization API key with hidden
44+
input, checks it, and adds the server to Claude Code, Codex, Cursor and VS Code.
45+
The key stays out of your shell history and agent chats.
46+
47+
```bash
48+
npx @hyperdx/cli mcp install --app-url <your-hyperdx-url>
49+
```
50+
4151
### Claude Code
4252

53+
`read -rs` waits for you to paste the key and press Enter, without echoing it,
54+
so the key isn't saved in your shell history:
55+
4356
```bash
44-
claude mcp add --transport http clickstack <your-hyperdx-url>/api/mcp \
45-
--header "Authorization: Bearer <your-personal-access-key>"
57+
read -rs CLICKSTACK_ACCESS_KEY
58+
claude mcp add --scope user --transport http clickstack <your-hyperdx-url>/api/mcp \
59+
--header "Authorization: Bearer $CLICKSTACK_ACCESS_KEY"
4660
```
4761

4862
### Codex CLI
4963

5064
The Codex CLI reads the bearer token from an environment variable rather than a
51-
`--header` flag. Export your personal access key, then register the server with
52-
`--bearer-token-env-var`:
65+
`--header` flag, so the variable must be set wherever Codex runs:
5366

5467
```bash
55-
export CLICKSTACK_ACCESS_KEY="<your-personal-access-key>"
68+
read -rs CLICKSTACK_ACCESS_KEY && export CLICKSTACK_ACCESS_KEY
5669
codex mcp add clickstack --url <your-hyperdx-url>/api/mcp \
5770
--bearer-token-env-var CLICKSTACK_ACCESS_KEY
5871
```

‎knip.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
"ignoreDependencies": ["@stryker-mutator/core"],
3434
"ignoreBinaries": ["stryker"]
3535
},
36+
"packages/cli": {
37+
"ignoreBinaries": ["claude"]
38+
},
3639
"packages/hdx-eval": {
3740
"project": ["src/**/*.ts"],
3841
"ignoreDependencies": ["tsx"],

‎packages/api/openapi.json‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8937,6 +8937,9 @@
89378937
},
89388938
"400": {
89398939
"description": "User already exists"
8940+
},
8941+
"403": {
8942+
"description": "Org API keys can't invite people"
89408943
}
89418944
}
89428945
}
@@ -8951,7 +8954,7 @@
89518954
],
89528955
"responses": {
89538956
"200": {
8954-
"description": "Successfully retrieved invitations"
8957+
"description": "Successfully retrieved invitations. Invite links are left out for org API keys."
89558958
}
89568959
}
89578960
}
@@ -9007,7 +9010,7 @@
90079010
"description": "Successfully removed the member"
90089011
},
90099012
"400": {
9010-
"description": "Cannot remove yourself from the team"
9013+
"description": "Cannot remove yourself or the last team member"
90119014
},
90129015
"404": {
90139016
"description": "Member not found"

0 commit comments

Comments
 (0)