Skip to content

Release v1.3.0 - #30

Merged
jstirnaman merged 30 commits into
mainfrom
release/v1.3.0
May 18, 2026
Merged

Release v1.3.0#30
jstirnaman merged 30 commits into
mainfrom
release/v1.3.0

Conversation

@jstirnaman

@jstirnaman jstirnaman commented Mar 24, 2026

Copy link
Copy Markdown
Collaborator

Release v1.3.0

This is the first official release under the @influxdata scope and contains breaking changes, including the package name change to @influxdata/influxdb3-mcp-server. However, the MCP tools, resources, and prompts are unchanged.

Added

  • E2E test suite: Protocol compliance tests (vitest) — 10 tests verifying server startup, MCP handshake, tool/resource/prompt registration, and error handling. No InfluxDB required.
  • Integration tests: Live InfluxDB tests for health_check, list_databases, and execute_query, gated behind INFLUX_TEST_ENABLED
  • Error-path unit tests: 7 tests with recorded error fixtures from live Core and Cloud Serverless covering JSON, plain-text, and {code, message} error formats
  • CI workflow: GitHub Actions with protocol tests on every PR, integration tests against Core via Docker, and Cloud Serverless tests via GitHub environment secrets
  • Docker test infrastructure: docker-compose.test.yml for local Core testing with preconfigured admin token
  • Version consistency CI check: Fails if package.json, config.ts, and CHANGELOG.md versions disagree
  • CLAUDE.md: Architecture overview and codebase conventions for Claude Code
  • Claude Code skills: Build/run workflow for Core/Enterprise and testing workflow

Fixed

  • Server-level error catch now sets isError: true, consistent with handler-level error responses
  • Plain-text error responses from InfluxDB Core (HTTP 500) surfaced in all 4 services
  • Query error handler now checks data.message for Cloud Serverless {code, message} JSON errors
  • Query error handler extraction order aligned with other services (data.message before data.error)

Changed

  • npm package renamed from influxdb-mcp-server to @influxdata/influxdb3-mcp-server
  • Minimum Node.js version raised to v20.11 (Node 18 is EOL)
  • @modelcontextprotocol/sdk updated from ^1.12.1 to 1.27.1
  • All dependencies updated and pinned to exact versions (no caret ranges)
  • Version aligned to 1.3.0 across package.json, config.ts, and CHANGELOG.md

Verified against live instances

Target Tests Result
Protocol (no InfluxDB) 10 protocol + 7 error-path unit All pass
InfluxDB 3 Core (Docker) 3 happy-path + 2 error-path All pass
InfluxDB Cloud Serverless 3 happy-path All pass

PRs included

