@uteamup/mcp-server 2.3.0-beta.9 → 2.4.0-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,45 @@ 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.4.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.3.0-beta.9...2.4.0-beta.9) (2026-10-21)
9
+
10
+
11
+ ### Features
12
+
13
+ * package OpenAI marketplace integration with UteamUP branding ([026ad6f](https://github.com/UteamUP/uteamup-mcp/commit/026ad6f207e007f0085aecc73162d3ded97dc9ad))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **auth:** bind the proxy's OAuth token to the MCP endpoint ([a5b0f4a](https://github.com/UteamUP/uteamup-mcp/commit/a5b0f4a116579098dc60f67861d14eb1d3fdbfd8))
19
+ * avoid redundant Claude documentation asset review ([5818f0e](https://github.com/UteamUP/uteamup-mcp/commit/5818f0e86c93fed7b703f5775f3a053f83ed595f))
20
+ * complete Claude listing links and data handling disclosures ([e3b2b78](https://github.com/UteamUP/uteamup-mcp/commit/e3b2b789def1f8067b0a1f35644d984a43572996))
21
+ * correct Glama maintainer identity ([dc9f5a5](https://github.com/UteamUP/uteamup-mcp/commit/dc9f5a57ad01d5f3ca2736f5c9493e40cb195191))
22
+ * correct Grok marketplace contact ([48cad67](https://github.com/UteamUP/uteamup-mcp/commit/48cad677694d10260501613f2bd2a61d807fcd23))
23
+ * package Claude plugin with locked dependencies and explicit configuration ([92a2e40](https://github.com/UteamUP/uteamup-mcp/commit/92a2e405acf395553826e0c7b08913a9aed4b1a9))
24
+ * prepare MCP manifests for marketplace validation ([1b555a6](https://github.com/UteamUP/uteamup-mcp/commit/1b555a66cd8ae9fe390cf127ce349499d2f3ded9))
25
+ * update fast-copy to patched version ([0fd7cd8](https://github.com/UteamUP/uteamup-mcp/commit/0fd7cd8ece27446bbb5a118da5b981094d2010a9))
26
+ * update release workflow conditions and add test for MCP registry publication ([44180fd](https://github.com/UteamUP/uteamup-mcp/commit/44180fd7f859340f6752dd1b07119d45df0703ad))
27
+ * use UteamUP publisher contact for Claude submissions ([acd457f](https://github.com/UteamUP/uteamup-mcp/commit/acd457f7a2a114a77f2b55a63b2eaf7be019078d))
28
+
29
+
30
+ ### Documentation
31
+
32
+ * correct Claude troubleshooting and read-only access guidance ([aba9dfe](https://github.com/UteamUP/uteamup-mcp/commit/aba9dfebbb98dd5dc877fc26eba9df201278d0df))
33
+ * correct marketplace setup links and production connection guidance ([91c4945](https://github.com/UteamUP/uteamup-mcp/commit/91c4945f561f3c26da8dd3f0da5c4be7883cbe94))
34
+
35
+
36
+ ### Tests
37
+
38
+ * cover floorplan scan draft tools ([f251595](https://github.com/UteamUP/uteamup-mcp/commit/f251595c54d35320e8ef9c3cd42f3139f831666f))
39
+ * **model3d:** cover the 3D model and scene items MCP tools ([5ef7c9e](https://github.com/UteamUP/uteamup-mcp/commit/5ef7c9ec8ae58ec3d5e980b9b59d063935366eed))
40
+ * **model3d:** cover the uteamup_model3d_catalogue_* tools ([2d7eb15](https://github.com/UteamUP/uteamup-mcp/commit/2d7eb153eb38430b6c5de7300b7cd9e3b14392d7))
41
+
42
+
43
+ ### CI/CD
44
+
45
+ * publish @uteamup/mcp-server to npm on every release ([85cf397](https://github.com/UteamUP/uteamup-mcp/commit/85cf39706266f54aacdc3e8e5a9869b66080cbf8))
46
+
8
47
  ## [2.3.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.2.0-beta.9...2.3.0-beta.9) (2026-10-19)
9
48
 
10
49
 
package/README.md CHANGED
@@ -13,22 +13,21 @@
13
13
  ## Links
14
14
 
15
15
  - **📦 [npm Package](https://www.npmjs.com/package/@uteamup/mcp-server)** - Install with `npx -y @uteamup/mcp-server`
16
- - **📖 [Documentation](https://docs.uteamup.com/mcp)** - Full MCP integration guide
17
- - **🐛 [Issues](https://github.com/uteamup/mcp-server/issues)** - Report bugs and request features
18
- - **💬 [Support](mailto:support@uteamup.com)** - Get help
16
+ - **📖 [Documentation](https://github.com/UteamUP/uteamup-mcp#readme)** - Full MCP integration guide
17
+ - **🐛 [Issues](https://github.com/UteamUP/uteamup-mcp/issues)** - Report bugs and request features
18
+ - **💬 [Support](mailto:gisli@uteamup.com)** - Get help
19
19
 
20
20
  ## What is this?
21
21
 
22
22
  This package enables AI assistants like Claude Desktop and Claude Code to connect to your UteamUP CMMS system using the Model Context Protocol (MCP). It handles OAuth 2.0 authentication automatically, so you can manage work orders, assets, inventory, and more through natural conversation.
23
23
 
24
- ### Read-only access for Grok, Grok Bot and ChatGPT
24
+ ### Read-only access for Claude, Grok, Grok Bot and ChatGPT
25
25
 
26
- Use the environment-specific HTTPS endpoint:
26
+ Use the production HTTPS endpoint:
27
27
 
28
28
  | Environment | MCP server URL |
29
29
  |---|---|
30
30
  | Production | `https://api.uteamup.com/mcp/read-only` |
31
- | Development | `https://devback.uteamup.com/mcp/read-only` |
32
31
 
33
32
  **Sign in with your UteamUP account (recommended).** A tenant administrator (`Tenant.Update`)
34
33
  first turns on **Allow members to connect AI assistants** in the company's **API Keys** tab.
@@ -42,6 +41,8 @@ Then each member connects their own assistant; no API key or secret is involved:
42
41
  Setup → Plugins card; each teammate signs in the first time they use it.
43
42
  - **ChatGPT:** add a custom MCP server with the endpoint and choose OAuth; ChatGPT registers
44
43
  itself and you approve on the same consent page.
44
+ - **Claude:** add a custom connector with the endpoint, choose **Sign in now** and
45
+ **Register automatically**, then approve on the UteamUP consent page.
45
46
 
46
47
  The assistant uses the member's own permissions in the chosen company, and only the read
47
48
  tools below. Access tokens last 60 minutes and refresh tokens rotate on every use. A member
@@ -75,11 +76,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
75
76
 
76
77
  **Key Features:**
77
78
  - ✅ Automatic OAuth 2.0 + PKCE authentication
78
- - ✅ Token caching (7-day expiration, auto-refresh)
79
+ - ✅ Token caching with automatic refresh
79
80
  - ✅ Works with Claude Desktop, Claude Code, and any MCP-compatible client
80
81
  - ✅ Zero configuration - just provide API credentials
81
82
  - ✅ Comprehensive error messages
82
- - ✅ Development mode support (self-signed certificates)
83
83
  - ✅ Server-Sent Events (SSE) response parsing
84
84
  - ✅ Proper JSON-RPC 2.0 notification handling
85
85
  - ✅ **NEW:** Structured logging with Pino (JSON/text formats)
@@ -87,9 +87,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
87
87
  - ✅ **NEW:** Performance monitoring and metrics
88
88
  - ✅ **NEW:** Retry logic with exponential backoff
89
89
  - ✅ **NEW:** CLI utilities (--help, --version, --validate-config, --test-auth)
90
- - ✅ **NEW:** Comprehensive test suite (70 tests)
90
+ - ✅ Comprehensive test suite
91
91
 
92
- **Current Status:** `v1.0.0-beta.7` - Production-ready with enhanced debugging! See [CHANGELOG.md](CHANGELOG.md) for details.
92
+ **Release status:** Beta. The npm badge above shows the published version;
93
+ see [CHANGELOG.md](CHANGELOG.md) for release details.
93
94
 
94
95
  **Example Conversation:**
95
96
  ```
@@ -147,8 +148,11 @@ npm install -g @uteamup/mcp-server
147
148
 
148
149
  ### 2. Configure Claude Desktop
149
150
 
150
- **macOS/Linux:** Edit `~/.config/claude/mcp.json`
151
- **Windows:** Edit `%APPDATA%\Claude\mcp.json`
151
+ In Claude Desktop, open **Settings → Developer → Edit Config**.
152
+ The configuration file is located at:
153
+
154
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
155
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
152
156
 
153
157
  Add this configuration:
154
158
 
@@ -167,22 +171,8 @@ Add this configuration:
167
171
  }
168
172
  ```
169
173
 
170
- **Optional:** For development/testing against a local backend:
171
- ```json
172
- {
173
- "mcpServers": {
174
- "uteamup-dev": {
175
- "command": "npx",
176
- "args": ["-y", "@uteamup/mcp-server"],
177
- "env": {
178
- "UTEAMUP_API_KEY": "your-api-key",
179
- "UTEAMUP_SECRET": "your-secret",
180
- "UTEAMUP_API_BASE_URL": "https://devback.uteamup.com"
181
- }
182
- }
183
- }
184
- }
185
- ```
174
+ All UteamUP MCP connections use `https://api.uteamup.com`. Use a restricted key
175
+ from a demo workspace when validating an integration.
186
176
 
187
177
  ### 3. Restart Claude Desktop
188
178
 
@@ -227,16 +217,14 @@ That's it! 🎉
227
217
  | `UTEAMUP_TOKEN_CACHE_DIR` | Persistent token cache directory | - |
228
218
  | `UTEAMUP_TOKEN_REFRESH_MARGIN` | Token refresh margin in seconds | `300` |
229
219
 
230
- ### API Base URLs
220
+ ### API Base URL
231
221
 
232
222
  The configured base URL must be a bare HTTPS origin. Credentials, paths, query
233
223
  parameters, fragments, and plain HTTP endpoints are rejected.
234
224
 
235
- | Environment | URL | When to Use |
236
- |-------------|-----|-------------|
237
- | **Production** | `https://api.uteamup.com` | Default - for normal use |
238
- | **Development** | `https://devback.uteamup.com` | Testing against dev backend |
239
- | **Local** | `https://localhost:5002` | Local development with self-signed cert |
225
+ Always use `https://api.uteamup.com`, including when running the Node proxy
226
+ locally. The full MCP endpoint is `/mcp`; the read-only endpoint is
227
+ `/mcp/read-only`.
240
228
 
241
229
  ### Permissions
242
230
 
@@ -260,7 +248,7 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
260
248
  **Cause:** `UTEAMUP_API_KEY` or `UTEAMUP_SECRET` not set in MCP configuration.
261
249
 
262
250
  **Solution:**
263
- 1. Check your MCP configuration file (`~/.config/claude/mcp.json` or `%APPDATA%\Claude\mcp.json`)
251
+ 1. Check your Claude Desktop configuration file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows)
264
252
  2. Verify the `env` section includes both `UTEAMUP_API_KEY` and `UTEAMUP_SECRET`
265
253
  3. Ensure there are no typos in the environment variable names
266
254
  4. Restart Claude Desktop after making changes
@@ -309,36 +297,32 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
309
297
  1. **Check your internet connection**
310
298
  2. **Verify the base URL:**
311
299
  - Production: `https://api.uteamup.com` (default, no env var needed)
312
- - Development: Set `UTEAMUP_API_BASE_URL=https://devback.uteamup.com`
313
300
  3. **Check if UteamUP is down:**
314
- - Contact support@uteamup.com
315
- 4. **For local development:**
316
- - Ensure backend is running: `cd UteamUP_Backend/UteamUP_API && make watch`
317
- - Use `UTEAMUP_API_BASE_URL=https://localhost:5002`
301
+ - Contact gisli@uteamup.com
318
302
 
319
303
  ---
320
304
 
321
305
  #### "UNABLE_TO_VERIFY_LEAF_SIGNATURE" or certificate errors
322
306
 
323
- **Cause:** Self-signed certificate (development mode).
307
+ **Cause:** The connection cannot validate the server's TLS certificate.
324
308
 
325
- **Solution:** This package automatically accepts self-signed certificates for development. If you're seeing this error:
326
- 1. Verify `UTEAMUP_API_BASE_URL` is set correctly
327
- 2. If using local backend, ensure it's running on HTTPS
328
- 3. For production, this should never happen - contact support
309
+ **Solution:**
310
+ 1. Verify the API base URL is `https://api.uteamup.com`
311
+ 2. Check the device's date and trusted certificate configuration
312
+ 3. Contact gisli@uteamup.com if the certificate error persists
329
313
 
330
314
  ---
331
315
 
332
316
  #### Tools list is empty or incomplete
333
317
 
334
- **Cause:** API key role has limited permissions.
318
+ **Cause:** The credential, role, or company configuration does not grant the requested tools.
335
319
 
336
320
  **Solution:**
337
321
  1. Go to **Tenant Settings** → **API Keys** in UteamUP
338
- 2. Edit your API key
339
- 3. Change the role to one with more permissions (e.g., Admin or Supervisor)
340
- 4. Available tools depend on your role's permissions
341
- 5. Changes take effect immediately
322
+ 2. Confirm the key is active and MCP-enabled for the intended company
323
+ 3. Ask a company administrator to check the specific read permissions needed for your workflow
324
+ 4. For the remote read-only connector, use a restricted read-only role; write or wildcard grants are not eligible
325
+ 5. Reconnect the client to refresh its tool list after an authorized permission change
342
326
 
343
327
  ---
344
328
 
@@ -402,9 +386,9 @@ Enable different log levels and formats:
402
386
  ```
403
387
 
404
388
  4. **Get help:**
405
- - Email: support@uteamup.com
406
- - Documentation: https://docs.uteamup.com/mcp
407
- - GitHub Issues: https://github.com/uteamup/mcp-server/issues
389
+ - Email: gisli@uteamup.com
390
+ - Documentation: https://github.com/UteamUP/uteamup-mcp#readme
391
+ - GitHub Issues: https://github.com/UteamUP/uteamup-mcp/issues
408
392
 
409
393
  ---
410
394
 
@@ -414,20 +398,20 @@ Enable different log levels and formats:
414
398
 
415
399
  ```bash
416
400
  # Clone the repository
417
- git clone https://github.com/UteamUP/uteamup-mcp-proxy.git
418
- cd uteamup-mcp-proxy
401
+ git clone https://github.com/UteamUP/uteamup-mcp.git
402
+ cd uteamup-mcp
419
403
 
420
404
  # Install dependencies
421
405
  npm install
422
406
 
423
- # Run tests
424
- npm test
407
+ # Run tests only at the final whole-goal gate (see MCPGuidelines.md)
408
+ UTEAMUP_FINAL_GOAL_GATE=1 npm test
425
409
 
426
410
  # Test with debug logging
427
411
  export UTEAMUP_LOG_LEVEL=DEBUG
428
- export UTEAMUP_API_KEY="your-dev-key"
429
- export UTEAMUP_SECRET="your-dev-secret"
430
- export UTEAMUP_API_BASE_URL="https://localhost:5002"
412
+ export UTEAMUP_API_KEY="your-demo-workspace-key"
413
+ export UTEAMUP_SECRET="your-demo-workspace-secret"
414
+ export UTEAMUP_API_BASE_URL="https://api.uteamup.com"
431
415
  node index.js
432
416
 
433
417
  # CLI Utilities
@@ -451,7 +435,7 @@ npm link
451
435
  "mcpServers": {
452
436
  "uteamup-local": {
453
437
  "command": "node",
454
- "args": ["/absolute/path/to/uteamup-mcp-proxy/index.js"],
438
+ "args": ["/absolute/path/to/uteamup-mcp/index.js"],
455
439
  "env": {
456
440
  "UTEAMUP_API_KEY": "your-key",
457
441
  "UTEAMUP_SECRET": "your-secret",
@@ -465,7 +449,7 @@ npm link
465
449
  ### Project Structure
466
450
 
467
451
  ```
468
- uteamup-mcp-proxy/
452
+ uteamup-mcp/
469
453
  ├── index.js # Main entry point (OAuth + MCP client)
470
454
  ├── package.json # Package metadata
471
455
  ├── README.md # This file
@@ -550,9 +534,9 @@ See [LICENSE](LICENSE) for details.
550
534
 
551
535
  ## Support
552
536
 
553
- - **Documentation:** https://docs.uteamup.com/mcp
554
- - **Email:** support@uteamup.com
555
- - **Issues:** https://github.com/uteamup/mcp-server/issues
537
+ - **Documentation:** https://github.com/UteamUP/uteamup-mcp#readme
538
+ - **Email:** gisli@uteamup.com
539
+ - **Issues:** https://github.com/UteamUP/uteamup-mcp/issues
556
540
 
557
541
  ---
558
542
 
package/index.js CHANGED
@@ -280,14 +280,16 @@ async function requestNewAccessToken() {
280
280
 
281
281
  info('Authorization code received');
282
282
 
283
- // Step 2: Exchange for access token with retry
283
+ // Step 2: Exchange for access token with retry. Naming the MCP endpoint as the resource
284
+ // (RFC 8707) gets a token the backend accepts only there, never on its REST API.
284
285
  const tokenData = new URLSearchParams({
285
286
  grant_type: 'authorization_code',
286
287
  code: authCode,
287
288
  redirect_uri: OAUTH_REDIRECT_URI,
288
289
  client_id: config.apiKey,
289
290
  client_secret: config.secret,
290
- code_verifier: verifier
291
+ code_verifier: verifier,
292
+ resource: new URL(config.mcpPath, config.baseUrl).href
291
293
  }).toString();
292
294
 
293
295
  const tokenResponse = await retryWithBackoff(
@@ -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.3.0-beta.9",
6
+ "version": "2.4.0-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.3.0-beta.9",
3
+ "version": "2.4.0-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",
@@ -30,7 +30,7 @@
30
30
  "work-orders",
31
31
  "asset-management"
32
32
  ],
33
- "author": "UteamUP <support@uteamup.com>",
33
+ "author": "UteamUP <gisli@uteamup.com>",
34
34
  "license": "MIT",
35
35
  "repository": {
36
36
  "type": "git",
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.3.0-beta.9",
6
+ "version": "2.4.0-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.3.0-beta.9",
33
+ "version": "2.4.0-beta.9",
34
34
  "transport": {
35
35
  "type": "stdio"
36
36
  },