@uteamup/mcp-server 2.6.8-beta.9 → 2.6.10-beta.9

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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.6.10-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.6.9-beta.9...2.6.10-beta.9) (2026-11-09)
9
+
10
+
11
+ ### Tests
12
+
13
+ * cover atomic safety acknowledgement MCP contracts [skip ci] ([b29c77a](https://github.com/UteamUP/uteamup-mcp/commit/b29c77a4b95eb96e6aa1557ad5c8b62e4782fc23))
14
+ * cover Hosting permission recovery transport ([4829a31](https://github.com/UteamUP/uteamup-mcp/commit/4829a3189326fb1d41e12561776db3e2c5342be5))
15
+ * cover paged sensor MCP transport [skip ci] ([a3e0bb1](https://github.com/UteamUP/uteamup-mcp/commit/a3e0bb163f593e0a0cb5677e830c968ba8126746))
16
+ * cover protected hosting refresh proxy contracts ([89dd3e4](https://github.com/UteamUP/uteamup-mcp/commit/89dd3e49ee1bfc2b3f27a1e83c6ae59bdd7343de))
17
+ * cover protected hosting snapshot proxy contracts ([50a9fa8](https://github.com/UteamUP/uteamup-mcp/commit/50a9fa810abfb6330ded8d2f4c049e890887fc46))
18
+ * retain Hosting category comparisons through MCP ([5923ef0](https://github.com/UteamUP/uteamup-mcp/commit/5923ef0226faaa123c3a4f2b63e708bc1f22fe55))
19
+ * **tenant-lifecycle:** cover the always-free demo workspace tool ([b6bee82](https://github.com/UteamUP/uteamup-mcp/commit/b6bee82ff11ab2f8c5c054816a5b50cd9fad2ee3))
20
+
21
+ ## [2.6.9-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.6.8-beta.9...2.6.9-beta.9) (2026-11-06)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **security:** disallow UTEAMUP_INSECURE_TLS on production hosts ([32a786b](https://github.com/UteamUP/uteamup-mcp/commit/32a786b2b7ee1b99b79734c2f127271e05ef3f5f))
27
+ * **security:** honour UTEAMUP_INSECURE_TLS only for loopback hosts ([09cdc0e](https://github.com/UteamUP/uteamup-mcp/commit/09cdc0ec8c1ab834da6a6725f0e7da5648d2668e))
28
+
29
+
30
+ ### Tests
31
+
32
+ * **archive:** cover the archive and restore MCP tools of every archivable record ([db9ebfd](https://github.com/UteamUP/uteamup-mcp/commit/db9ebfd89e6ec4030a6692560d9077bf117aa184))
33
+ * cover the tenant lifecycle settings MCP tools ([1ad3964](https://github.com/UteamUP/uteamup-mcp/commit/1ad396448355cb2eeb752e00e8cb2ded75329d36))
34
+ * **inventory:** cover the archive and restore tools and asset-free bulk delete ([a4cd46d](https://github.com/UteamUP/uteamup-mcp/commit/a4cd46db50c828188c6b0b1ff5e7f70f92b21a26))
35
+
8
36
  ## [2.6.8-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.6.7-beta.9...2.6.8-beta.9) (2026-11-05)
9
37
 
10
38
 
package/lib/config.js CHANGED
@@ -3,8 +3,25 @@
3
3
  * Validates environment variables and provides type-safe configuration
4
4
  */
5
5
 
6
+ const net = require('net');
6
7
  const { z } = require('zod');
7
8
  const { normalizeBackendBaseUrl } = require('./transport-security');
9
+ const { warn } = require('./logger');
10
+
11
+ /**
12
+ * Mirrors the CLI's skipTLSVerifyFor (uteamup_cli/internal/auth/oauth.go): a
13
+ * self-signed certificate is only normal on loopback, where there is no network
14
+ * path on which to intercept the bearer token.
15
+ *
16
+ * @param {string} hostname - WHATWG URL hostname (lower-cased, IPs canonicalized)
17
+ * @returns {boolean}
18
+ */
19
+ function isLoopbackHost(hostname) {
20
+ if (hostname === 'localhost' || hostname === '[::1]') {
21
+ return true;
22
+ }
23
+ return net.isIPv4(hostname) && hostname.startsWith('127.');
24
+ }
8
25
 
9
26
  // Configuration schema
10
27
  const configSchema = z.object({
@@ -95,15 +112,17 @@ const configSchema = z.object({
95
112
 
96
113
  // UTEAMUP-SEC-2026-05-02-008: explicit opt-in to disable TLS verification
97
114
  // for self-signed dev certs. Without this flag the MCP proxy validates
98
- // TLS like any other production HTTPS client. Defense-in-depth: even when
99
- // set, the flag is ignored for the production host (api.uteamup.com).
115
+ // TLS like any other production HTTPS client. Even when set, the flag is
116
+ // honoured only for a loopback backend and ignored, with a warning, elsewhere.
100
117
  insecureTLS: z.boolean()
101
118
  .default(false)
102
- .describe('Disable TLS certificate verification (dev only — never set against api.uteamup.com)')
119
+ .describe('Disable TLS certificate verification (loopback backends only)')
103
120
  }).transform(config => {
104
- // Apply the production policy after URL parsing has canonicalized the host.
105
- const hostname = new URL(config.baseUrl).hostname.replace(/\.$/, '');
106
- if (hostname === 'api.uteamup.com') {
121
+ // Apply the policy after URL parsing has canonicalized the host.
122
+ if (config.insecureTLS && !isLoopbackHost(new URL(config.baseUrl).hostname)) {
123
+ warn('UTEAMUP_INSECURE_TLS ignored: TLS verification can only be disabled for a loopback backend', {
124
+ baseUrl: config.baseUrl
125
+ });
107
126
  config.insecureTLS = false;
108
127
  }
109
128
  return config;
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "UteamUP CMMS Read-Only Assistant Actions",
5
5
  "description": "OpenAPI 3.1.0 Action schema for ChatGPT Custom GPTs (GPT Store) and Google Gemini / Vertex AI Extensions. Invokes the UteamUP read-only MCP endpoint (/mcp/read-only) to list and search assets and work orders using the caller's tenant-scoped permissions.",
6
- "version": "2.6.8-beta.9",
6
+ "version": "2.6.10-beta.9",
7
7
  "x-logo": {
8
8
  "url": "https://raw.githubusercontent.com/UteamUP/uteamup-mcp/main/assets/logo.png",
9
9
  "altText": "UteamUP CMMS"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uteamup/mcp-server",
3
- "version": "2.6.8-beta.9",
3
+ "version": "2.6.10-beta.9",
4
4
  "mcpName": "io.github.UteamUP/mcp-server",
5
5
  "description": "MCP server client for UteamUP - enables Claude Desktop/Code integration with automatic OAuth 2.0 authentication",
6
6
  "main": "index.js",
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.UteamUP/mcp-server",
4
4
  "title": "UteamUP CMMS",
5
5
  "description": "Connect AI assistants to UteamUP CMMS for work orders, assets, maintenance, and inventory.",
6
- "version": "2.6.8-beta.9",
6
+ "version": "2.6.10-beta.9",
7
7
  "websiteUrl": "https://uteamup.com",
8
8
  "icons": [
9
9
  {
@@ -30,7 +30,7 @@
30
30
  "registryType": "npm",
31
31
  "registryBaseUrl": "https://registry.npmjs.org",
32
32
  "identifier": "@uteamup/mcp-server",
33
- "version": "2.6.8-beta.9",
33
+ "version": "2.6.10-beta.9",
34
34
  "transport": {
35
35
  "type": "stdio"
36
36
  },