Matvey-Kuk and others added 14 commits August 15, 2025 21:46
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [axios](https://github.com/axios/axios) from 1.12.2 to 1.13.5.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.12.2...v1.13.5)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.13.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
InfluxDB v3 Core returns query errors as plain strings in the response
body rather than JSON objects with an `error` field. The error handler
was only checking `response.data.error`, so plain-text errors fell
through to the generic `statusText`, producing unhelpful "Internal
Server Error" messages.

Add a fallback to extract the message when `response.data` is a string.
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](WebReflection/flatted@v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…d-3.4.2

Bump flatted from 3.3.3 to 3.4.2
# Conflicts:
#	package-lock.json
#	package.json
…l-4.1.1

Bump js-yaml from 4.1.0 to 4.1.1
Bumps all deps to latest within existing ^ranges:
- @typescript-eslint/eslint-plugin 8.35→8.57.2
- @typescript-eslint/parser 8.35→8.57.2
- @eslint/js 9.29→9.39.4, eslint 9.29→9.39.4
- @types/node 24.0→24.12.0
- @influxdata/influxdb3-client 1.1→1.4.0
- prettier 3.5→3.8.1, typescript 5.8→5.9.3
- dotenv 16.5→16.6.1, zod 3.25.67→3.25.76
- js-yaml 4.1.0→4.1.1 (transitive via eslint)

Major version bumps (eslint 10, typescript 6, zod 4, dotenv 17,
influxdb3-client 2) deferred to a future PR.
Apply the same string fallback from PR #24 (query.service.ts) to
database-management, cloud-token-management, and serverless-schema-management
services. InfluxDB Core returns errors as plain strings in all HTTP
responses, not just queries.
Gated on influxdata org + main branch only. Uses a GitHub environment
(cloud-serverless) with scoped secrets for the API token and region
URL. Reuses the existing integration.test.ts — no new test file needed.
Also adds workflow_dispatch trigger for manual re-runs.

Requires setup: create cloud-serverless environment in repo settings
with INFLUXDB_CLOUD_URL and INFLUXDB_CLOUD_TOKEN secrets, and a
read-only mcp-ci-tests bucket in the Cloud Serverless org.
fix(query): surface plain-text error responses from InfluxDB Core
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 24, 2026 22:29 — with GitHub Actions Inactive
jstirnaman and others added 3 commits March 24, 2026 20:34
handleQueryError in query.service.ts checked data.error but not
data.message. Cloud Serverless returns {"code":"...","message":"..."},
so the specific error detail was lost to the generic statusText fallback.

Add data.message to the extraction chain, matching the pattern already
used in database-management, cloud-token-management, and
serverless-schema-management services.

Add unit tests with recorded error fixtures from live Core and Cloud
Serverless instances covering:
- Core JSON errors (404, 400) via data.error
- Core plain-text errors (500) via string fallback
- Serverless SDK HttpError via error.message
- Serverless {code,message} JSON via data.message (the fixed path)
- Integration error tests for live Core (gated)
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](WebReflection/flatted@v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…d-3.4.2

Bump flatted from 3.3.3 to 3.4.2
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 15:09 — with GitHub Actions Inactive
- Swap data.error/data.message order in handleQueryError to match
  the other 3 services (data.message first, consistent extraction)
- Replace ?? "" fallbacks with conditional env var passing in both
  integration test files, so BASE_ENV defaults are preserved when
  env vars are unset
fix: add data.message check to query error handler, add error-path tests
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 15:39 — with GitHub Actions Inactive
Add Archestra MCP Trust Score badge to README
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 15:50 — with GitHub Actions Inactive
@jstirnaman jstirnaman changed the title fix: surface plain-text error responses, add Cloud Serverless CI Release v1.3.0 Mar 26, 2026
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 15:53 — with GitHub Actions Inactive
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 15:58 — with GitHub Actions Inactive
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 17:48 — with GitHub Actions Inactive
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 18:03 — with GitHub Actions Inactive
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless March 26, 2026 18:09 — with GitHub Actions Inactive
Resolve conflicts in package.json and package-lock.json:
- Keep PR's exact-pinning strategy (no caret ranges)
- Adopt axios 1.15.2 from main (newer than PR's 1.13.6)
- Regenerate package-lock.json — 0 vulnerabilities
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless May 18, 2026 16:05 — with GitHub Actions Inactive
@jstirnaman

Copy link
Copy Markdown
Collaborator Author

Conflict resolution + release prep

Merged origin/main (28 commits, mostly dependabot bumps) into release/v1.3.0.

Conflicts resolved

  • package.json: kept PR's exact-pinning strategy (no caret ranges), adopted axios@1.15.2 from main (newer than PR's 1.13.6). Other deps already newer in PR.
  • package-lock.json: regenerated from resolved package.json.

Verification

Check Result
npm install clean, 0 vulnerabilities
npm run build passes
npm test (protocol + unit) 17 passed, 5 skipped
npm run lint passes
Version consistency (package.json / config.ts / CHANGELOG.md) all 1.3.0

Also updated

  • CHANGELOG release date → 2026-05-18 (today) to reflect the actual ship day.

PR is now MERGEABLE. Ready for final review and merge.

@jstirnaman
jstirnaman temporarily deployed to cloud-serverless May 18, 2026 16:15 — with GitHub Actions Inactive
- [P1] Add publishConfig.access=public so the scoped @influxdata/*
  package publishes publicly on first npm publish.
- [P2] Skip cloud-serverless integration job for forked PRs — fork
  runs cannot access environment secrets and would otherwise fail
  on empty credentials.
@jstirnaman
jstirnaman temporarily deployed to cloud-serverless May 18, 2026 16:22 — with GitHub Actions Inactive
@jstirnaman

Copy link
Copy Markdown
Collaborator Author

Review findings addressed

Severity Finding Resolution
P1 Scoped package missing public publish config Added "publishConfig": { "access": "public" } to package.json. First npm publish will now publish publicly without needing --access public.
P2 Cloud-serverless job runs on forked PRs without secrets Tightened if: to also require github.event.pull_request.head.repo.full_name == github.repository (or push). Fork PRs no longer trigger the job.

Tests still green (17 passed, 5 skipped without live cloud creds).

Commit: 8ea77c0

@jstirnaman
jstirnaman temporarily deployed to cloud-serverless May 18, 2026 16:31 — with GitHub Actions Inactive
@jstirnaman
jstirnaman merged commit bd0097d into main May 18, 2026
4 checks passed
@jstirnaman
jstirnaman deleted the release/v1.3.0 branch May 18, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants